OpenACC-pgcc编译器中的-ta是什么意思?

时间:2019-05-24 08:03:35

标签: openacc pgi-accelerator

尊敬的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

提前谢谢!

最好的问候, 叶夫根尼

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

希望这会有所帮助!