使用多GPU的cudaChooseDevice函数

使用多GPU的cudaChooseDevice函数,cuda,gpu,Cuda,Gpu,我有一台带有3个Gpu设备的Pc,我想选择与我的设备1的属性相匹配的最佳设备,设备1只有8个多处理器(注意:设备0和设备2有30个多处理器),但在运行以下代码后,它会一直提供设备0 int main( void ) { cudaDeviceProp prop; int dev; HANDLE_ERROR( cudaGetDevice( &dev ) ); printf( "ID of current CUDA device: %d\n", dev ); memset( &prop

我有一台带有3个Gpu设备的Pc,我想选择与我的设备1的属性相匹配的最佳设备,设备1只有8个多处理器(注意:设备0和设备2有30个多处理器),但在运行以下代码后,它会一直提供设备0

int main( void ) {
cudaDeviceProp prop;
int dev;
HANDLE_ERROR( cudaGetDevice( &dev ) );
printf( "ID of current CUDA device: %d\n", dev );
memset( &prop, 0, sizeof( cudaDeviceProp ) );
prop.Multiprocessorcount = 8;

HANDLE_ERROR( cudaChooseDevice( &dev, &prop ) );
printf( "ID of CUDA device which has 8 multiprocessor %d\n", dev );
HANDLE_ERROR( cudaSetDevice( dev ) );
}

cudaChooseDevice
具有以下功能:

在*设备中返回属性与*道具最匹配的设备

不幸的是,您似乎不同意运行时API对“最佳”的定义

在这种情况下,请使用您自己的方法选择设备


事实上,你在这个“问题”中连一个问题都没有问过。但需要明确的是,
cudaChooseDevice
使用的算法没有很好的文档记录或描述。因此,你可能不应该在你想要特定结果或特定行为的情况下使用它

我不知道
cudaGetDevice
实际如何工作,以及它根据
prop
选择设备的标准。如果根据设备
1
cudaGetDeviceProperties
设置
prop
,会发生什么情况?在这种情况下,我希望
cudaChooseDevice
应该准确地选择设备
1
。出于好奇:NVIDIA是否记录/描述了
cudaChooseDevice
现在更好了(大约5年后)?这个答案在2019年(几乎)同样有效吗?