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

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

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

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

Заранее спасибо!

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

1 Ответ

1 голос
/ 24 мая 2019

Как вы заметили, «-ta» означает «целевой ускоритель» и позволяет переопределить целевое устройство по умолчанию при использовании «-acc» («-acc» указывает компилятору использовать OpenACC и использовать just »-та "подразумевает" -acc ").В настоящее время PGI поддерживает две цели: «многоядерный» для многоядерного процессора или «tesla» для целевого устройства 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

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

...