在使用 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,因为我实际上可以运行 ./smokeParticles在 NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release/.
中采样
但我有一个问题:
- 我如何确定我确实在使用 Tesla K40?因为./smokeParticles样本在我拔掉电源后也是成功的
Tesla K40 构成了我的主板。 (我假设 GTX 950 是 运行 样本...)
是否有命令或其他东西可以告诉我我正在使用 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 如果未找到。
我正在尝试在 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,因为我实际上可以运行 ./smokeParticles在 NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release/.
中采样但我有一个问题:
- 我如何确定我确实在使用 Tesla K40?因为./smokeParticles样本在我拔掉电源后也是成功的 Tesla K40 构成了我的主板。 (我假设 GTX 950 是 运行 样本...)
是否有命令或其他东西可以告诉我我正在使用 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 如果未找到。