Показать меню

OpenACC

17.03.2021
15

OpenACC (от англ. Open Accelerators) — программный стандарт для параллельного программирования, разрабатываемый совместно компаниями Cray, CAPS, Nvidia и PGI. Стандарт описывает набор директив компилятора, предназначенных для упрощения создания гетерогенных параллельных программ, задействующих как центральный, так и графический процессор.

Как и более ранний стандарт OpenMP, OpenACC используется для аннотирования фрагментов программ на языках C, C++ и Fortran. С помощью набора директив компилятора программист отмечает участки кода, которые следует выполнять параллельно или на графическом процессоре, обозначает какие из переменных являются общими, а какие индивидуальными для потока и т. п. По синтаксису схож с OpenMP. Стандарт OpenACC позволяет программисту абстрагироваться от особенностей инициализации графического процессора, вопросов передачи данных на сопроцессор и обратно и т. д.

История

Создатели OpenACC также участвуют в работе над стандартами OpenMP и планируют расширить будущие версии OpenMP для поддержки вычислительных ускорителей. В ноябре 2012 года был опубликован технический отчет для обсуждения и добавления поддержки акселераторов, произведенных не Nvidia. На конференции ISC’12 продемонстрирована работа OpenACC на ускорителях производства Nvidia, AMD и Intel без публикации данных о производительности.

Планируется объединить спецификации OpenACC и OpenMP, включив в последний поддержку работы с ускорителями, в том числе GPU.

Черновик второй версии стандарта, OpenACC 2.0 был представлен в ноябре 2012 года на конференции SC12. В стандарт были добавлены директивы управления пересылкой данных, поддержка явных вызовов функций и раздельная компиляция.

Поддержка в компиляторах

Реализация OpenACC доступна в компиляторах от PGI (с версии 12.6), Cray и CAPS.

Группа HPCTools из Университета Хьюстона добавила поддержку OpenACC в открытый компилятор OpenUH, основанный на кодах Open64.

В национальной лаборатории ORNL был разработан компилятор с открытыми исходными текстами OpenARC для языка Си, поддерживающий OpenACC версии 1.0.

Свободный компилятор GNU GCC поддерживает OpenACC начиная с версии 5. GCC 5 включена в Ubuntu 15.10, в ОС Fedora 22, в DragonFly BSD 4.2. В версии GCC 5.1 (22 апреля 2015 года) была добавлена библиотека поддержки openacc.h.

Использование

Основным режимом использования OpenACC являются директивы, точно также как и в OpenMP 3.x или более раннем OpenHMPP,. Библиотека поддержки предоставляет несколько вспомогательных функций, описанных в заголовочных файлах "openacc.h" для C/C++ и "openacc_lib.h" для Fortran;.

Директивы

В OpenACC описаны различные директивы компилятора (#pragma), в том числе:

#pragma acc parallel #pragma acc kernels

Обе директивы используются для определения кода для параллельного исполнения

Основная директива для определения и копирования данных:

#pragma acc data

Директива, определяющая тип параллелизма в регионах parallel и kernels

#pragma acc loop

Дополнительные директивы

#pragma acc cache #pragma acc update #pragma acc declare #pragma acc wait

Функции библиотеки

Некоторые стандартные функции библиотек, реализующих OpenACC: acc_get_num_devices(), acc_set_device_type(), acc_get_device_type(), acc_set_device_num(), acc_get_device_num(), acc_async_test(), acc_async_test_all(), acc_async_wait(), acc_async_wait_all(), acc_init(), acc_shutdown(), acc_on_device(), acc_malloc(), acc_free().

Еще по этой теме:
Netduino
15:40, 15 декабрь
Netduino
Netduino — открытая аппаратная вычислительная платформа, базирующая на .NET Micro Framework и использующая 32-битные микроконтроллеры ARM. Платы Netduino (за исключением вариантов Mini и Go)
Rock (процессор)
23:46, 13 декабрь
Rock (процессор)
Rock — многопоточный, многоядерный микропроцессор с системой команд SPARC, который разрабатывался компанией Sun Microsystems до её покупки Oracle Corporation. Это отдельная разработка, не связанная с
Base58
18:55, 12 декабрь
Base58
Base58 — вариант кодирования цифрового кода в виде буквенно-цифрового текста на основе латинского алфавита. Алфавит кодирования содержит 58 символов. Применяется для передачи данных в разнородных
Перестановка циклов
16:24, 05 декабрь
Перестановка циклов
Перестановка циклов (англ. Loop interchange) — оптимизация компилятора при которой меняется порядок итерационных переменных, относящихся к группе вложенных циклов. Итерационная переменная,
Cray X2
16:48, 04 декабрь
Cray X2
Cray X2 это узел с векторными процессорами для массово-параллельного гибридного суперкомпьютера Cray XT5h, разработанный компанией Cray и выпущенный на рынок в 2007 году. X2 разрабатывался под
ГОСТ Р ИСО 9000
04:11, 04 декабрь
ГОСТ Р ИСО 9000
ГОСТ Р ИСО 9000 «Системы менеджмента качества. Основные положения и словарь» описывает основные положения систем менеджмента качества и устанавливает терминологию для систем менеджмента качества.
Комментарии:
Добавить комментарий
Ваше Имя:
Ваш E-Mail:
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent