在使用 GTX950 和 Tesla K40 的计算机上安装 CUDA-7.5

Install CUDA-7.5 on a computer using GTX950 and Tesla K40

我正在尝试在 Ubuntu 14.04 上安装 CUDA-7.5,我的主板上同时插入了 GTX950 和 Tesla K40。

lspci | grep -i nvidia 命令给出以下结果:

01:00.0 3D controlloer: NVIDIA Corporation GK110BGL [Tesla K40c] (rev a1)
02:00.0 VGA compatible controller: NVIDIA Corporation GM206 [GeForece GTX 950] (rev a1)
02:00.1 Audio device: NVIDIA Corporation Device 0fba (rev a1)

我想我已经成功在我的电脑上安装了CUDA-7.5,因为我实际上可以运行 ./smokeParticlesNVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release/.

中采样

但我有一个问题:

是否有命令或其他东西可以告诉我我正在使用 Tesla K40?

在cuda sample中,deviceQuery用于测试cuda是否安装正确,并显示每张卡的基本信息。这将告诉您每个 cuda 设备的设备编号。

例如,我运行它在我的服务器上:

$ ./deviceQuery |egrep '^Device [0-9]+'
Device 0: "GeForce GTX 980 Ti"
Device 1: "GeForce GTX 980 Ti"
Device 2: "GeForce GTX 980 Ti"
Device 3: "GeForce GTX 980 Ti"

在你的cuda应用中,使用cudaSetDevice()到select卡到运行。查看示例源以了解如何使用它。

我想延长 halfelfs回答。他建议的解决方案肯定是正确的,但我不认为它是普遍的。仅依赖于从命令行 return 编辑的硬编码设备号可能会变成陷阱一次 - 无论出于何种原因 - OS 更改先前分配的设备号。

我的建议是:

int getDeviceNumberByName( const char * deviceName )
{
   int deviceCount;
   cudaGetDeviceCount ( &deviceCount );
   for ( int currentDevice = 0 ; currentDevice < deviceCount ; ++currentDevice )
   {
      cudaDeviceProp deviceProperties;
      cudaGetDeviceProperties( &deviceProperties, currentDevice );
      if ( 0 == strcmp( deviceProperties.name, deviceName )
         return currentDevice;
   }
   return -1;        // not found
}

有了这个功能,你就非常灵活了,即使你改变了底层硬件,它也能正常工作。

描述:

获取安装的 NVIDIA 设备总数并读取每个设备的 属性。检查设备名称是否与提供的设备名称匹配,如果匹配 return 设备编号,否则 return -1 如果未找到。