From d474bc46fcbb457d258c78b140409f0e57d98942 Mon Sep 17 00:00:00 2001 From: Scott Boudreaux <121303252+Scottcjn@users.noreply.github.com> Date: Thu, 26 Mar 2026 13:20:23 -0500 Subject: [PATCH] fix: add missing CUDA error check + correct Vulkan enum type mismatch 1. simple.c: Wrap cuDeviceGetName() with checkCudaErrors() to catch failures instead of silently using uninitialized device name. Fixes #413 2. simpleVulkan/main.cpp: Replace VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_* with VK_EXTERNAL_MEMORY_HANDLE_TYPE_* when checking memory handle type. The parameter is VkExternalMemoryHandleTypeFlagBits, not semaphore flags. Works by coincidence (same bit values) but is incorrect per the Vulkan spec. Fixes #409 --- cpp/5_Domain_Specific/simpleVulkan/main.cpp | 6 +++--- cpp/7_libNVVM/simple/simple.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cpp/5_Domain_Specific/simpleVulkan/main.cpp b/cpp/5_Domain_Specific/simpleVulkan/main.cpp index ecce8868d..0a8548db5 100644 --- a/cpp/5_Domain_Specific/simpleVulkan/main.cpp +++ b/cpp/5_Domain_Specific/simpleVulkan/main.cpp @@ -328,13 +328,13 @@ class VulkanCudaSineWave : public VulkanBaseApp { cudaExternalMemoryHandleDesc externalMemoryHandleDesc = {}; - if (handleType & VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT) { + if (handleType & VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT) { externalMemoryHandleDesc.type = cudaExternalMemoryHandleTypeOpaqueWin32; } - else if (handleType & VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT) { + else if (handleType & VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT) { externalMemoryHandleDesc.type = cudaExternalMemoryHandleTypeOpaqueWin32Kmt; } - else if (handleType & VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT) { + else if (handleType & VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT) { externalMemoryHandleDesc.type = cudaExternalMemoryHandleTypeOpaqueFd; } else { diff --git a/cpp/7_libNVVM/simple/simple.c b/cpp/7_libNVVM/simple/simple.c index 25baa356e..af680fb6b 100644 --- a/cpp/7_libNVVM/simple/simple.c +++ b/cpp/7_libNVVM/simple/simple.c @@ -69,7 +69,7 @@ static CUdevice cudaDeviceInit(int *devMajor, int *devMinor) CUdevice cuDevice = 0; checkCudaErrors(cuDeviceGet(&cuDevice, 0)); char name[128]; - cuDeviceGetName(name, sizeof(name), cuDevice); + checkCudaErrors(cuDeviceGetName(name, sizeof(name), cuDevice)); printf("Using CUDA Device [0]: %s\n", name); // Obtain the device's compute capability.