我有3个Gpu设备的Pc,我想选择最符合我的设备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 ) );
}
答案 0 :(得分:2)
cudaChooseDevice
有following description:
在* device中返回具有最佳匹配* prop。
的属性的设备
不幸的是,您似乎不同意运行时API关于" best"的定义。
在这种情况下,请使用您自己的方法选择设备。
事实上,你甚至没有在这个"问题"中提出问题。但需要明确的是,cudaChooseDevice
使用的算法没有详细记录或描述。因此,在您需要特定结果或特定行为的情况下,您可能不应该使用它。