首页 > 解决方案 > 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

标签: openaccpgi-accelerator

解决方案


正如您所注意到的,“-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

希望这可以帮助!


推荐阅读