PGI openACC:目标特定的 GPU 设备
PGI openACC: target specific gpu device
我有两张NVIDIA显卡:
$ ls /dev/nv*
/dev/nvidia0 /dev/nvidia1 /dev/nvidiactl /dev/nvidia-uvm
使用 pgcc,我如何定位特定的卡?我如何确保代码是为 nvidia0 (device=0) 或 nvidia1 (device=1) 生成的?
预先感谢您的帮助。
target a particular device 的 OpenACC API 例程是:
acc_set_device_num( i, acc_device_nvidia );
如果您在程序开始时调用一次,将 i
设置为您希望使用的设备序号,那么您可以通过编程方式定位该设备。
但是,根据您的用例,您可能会发现不使用此类 API 例程编写代码更容易,而是使用 CUDA_VISIBLE_DEVICES
environment variable。例如,您可以这样做:
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
...
还有 OpenACC 环境变量 "ACC_DEVICE_NUM" 可用于设置要使用的设备编号。
我有两张NVIDIA显卡:
$ ls /dev/nv*
/dev/nvidia0 /dev/nvidia1 /dev/nvidiactl /dev/nvidia-uvm
使用 pgcc,我如何定位特定的卡?我如何确保代码是为 nvidia0 (device=0) 或 nvidia1 (device=1) 生成的?
预先感谢您的帮助。
target a particular device 的 OpenACC API 例程是:
acc_set_device_num( i, acc_device_nvidia );
如果您在程序开始时调用一次,将 i
设置为您希望使用的设备序号,那么您可以通过编程方式定位该设备。
但是,根据您的用例,您可能会发现不使用此类 API 例程编写代码更容易,而是使用 CUDA_VISIBLE_DEVICES
environment variable。例如,您可以这样做:
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
...
还有 OpenACC 环境变量 "ACC_DEVICE_NUM" 可用于设置要使用的设备编号。