openacc - OpenACC - pgcc 编译器中的 -ta 是什么意思?
问题描述
亲爱的 StackOverflow 社区,
为了使用 OpenACC 使用 GPU 加速,我正在 pgi 编译器中使用“-ta”标志。我没有找到任何全面的答案。是的,我知道它被称为目标加速器,以使用有关硬件的信息来提升。那么,如果我的 GPU 硬件是,我应该设置什么 -ta :
weugene@landau:~$ sudo lspci -vnn | grep VGA -A 12
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP104GL [10de:1bb1] (rev a1) (prog-if 00 [VGA controller])
Subsystem: NVIDIA Corporation GP104GL [Quadro P4000] [10de:11a3]
Physical Slot: 4
Flags: bus master, fast devsel, latency 0, IRQ 46, NUMA node 0
Memory at fa000000 (32-bit, non-prefetchable) [size=16M]
Memory at c0000000 (64-bit, prefetchable) [size=256M]
Memory at d0000000 (64-bit, prefetchable) [size=32M]
I/O ports at e000 [size=128]
[virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
Capabilities: [60] Power Management version 3
Capabilities: [68] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [78] Express Legacy Endpoint, MSI 00
Capabilities: [100] Virtual Channel
pgi 编译器 ( /opt/pgi/linux86-64/2019/cuda
) 的 CUDA 版本为: 9.2、10.0、10.1
先感谢您!
最好的问候, Evgenii
解决方案
正如您所注意到的,“-ta”代表“目标加速器”,是您在使用“-acc”时覆盖默认目标设备的一种方式(“-acc”告诉编译器使用 OpenACC 并仅使用“-ta”意味着“-acc”)。PGI 目前支持两个目标,“multicore”针对多核 CPU,或“tesla”针对 NVIDIA Tesla 设备。Quadro 和 GeForce 等其他 NVIDIA 产品也将在“tesla”标志下工作,前提是它们与 Tesla 产品共享相同的架构。
默认情况下,当使用“-ta=tesla”时,PGI 编译器将创建一个支持多种 NVIDIA 架构的统一二进制文件。确切的架构集将取决于编译器版本和构建系统上的 CUDA 设备驱动程序。例如,在具有 CUDA 9.2 驱动程序的系统上使用 PGI 19.4,编译器将针对 Kepler (cc35)、Maxwell (cc50)、Pascal (cc60) 和 Volta (cc70) 架构。“cc”代表计算能力。请注意,如果在系统上找不到 CUDA 驱动程序,则 19.4 编译器默认使用 CUDA 10.0。
在您的情况下,Quadro P4000 使用 Pascal 架构 (cc60),因此默认情况下将成为目标。如果您想让编译器只针对您的设备,而不是创建统一的二进制文件,您可以使用选项“-ta=tesla:cc60”
您还可以覆盖要用作子选项的 Cuda 版本。例如“-ta=tesla:cuda10.1”。有关子选项的完整列表,请从命令行运行“pgcc -help -ta”或查阅 PGI 的文档。
如果您不知道设备的计算能力,请运行 PGI 实用程序“pgaccelinfo”,它将为您提供此信息。例如,这是我的系统的输出,它有一个 V100:
% pgaccelinfo
CUDA Driver Version: 10010
NVRM version: NVIDIA UNIX x86_64 Kernel Module 418.67 Sat Apr 6 03:07:24 CDT 2019
Device Number: 0
Device Name: Tesla V100-PCIE-16GB
Device Revision Number: 7.0
Global Memory Size: 16914055168
Number of Multiprocessors: 80
Concurrent Copy and Execution: Yes
Total Constant Memory: 65536
Total Shared Memory per Block: 49152
Registers per Block: 65536
Warp Size: 32
Maximum Threads per Block: 1024
Maximum Block Dimensions: 1024, 1024, 64
Maximum Grid Dimensions: 2147483647 x 65535 x 65535
Maximum Memory Pitch: 2147483647B
Texture Alignment: 512B
Clock Rate: 1380 MHz
Execution Timeout: No
Integrated Device: No
Can Map Host Memory: Yes
Compute Mode: default
Concurrent Kernels: Yes
ECC Enabled: Yes
Memory Clock Rate: 877 MHz
Memory Bus Width: 4096 bits
L2 Cache Size: 6291456 bytes
Max Threads Per SMP: 2048
Async Engines: 7
Unified Addressing: Yes
Managed Memory: Yes
Concurrent Managed Memory: Yes
Preemption Supported: Yes
Cooperative Launch: Yes
Multi-Device: Yes
PGI Default Target: -ta=tesla:cc70
希望这可以帮助!
推荐阅读
- mysql - MySQL 的 WITH 解决方法
- xamarin.forms - System.InvalidCastException:“指定的演员表无效。” App.Current.Resources["theme_bg_color"] = Color.White;
- opencv - OPENCV 处理游戏截图的最佳方式
- amazon-web-services - Terraform 总是更新 iam_policy_document 的条件块
- ruby-on-rails - 从块参数创建动态方法
- axios - 如何使用 jest 和 mock-axios 测试 504
- asp.net-core-mvc - 从 github 操作发布时,实体框架 SQL 脚本生成失败
- python-3.x - 如何调试使用`.run_forever()`方法的python websocket脚本(无限事件循环)
- python - 基于条件的两个 Python 列表的交集
- python - 如何获取可迭代中具有最高值的变量的名称?