尊敬的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
提前谢谢!
最好的问候, 叶夫根尼
答案 0 :(得分:0)
您已注意到,“ -ta”代表“目标加速器”,是您在使用“ -acc”时覆盖默认目标设备的一种方式(“ -acc”告诉编译器使用OpenACC并仅使用“ -ta”表示“ -acc”)。 PGI当前支持两个目标,“多核”以多核CPU为目标,或“特斯拉”以NVIDIA Tesla设备为目标。其他NVIDIA产品(例如Quadro和GeForce)也将在“ 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
希望这会有所帮助!