Cuda PGI openACC:特定于目标的gpu设备

Cuda PGI openACC:特定于目标的gpu设备,cuda,nvidia,openacc,pgi,pgi-accelerator,Cuda,Nvidia,Openacc,Pgi,Pgi Accelerator,我有两张NVIDIA卡: $ ls /dev/nv* /dev/nvidia0 /dev/nvidia1 /dev/nvidiactl /dev/nvidia-uvm 使用pgcc,我如何瞄准特定的卡?如何确保为nvidia0(设备=0)或nvidia1(设备=1)生成代码 提前感谢您的帮助。的OpenACC API例程是: 如果在程序开始时调用此函数一次,并将i设置为要使用的设备顺序,则可以通过编程方式将该设备作为目标 但是,根据您的使用情况,您可能会发现在没有此类API例程的情况下编

我有两张NVIDIA卡:

$ ls /dev/nv*
/dev/nvidia0  /dev/nvidia1  /dev/nvidiactl  /dev/nvidia-uvm
使用pgcc,我如何瞄准特定的卡?如何确保为nvidia0(设备=0)或nvidia1(设备=1)生成代码


提前感谢您的帮助。

的OpenACC API例程是:

如果在程序开始时调用此函数一次,并将
i
设置为要使用的设备顺序,则可以通过编程方式将该设备作为目标

但是,根据您的使用情况,您可能会发现在没有此类API例程的情况下编写代码更容易,而使用
CUDA\u VISIBLE\u设备
。例如,您可以执行以下操作:

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)显示:

。。。
-泰斯拉(Te斯拉)泰斯拉(Te斯拉)泰斯拉(Te斯拉)泰斯拉:{cc20 | cc20 | cc30 | cc30 | cc30 | cc30 | cc30 | cc35 | cc50 | cc50 1246.5)cuda6.5 1246.5)cuda7.0.0 1244.0 1244.0 cuda7.0 1244.0 124; cuda7.0 124; cuda7.0 | cuda7.0 | cuda7.0 \| cuda7.0.0 124; cuda7.0 |快速数学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学数学数学数学数学数学|[否]展开|塔希提岛|卡普维德|幽灵|缓冲计数:}|主机
选择目标加速器
特斯拉选择NVIDIA特斯拉加速器目标
cc20编译用于计算能力2.0
cc30针对计算能力3.0进行编译
cc35编译计算能力3.5
cc50编译用于计算能力5.0
...

OpenACC API例程的作用是:

如果在程序开始时调用此函数一次,并将
i
设置为要使用的设备顺序,则可以通过编程方式将该设备作为目标

但是,根据您的使用情况,您可能会发现在没有此类API例程的情况下编写代码更容易,而使用
CUDA\u VISIBLE\u设备
。例如,您可以执行以下操作:

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)显示:

。。。
-泰斯拉(Te斯拉)泰斯拉(Te斯拉)泰斯拉(Te斯拉)泰斯拉:{cc20 | cc20 | cc30 | cc30 | cc30 | cc30 | cc30 | cc35 | cc50 | cc50 1246.5)cuda6.5 1246.5)cuda7.0.0 1244.0 1244.0 cuda7.0 1244.0 124; cuda7.0 124; cuda7.0 | cuda7.0 | cuda7.0 \| cuda7.0.0 124; cuda7.0 |快速数学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学中学数学数学数学数学数学|[否]展开|塔希提岛|卡普维德|幽灵|缓冲计数:}|主机
选择目标加速器
特斯拉选择NVIDIA特斯拉加速器目标
cc20编译用于计算能力2.0
cc30针对计算能力3.0进行编译
cc35编译计算能力3.5
cc50编译用于计算能力5.0
...

还有OpenACC环境变量“ACC\u DEVICE\u NUM”,可用于设置要使用的设备编号。

还有OpenACC环境变量“ACC\u DEVICE\u NUM”,可用于设置要使用的设备编号