什麼是運行時API函數cudaSetDevice
的CUDA驅動程序的API等效項?cudaSetDevice等效的CUDA驅動程序API
我正在查看驅動程序API並找不到等效函數。我所能做的就是
cuDeviceGet(&cuDevice, device_no);
cuCtxCreate(&cuContext, 0, cuDevice);
這是不是因爲旁邊設置也帶來了上下文中的設備等同。運行時API cudaSetDevice
本身不會創建上下文。在運行時API中,CUDA上下文是通過第一個需要設備狀態的CUDA調用隱式創建的。
此問題的背景:CUDA感知的MPI(MVAPICH2 1.8/9)初始化需要在調用MPI_init
之前設置CUDA設備。使用CUDA運行時API這可以用
cudaSetDevice(device_no);
MPI_init();
但是做,我不希望使用的呼叫,因爲我的應用程序的其餘CUDA運行時純粹使用驅動程序API,我想避免鏈接到運行時。
在MPI初始化之前,創建上下文時出現了什麼問題?原則上沒有。只是想知道在驅動程序API中是否有相同的調用。
再次思考。我認爲沒有相應的調用,因爲在驅動程序API中沒有設置設備。相反,它是我發佈的:一個創建一個設備的句柄,並創建一個上下文(隱式設置設備)。有了這個MVAPICH2很開心。 – ritter
換言之:使用驅動程序API時,必須在使用支持CUDA的MPI時創建上下文。 – ritter
在運行時API中,從CUDA 4.0開始,'cudaSetDevice' *會*創建一個上下文,如果這個上下文尚未存在於相關設備上。 – talonmies