首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PGI openACC:目标专用gpu器件

PGI openACC:目标专用gpu器件
EN

Stack Overflow用户
提问于 2015-10-13 00:57:08
回答 1查看 1.6K关注 0票数 1

我有两张NVIDIA卡:

代码语言:javascript
复制
$ ls /dev/nv*
/dev/nvidia0  /dev/nvidia1  /dev/nvidiactl  /dev/nvidia-uvm

使用pgcc,我如何针对特定的卡?如何确保代码是为nvidia0 (device=0)或nvidia1 (device=1)生成的?

提前谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-13 02:04:29

OpenACC对瞄准某一特定设备的API例程是:

代码语言:javascript
复制
acc_set_device_num( i, acc_device_nvidia );

如果您在程序开始时调用它一次,并将i设置为您希望使用的设备序号,那么您可以通过编程方式锁定该设备。

但是,根据您的用例,您可能会发现,如果没有这样的API例程,编写代码就更容易了,但是可以使用CUDA_VISIBLE_DEVICES 环境变量。例如,您可以:

代码语言:javascript
复制
CUDA_VISIBLE_DEVICES="0" ./my_app

若要在设备0上运行代码,或

代码语言:javascript
复制
CUDA_VISIBLE_DEVICES="1" ./my_app

要在设备1上运行相同的代码,请执行以下操作。

为了确保为特定设备类型生成代码,您可以在编译期间将该设备的计算能力附加到-ta开关中,例如:

代码语言:javascript
复制
pgcc -ta=tesla:cc30 ...

将为cc3.0设备生成代码。如果您对pgcc使用命令行帮助

代码语言:javascript
复制
pgcc -help

它将列出其他支持的选项。例如,我的pgcc (15.7)显示:

代码语言:javascript
复制
...
-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
...
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33092509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档