Skip to content

Commit e4d1a82

Browse files
committed
remove #ifdef for debug utils and add queue marker.
1 parent e235094 commit e4d1a82

File tree

2 files changed

+28
-19
lines changed

2 files changed

+28
-19
lines changed

ggml/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,6 @@ option(GGML_VULKAN_DEBUG "ggml: enable Vulkan debug output"
177177
option(GGML_VULKAN_MEMORY_DEBUG "ggml: enable Vulkan memory debug output" OFF)
178178
option(GGML_VULKAN_SHADER_DEBUG_INFO "ggml: enable Vulkan shader debug info" OFF)
179179
option(GGML_VULKAN_PERF "ggml: enable Vulkan perf output" OFF)
180-
option(GGML_VULKAN_DEBUG_UTILS "ggml: VK_EXT_debug_utils debug information" OFF)
181180
option(GGML_VULKAN_VALIDATE "ggml: enable Vulkan validation" OFF)
182181
option(GGML_VULKAN_RUN_TESTS "ggml: run Vulkan tests" OFF)
183182
option(GGML_KOMPUTE "ggml: use Kompute" OFF)

ggml/src/ggml-vulkan/ggml-vulkan.cpp

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -951,10 +951,13 @@ void vk_memory_logger::log_deallocation(vk_buffer_ref buf_ref) {
951951
struct vk_instance_t {
952952
vk::Instance instance;
953953

954-
#ifdef GGML_VULKAN_DEBUG_UTILS
955954
bool debug_utils_support = false; // VK_EXT_debug_utils enabled
956-
PFN_vkSetDebugUtilsObjectNameEXT pfnSetDebugUtilsObjectNameEXT = {};
957-
#endif
955+
PFN_vkSetDebugUtilsObjectNameEXT pfn_vkSetDebugUtilsObjectNameEXT = {};
956+
PFN_vkQueueBeginDebugUtilsLabelEXT pfn_vkQueueBeginDebugUtilsLabelEXT = {};
957+
PFN_vkQueueEndDebugUtilsLabelEXT pfn_vkQueueEndDebugUtilsLabelEXT = {};
958+
PFN_vkCmdBeginDebugUtilsLabelEXT pfn_vkCmdBeginDebugUtilsLabelEXT = {};
959+
PFN_vkCmdEndDebugUtilsLabelEXT pfn_vkCmdEndDebugUtilsLabelEXT = {};
960+
PFN_vkCmdInsertDebugUtilsLabelEXT pfn_vkCmdInsertDebugUtilsLabelEXT = {};
958961

959962
std::vector<size_t> device_indices;
960963
vk_device devices[GGML_VK_MAX_DEVICES];
@@ -1113,15 +1116,13 @@ static void ggml_vk_create_pipeline_func(vk_device& device, vk_pipeline& pipelin
11131116
}
11141117
pipeline->compiled = true;
11151118

1116-
#ifdef GGML_VULKAN_DEBUG_UTILS
11171119
if (vk_instance.debug_utils_support) {
11181120
vk::DebugUtilsObjectNameInfoEXT duoni;
11191121
duoni.objectType = vk::ObjectType::ePipeline;
11201122
duoni.pObjectName = pipeline->name.c_str();
1121-
duoni.objectHandle = reinterpret_cast<uint64_t>(pipeline->pipeline.operator VkPipeline_T *());
1122-
vk_instance.pfnSetDebugUtilsObjectNameEXT(device->device, &static_cast<VkDebugUtilsObjectNameInfoEXT &>(duoni));
1123+
duoni.objectHandle = reinterpret_cast<uint64_t>(static_cast<VkPipeline_T*>(pipeline->pipeline));
1124+
vk_instance.pfn_vkSetDebugUtilsObjectNameEXT(device->device, &static_cast<VkDebugUtilsObjectNameInfoEXT &>(duoni));
11231125
}
1124-
#endif
11251126

11261127
{
11271128
std::lock_guard<std::mutex> guard(device->mutex);
@@ -3498,9 +3499,7 @@ static void ggml_vk_print_gpu_info(size_t idx) {
34983499
static bool ggml_vk_instance_validation_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions);
34993500
static bool ggml_vk_instance_portability_enumeration_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions);
35003501

3501-
#ifdef GGML_VULKAN_DEBUG_UTILS
35023502
static bool ggml_vk_instance_debug_utils_ext_available(const std::vector<vk::ExtensionProperties> & instance_extensions);
3503-
#endif
35043503

35053504
static void ggml_vk_instance_init() {
35063505
if (vk_instance_initialized) {
@@ -3522,9 +3521,7 @@ static void ggml_vk_instance_init() {
35223521
#ifdef __APPLE__
35233522
const bool portability_enumeration_ext = ggml_vk_instance_portability_enumeration_ext_available(instance_extensions);
35243523
#endif
3525-
#ifdef GGML_VULKAN_DEBUG_UTILS
3526-
const bool debug_utils_ext = ggml_vk_instance_debug_utils_ext_available(instance_extensions);
3527-
#endif
3524+
const bool debug_utils_ext = ggml_vk_instance_debug_utils_ext_available(instance_extensions) && getenv("GGML_VK_DEBUG_MARKERS") != nullptr;
35283525
std::vector<const char*> layers;
35293526

35303527
if (validation_ext) {
@@ -3539,11 +3536,9 @@ static void ggml_vk_instance_init() {
35393536
extensions.push_back("VK_KHR_portability_enumeration");
35403537
}
35413538
#endif
3542-
#ifdef GGML_VULKAN_DEBUG_UTILS
35433539
if (debug_utils_ext) {
35443540
extensions.push_back("VK_EXT_debug_utils");
35453541
}
3546-
#endif
35473542
vk::InstanceCreateInfo instance_create_info(vk::InstanceCreateFlags{}, &app_info, layers, extensions);
35483543
#ifdef __APPLE__
35493544
if (portability_enumeration_ext) {
@@ -3567,12 +3562,16 @@ static void ggml_vk_instance_init() {
35673562
vk_instance.instance = vk::createInstance(instance_create_info);
35683563
vk_instance_initialized = true;
35693564

3570-
#ifdef GGML_VULKAN_DEBUG_UTILS
35713565
if (debug_utils_ext) {
3572-
vk_instance.pfnSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT) vkGetInstanceProcAddr(vk_instance.instance, "vkSetDebugUtilsObjectNameEXT");
3573-
vk_instance.debug_utils_support = vk_instance.pfnSetDebugUtilsObjectNameEXT != nullptr;
3566+
vk_instance.debug_utils_support = true;
3567+
vk_instance.pfn_vkSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT) vkGetInstanceProcAddr(vk_instance.instance, "vkSetDebugUtilsObjectNameEXT");
3568+
vk_instance.pfn_vkQueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT) vkGetInstanceProcAddr(vk_instance.instance, "vkQueueBeginDebugUtilsLabelEXT");
3569+
vk_instance.pfn_vkQueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT) vkGetInstanceProcAddr(vk_instance.instance, "vkQueueEndDebugUtilsLabelEXT");
3570+
vk_instance.pfn_vkCmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT) vkGetInstanceProcAddr(vk_instance.instance, "vkCmdBeginDebugUtilsLabelEXT");
3571+
vk_instance.pfn_vkCmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT) vkGetInstanceProcAddr(vk_instance.instance, "vkCmdEndDebugUtilsLabelEXT");
3572+
vk_instance.pfn_vkCmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT) vkGetInstanceProcAddr(vk_instance.instance, "vkCmdInsertDebugUtilsLabelEXT");
3573+
35743574
}
3575-
#endif
35763575

35773576
size_t num_available_devices = vk_instance.instance.enumeratePhysicalDevices().size();
35783577

@@ -9473,6 +9472,13 @@ static ggml_status ggml_backend_vk_graph_compute(ggml_backend_t backend, ggml_cg
94739472
VK_LOG_DEBUG("ggml_backend_vk_graph_compute(" << cgraph->n_nodes << " nodes)");
94749473
ggml_backend_vk_context * ctx = (ggml_backend_vk_context *)backend->context;
94759474

9475+
if (vk_instance.debug_utils_support) {
9476+
vk::DebugUtilsLabelEXT dul = {};
9477+
dul.pLabelName = "ggml_backend_vk_graph_compute";
9478+
dul.color = std::array<float,4>{1.0f, 1.0f, 1.0f, 1.0f};
9479+
vk_instance.pfn_vkQueueBeginDebugUtilsLabelEXT(ctx->device->compute_queue.queue, reinterpret_cast<VkDebugUtilsLabelEXT*>(&dul));
9480+
}
9481+
94769482
uint64_t total_mat_mul_bytes = 0;
94779483
for (int i = 0; i < cgraph->n_nodes; i++) {
94789484
ggml_vk_build_graph(ctx, cgraph->nodes[i], i, nullptr, 0, true, false, false, false);
@@ -9547,6 +9553,10 @@ static ggml_status ggml_backend_vk_graph_compute(ggml_backend_t backend, ggml_cg
95479553
}
95489554
}
95499555

9556+
if (vk_instance.debug_utils_support) {
9557+
vk_instance.pfn_vkQueueEndDebugUtilsLabelEXT(ctx->device->compute_queue.queue);
9558+
}
9559+
95509560
#ifdef GGML_VULKAN_PERF
95519561
ctx->device->perf_logger->print_timings();
95529562
#endif

0 commit comments

Comments
 (0)