根据cudaGetDeviceCount()和cudaGetDeviceProperties()中返回的结果,我们可以对每个设备进行操作。
代码如下:
int main(void) {
cudaDeviceProp prop;
int dev;
cudaGetDevice(&dev);
printf("ID of current CUDA device: %d\n", dev);
memset(&prop, 0, sizeof(cudaDeviceProp));
prop.major = 1;
prop.minor = 3;
cudaChooseDevice(&dev, &prop);
printf("ID of CUDA device closest to revision 1.3: %d\n", dev);
cudaSetDevice(dev);
return 0;
}
声明一个cudaDeviceProp结构后,将其传递给cudaChooseDevice(),CUDA运行时将查找是否存在某个设备满足这些条件,cudaChooseDevice()函数将返回一个设备ID,然后将这个ID传递给cudaSetDevice(),随后所有的设备操作都将在这个设备上执行。