b10078
vulkan: Refactor vk_queue to use per-instance mutexes and unique handles (#23570)
-
Refactor vk_queue to use per-instance mutexes and unique handles
-
integrates VK_KHR_internally_synchronized_queues, abstracting the queue submission into a polymorphic interface that completely bypasses host-side mutex locking when driver-side synchronization is supported
-
fix compilation error
-
fix duplicate pNext chain for VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR
-
add fallback defines for VK_KHR_internally_synchronized_queues
-
add null checks for queues in vk_device_struct destructor
-
use unique_ptr for outer queues to enforce exclusive ownership and optimize lifetime
-
use static constexpr for eInternallySynchronizedKHR
-
add lock guard to ggml_vk_create_aliased_queue for thread safety
-
initialize sync_query_features.internallySynchronizedQueues to VK_FALSE
-
reuse sync_query_features for internallySynchronizedQueues and simplify chaining
-
refactor internallySynchronizedQueues detection
-
fix internallySynchronizedQueues query guard
-
use eInternallySynchronizedKHR constant
-
fix self-referential alias for eInternallySynchronizedKHR
-
use macro for eInternallySynchronizedKHR fallback
-
fix internallySynchronizedQueues query timing in ggml-vulkan.cpp to prevent device creation mismatch
-
reset sync_query_features.pNext before reusing in device creation chain, also removed the redundant second probe call
-
refactor internally synchronized queues detection to use chained feature query and avoid redundant API calls
-
Update ggml/src/ggml-vulkan/ggml-vulkan.cpp
Co-authored-by: Jeff Bolz jbolz@nvidia.com
- Update ggml/src/ggml-vulkan/ggml-vulkan.cpp
Co-authored-by: Jeff Bolz jbolz@nvidia.com
- Update ggml/src/ggml-vulkan/ggml-vulkan.cpp
Co-authored-by: Jeff Bolz jbolz@nvidia.com
- Update ggml/src/ggml-vulkan/ggml-vulkan.cpp
Co-authored-by: Jeff Bolz jbolz@nvidia.com
- Update ggml/src/ggml-vulkan/ggml-vulkan.cpp
Co-authored-by: Jeff Bolz jbolz@nvidia.com
- Update ggml/src/ggml-vulkan/ggml-vulkan.cpp
Co-authored-by: Jeff Bolz jbolz@nvidia.com
-
rename sync_enable_features to internally_synchronized_queues_features
-
queue_flags is still computed before has_internally_synchronized_queues is set
-
fix trailing whitespace
-
replace eInternallySynchronizedKHR macro with static constexpr
-
preserve source queue semantics in single-queue aliased transfer queue
-
vulkan: fix cmd_pool access via pointer for compute_queue unique_ptr
-
vulkan: lock queue during debug label emission when not internally synchronized
Co-authored-by: Jeff Bolz jbolz@nvidia.com
Website:
macOS/iOS:
- macOS Apple Silicon (arm64)
- macOS Apple Silicon (arm64, KleidiAI enabled) DISABLED
- macOS Intel (x64)
- iOS XCFramework
Linux:
- Ubuntu x64 (CPU)
- Ubuntu arm64 (CPU)
- Ubuntu s390x (CPU)
- Ubuntu x64 (Vulkan)
- Ubuntu arm64 (Vulkan)
- Ubuntu x64 (ROCm 7.2)
- Ubuntu x64 (OpenVINO)
- Ubuntu x64 (SYCL FP32)
- Ubuntu x64 (SYCL FP16)
Android:
Windows:
- Windows x64 (CPU)
- Windows arm64 (CPU)
- Windows arm64 (OpenCL Adreno)
- Windows x64 (CUDA 12) - CUDA 12.4 DLLs
- Windows x64 (CUDA 13) - CUDA 13.3 DLLs
- Windows x64 (Vulkan)
- Windows x64 (OpenVINO)
- Windows x64 (SYCL)
- Windows x64 (HIP)
openEuler:
- DISABLED
- openEuler x86 (310p)
- openEuler x86 (910b, ACL Graph)
- openEuler aarch64 (310p)
- openEuler aarch64 (910b, ACL Graph)
UI: