OpenACC - что означает -ta в компиляторе pgcc?

Уважаемое сообщество StackOverflow,

Я борюсь с флагом «-ta» в компиляторе pgi, чтобы использовать ускорение графического процессора с помощью OpenACC. Я не нашел исчерпывающего ответа. Да, я знаю, что это называется целевой ускоритель, чтобы ускорить использование информации об оборудовании. Итак, что я должен установить, если мое оборудование графического процессора:

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

Версии CUDA для компилятора pgi (/opt/pgi/linux86-64/2019/cuda): 9.2, 10.0, 10.1

Заранее благодарю!

С уважением, Евгений


person Евгений Львович Шараборин    schedule 24.05.2019    source источник


Ответы (1)


Как вы заметили, «-ta» означает «целевой ускоритель» и позволяет вам переопределить целевое устройство по умолчанию при использовании «-acc» («-acc» указывает компилятору использовать OpenACC и использовать только «-ta» подразумевает "-acc"). PGI в настоящее время поддерживает две цели: «многоядерный» для многоядерного процессора или «тесла» для устройства NVIDIA Tesla. Другие продукты NVIDIA, такие как Quadro и GeForce, также будут работать под флагом Tesla при условии, что они используют ту же архитектуру, что и продукты Tesla.

По умолчанию при использовании «-ta = tesla» компилятор PGI создает унифицированный двоичный файл, поддерживающий несколько архитектур NVIDIA. Точный набор архитектур будет зависеть от версии компилятора и драйвера устройства CUDA в системе сборки. Например, с PGI 19.4 в системе с драйвером CUDA 9.2 компилятор будет нацелен на архитектуры 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

Надеюсь это поможет!

person Mat Colgrove    schedule 24.05.2019