与运行时 API 函数等效的 CUDA 驱动程序 API 是cudaSetDevice
什么?
我正在研究驱动程序 API,但找不到等效函数。我能做的是
cuDeviceGet(&cuDevice, device_no);
cuCtxCreate(&cuContext, 0, cuDevice);
这是不等价的,因为除了设置设备之外,它还创建了一个上下文。运行时 APIcudaSetDevice
本身不会创建上下文。在运行时 API 中,CUDA 上下文是使用第一个需要设备状态的 CUDA 调用隐式创建的。
这个问题的背景:CUDA-aware MPI (MVAPICH2 1.8/9) 初始化需要在MPI_init
调用之前设置 CUDA 设备。使用 CUDA 运行时 API,这可以通过
cudaSetDevice(device_no);
MPI_init();
但是,我不想使用对 CUDA 运行时的调用,因为我的应用程序的其余部分纯粹使用驱动程序 API,并且我想避免也链接到运行时。
在 MPI 初始化之前创建上下文有什么问题?原则上什么都没有。只是想知道驱动程序 API 中是否有等效调用。