如何确保Vulkan使用与CUDA相同的GPU?
我使用的应用程序在HPC集群(univa网格引擎)上同时使用vulkan和cuda(特别是Pytork) 提交作业时,群集计划程序设置一个环境变量如何确保Vulkan使用与CUDA相同的GPU?,cuda,pytorch,vulkan,hpc,Cuda,Pytorch,Vulkan,Hpc,我使用的应用程序在HPC集群(univa网格引擎)上同时使用vulkan和cuda(特别是Pytork) 提交作业时,群集计划程序设置一个环境变量SGE\u HGR\u gpu,其中包含作业要使用的gpu ID(因此其他用户运行的其他作业不使用相同的gpu) 告诉使用CUDA的应用程序使用特定GPU的典型方法是设置CUDA\u VISIBLE\u DEVICES=n 由于我也在使用Vulkan,我不知道如何确保从vkEnumeratePhysicalDevices中列出的设备中选择相同的设备 我
SGE\u HGR\u gpu
,其中包含作业要使用的gpu ID(因此其他用户运行的其他作业不使用相同的gpu)
告诉使用CUDA的应用程序使用特定GPU的典型方法是设置CUDA\u VISIBLE\u DEVICES=n
由于我也在使用Vulkan,我不知道如何确保从vkEnumeratePhysicalDevices
中列出的设备中选择相同的设备
我认为'n'可以采用的值顺序与PCI总线上设备的顺序相同,但是我不知道vkEnumeratePhysicalDevices
返回的设备顺序是否符合此顺序,并且文档没有指定此顺序
那么,我如何确保为Vulkan和CUDA选择相同的物理GPU呢?使用
VkPhysicalDevicePropertiesKHR
(Vulkan 1.1)respVkPhysicalDeviceVulkan 11属性
(Vulkan 1.2)可以获取设备UUID,这是CUDA\u可见设备
似乎使用的格式之一。您还应该能够使用nvidiasmi-L
(或使用NVML库)将索引转换为UUID(反之亦然)
或者另一种方式,cudaDeviceProp
包含PCI信息,可与VK_EXT_PCI_bus_info
扩展输出进行比较
如果订单在Vulkan匹配,最好直接询问NVidia;我找不到NV如何订购的信息。从Vulkan加载程序实现的IIRC中,顺序应该与注册表中的顺序相匹配,然后是NV驱动程序本身给出的顺序。即使如此,您也必须从通用代码列表中筛选非NV GPU,并且您不知道NV Vulkan ICD实现是否与CUDA匹配,而不询问NV。可能有兴趣:也有兴趣:@RobertCrovella谢谢!理想情况下,我希望避免针对cuda库编译vulkan模块,我的项目中的“cuda”组件位于完全不同的模块中,两个模块分别由python导入。Vulkan PCI设备API看起来很有希望,但必须尝试找出此处的信息与NVIDIA驱动程序分配的“GPU ID”之间的关系(目前尚不清楚)