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