我有两张NVIDIA卡:
$ ls /dev/nv*
/dev/nvidia0 /dev/nvidia1 /dev/nvidiactl /dev/nvidia-uvm使用pgcc,我如何针对特定的卡?如何确保代码是为nvidia0 (device=0)或nvidia1 (device=1)生成的?
提前谢谢你的帮助。
发布于 2015-10-13 02:04:29
OpenACC对瞄准某一特定设备的API例程是:
acc_set_device_num( i, acc_device_nvidia );如果您在程序开始时调用它一次,并将i设置为您希望使用的设备序号,那么您可以通过编程方式锁定该设备。
但是,根据您的用例,您可能会发现,如果没有这样的API例程,编写代码就更容易了,但是可以使用CUDA_VISIBLE_DEVICES 环境变量。例如,您可以:
CUDA_VISIBLE_DEVICES="0" ./my_app若要在设备0上运行代码,或
CUDA_VISIBLE_DEVICES="1" ./my_app要在设备1上运行相同的代码,请执行以下操作。
为了确保为特定设备类型生成代码,您可以在编译期间将该设备的计算能力附加到-ta开关中,例如:
pgcc -ta=tesla:cc30 ...将为cc3.0设备生成代码。如果您对pgcc使用命令行帮助
pgcc -help它将列出其他支持的选项。例如,我的pgcc (15.7)显示:
...
-ta=tesla:{cc20|cc30|cc35|cc50|cuda6.5|cuda7.0|fastmath|[no]flushz|[no]fma|keepbin|keepgpu|keepptx|[no]lineinfo|[no]llvm|loadcache:{L1|L2}|maxregcount:<n>|pin|[no]rdc|[no]unroll|beta}|nvidia|radeon:{keep|[no]llvm|[no]unroll|tahiti|capeverde|spectre|buffercount:<n>}|host
Choose target accelerator
tesla Select NVIDIA Tesla accelerator target
cc20 Compile for compute capability 2.0
cc30 Compile for compute capability 3.0
cc35 Compile for compute capability 3.5
cc50 Compile for compute capability 5.0
...https://stackoverflow.com/questions/33092509
复制相似问题