@@ -1041,10 +1041,13 @@ void vk_memory_logger::log_deallocation(vk_buffer_ref buf_ref) {
1041
1041
struct vk_instance_t {
1042
1042
vk::Instance instance;
1043
1043
1044
- #ifdef GGML_VULKAN_DEBUG_UTILS
1045
1044
bool debug_utils_support = false; // VK_EXT_debug_utils enabled
1046
- PFN_vkSetDebugUtilsObjectNameEXT pfnSetDebugUtilsObjectNameEXT = {};
1047
- #endif
1045
+ PFN_vkSetDebugUtilsObjectNameEXT pfn_vkSetDebugUtilsObjectNameEXT = {};
1046
+ PFN_vkQueueBeginDebugUtilsLabelEXT pfn_vkQueueBeginDebugUtilsLabelEXT = {};
1047
+ PFN_vkQueueEndDebugUtilsLabelEXT pfn_vkQueueEndDebugUtilsLabelEXT = {};
1048
+ PFN_vkCmdBeginDebugUtilsLabelEXT pfn_vkCmdBeginDebugUtilsLabelEXT = {};
1049
+ PFN_vkCmdEndDebugUtilsLabelEXT pfn_vkCmdEndDebugUtilsLabelEXT = {};
1050
+ PFN_vkCmdInsertDebugUtilsLabelEXT pfn_vkCmdInsertDebugUtilsLabelEXT = {};
1048
1051
1049
1052
std::vector<size_t> device_indices;
1050
1053
vk_device devices[GGML_VK_MAX_DEVICES];
@@ -1185,15 +1188,13 @@ static void ggml_vk_create_pipeline_func(vk_device& device, vk_pipeline& pipelin
1185
1188
}
1186
1189
pipeline->compiled = true;
1187
1190
1188
- #ifdef GGML_VULKAN_DEBUG_UTILS
1189
1191
if (vk_instance.debug_utils_support) {
1190
1192
vk::DebugUtilsObjectNameInfoEXT duoni;
1191
1193
duoni.objectType = vk::ObjectType::ePipeline;
1192
1194
duoni.pObjectName = pipeline->name.c_str();
1193
- duoni.objectHandle = reinterpret_cast<uint64_t>(pipeline->pipeline.operator VkPipeline_T *( ));
1194
- vk_instance.pfnSetDebugUtilsObjectNameEXT (device->device, &static_cast<VkDebugUtilsObjectNameInfoEXT &>(duoni));
1195
+ duoni.objectHandle = reinterpret_cast<uint64_t>(static_cast<VkPipeline_T*>( pipeline->pipeline));
1196
+ vk_instance.pfn_vkSetDebugUtilsObjectNameEXT (device->device, &static_cast<VkDebugUtilsObjectNameInfoEXT &>(duoni));
1195
1197
}
1196
- #endif
1197
1198
1198
1199
{
1199
1200
std::lock_guard<std::mutex> guard(device->mutex);
@@ -3576,9 +3577,7 @@ static void ggml_vk_print_gpu_info(size_t idx) {
3576
3577
static bool ggml_vk_instance_validation_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions);
3577
3578
static bool ggml_vk_instance_portability_enumeration_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions);
3578
3579
3579
- #ifdef GGML_VULKAN_DEBUG_UTILS
3580
3580
static bool ggml_vk_instance_debug_utils_ext_available(const std::vector<vk::ExtensionProperties> & instance_extensions);
3581
- #endif
3582
3581
3583
3582
static void ggml_vk_instance_init() {
3584
3583
if (vk_instance_initialized) {
@@ -3600,9 +3599,7 @@ static void ggml_vk_instance_init() {
3600
3599
#ifdef __APPLE__
3601
3600
const bool portability_enumeration_ext = ggml_vk_instance_portability_enumeration_ext_available(instance_extensions);
3602
3601
#endif
3603
- #ifdef GGML_VULKAN_DEBUG_UTILS
3604
- const bool debug_utils_ext = ggml_vk_instance_debug_utils_ext_available(instance_extensions);
3605
- #endif
3602
+ const bool debug_utils_ext = ggml_vk_instance_debug_utils_ext_available(instance_extensions) && getenv("GGML_VK_DEBUG_MARKERS") != nullptr;
3606
3603
std::vector<const char*> layers;
3607
3604
3608
3605
if (validation_ext) {
@@ -3617,11 +3614,9 @@ static void ggml_vk_instance_init() {
3617
3614
extensions.push_back("VK_KHR_portability_enumeration");
3618
3615
}
3619
3616
#endif
3620
- #ifdef GGML_VULKAN_DEBUG_UTILS
3621
3617
if (debug_utils_ext) {
3622
3618
extensions.push_back("VK_EXT_debug_utils");
3623
3619
}
3624
- #endif
3625
3620
vk::InstanceCreateInfo instance_create_info(vk::InstanceCreateFlags{}, &app_info, layers, extensions);
3626
3621
#ifdef __APPLE__
3627
3622
if (portability_enumeration_ext) {
@@ -3645,12 +3640,16 @@ static void ggml_vk_instance_init() {
3645
3640
vk_instance.instance = vk::createInstance(instance_create_info);
3646
3641
vk_instance_initialized = true;
3647
3642
3648
- #ifdef GGML_VULKAN_DEBUG_UTILS
3649
3643
if (debug_utils_ext) {
3650
- vk_instance.pfnSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT) vkGetInstanceProcAddr(vk_instance.instance, "vkSetDebugUtilsObjectNameEXT");
3651
- vk_instance.debug_utils_support = vk_instance.pfnSetDebugUtilsObjectNameEXT != nullptr;
3644
+ vk_instance.debug_utils_support = true;
3645
+ vk_instance.pfn_vkSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT) vkGetInstanceProcAddr(vk_instance.instance, "vkSetDebugUtilsObjectNameEXT");
3646
+ vk_instance.pfn_vkQueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT) vkGetInstanceProcAddr(vk_instance.instance, "vkQueueBeginDebugUtilsLabelEXT");
3647
+ vk_instance.pfn_vkQueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT) vkGetInstanceProcAddr(vk_instance.instance, "vkQueueEndDebugUtilsLabelEXT");
3648
+ vk_instance.pfn_vkCmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT) vkGetInstanceProcAddr(vk_instance.instance, "vkCmdBeginDebugUtilsLabelEXT");
3649
+ vk_instance.pfn_vkCmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT) vkGetInstanceProcAddr(vk_instance.instance, "vkCmdEndDebugUtilsLabelEXT");
3650
+ vk_instance.pfn_vkCmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT) vkGetInstanceProcAddr(vk_instance.instance, "vkCmdInsertDebugUtilsLabelEXT");
3651
+
3652
3652
}
3653
- #endif
3654
3653
3655
3654
size_t num_available_devices = vk_instance.instance.enumeratePhysicalDevices().size();
3656
3655
vk_perf_logger_enabled = getenv("GGML_VK_PERF_LOGGER") != nullptr;
@@ -9684,6 +9683,13 @@ static ggml_status ggml_backend_vk_graph_compute(ggml_backend_t backend, ggml_cg
9684
9683
VK_LOG_DEBUG("ggml_backend_vk_graph_compute(" << cgraph->n_nodes << " nodes)");
9685
9684
ggml_backend_vk_context * ctx = (ggml_backend_vk_context *)backend->context;
9686
9685
9686
+ if (vk_instance.debug_utils_support) {
9687
+ vk::DebugUtilsLabelEXT dul = {};
9688
+ dul.pLabelName = "ggml_backend_vk_graph_compute";
9689
+ dul.color = std::array<float,4>{1.0f, 1.0f, 1.0f, 1.0f};
9690
+ vk_instance.pfn_vkQueueBeginDebugUtilsLabelEXT(ctx->device->compute_queue.queue, reinterpret_cast<VkDebugUtilsLabelEXT*>(&dul));
9691
+ }
9692
+
9687
9693
uint64_t total_mat_mul_bytes = 0;
9688
9694
for (int i = 0; i < cgraph->n_nodes; i++) {
9689
9695
ggml_vk_build_graph(ctx, cgraph->nodes[i], i, nullptr, 0, true, false, false, false);
@@ -10373,7 +10379,6 @@ static bool ggml_vk_instance_portability_enumeration_ext_available(const std::ve
10373
10379
UNUSED(instance_extensions);
10374
10380
}
10375
10381
10376
- #ifdef GGML_VULKAN_DEBUG_UTILS
10377
10382
// Extension availability
10378
10383
static bool ggml_vk_instance_debug_utils_ext_available(
10379
10384
const std::vector<vk::ExtensionProperties> & instance_extensions) {
@@ -10389,7 +10394,6 @@ static bool ggml_vk_instance_debug_utils_ext_available(
10389
10394
10390
10395
UNUSED(instance_extensions);
10391
10396
}
10392
- #endif
10393
10397
10394
10398
static bool ggml_vk_khr_cooperative_matrix_support(const vk::PhysicalDeviceProperties& props, const vk::PhysicalDeviceDriverProperties& driver_props, vk_device_architecture arch) {
10395
10399
switch (props.vendorID) {
0 commit comments