【发布时间】:2021-02-04 19:28:36
【问题描述】:
我正在使用一个在 HPC 集群(univa Grid Engine)上同时使用 vulkan 和 cuda(特别是 pytorch)的应用程序。
提交作业时,集群调度程序会设置一个环境变量SGE_HGR_gpu,其中包含供作业使用的 GPU ID(因此其他用户运行的其他作业不会使用同一个 GPU)
告诉使用 CUDA 的应用程序使用特定 GPU 的典型方法是设置CUDA_VISIBLE_DEVICES=n
由于我也在使用 Vulkan,所以我不知道如何确保从vkEnumeratePhysicalDevices 列出的设备中选择相同的设备。
我认为 'n' 可以取的值的顺序与 PCI BUS 上设备的顺序相同,但是我不知道返回的设备的顺序是否vkEnumeratePhysicalDevices 是这个顺序,文档没有具体说明这个顺序是什么。
那么我如何才能确保为 Vulkan 和 CUDA 选择相同的物理 GPU?
【问题讨论】:
-
@RobertCrovella 谢谢!理想情况下,我想避免针对 cuda 库编译我的 vulkan 模块,我项目中的“cuda”组件位于完全不同的模块中,并且两个模块都由 python 单独导入。 Vulkan PCI 设备 API 看起来很有希望,但必须尝试弄清楚这里的信息与 NVIDIA 驱动程序分配的“GPU ID”有何关系(尚不清楚)