Interested Article - OpenACC

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

Как и более ранний стандарт 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 или более раннем ( ), . Библиотека поддержки предоставляет несколько вспомогательных функций, описанных в заголовочных файлах "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().

См. также

Примечания

  1. . The Inquirer (4 ноября 2011). Дата обращения: 9 мая 2015. Архивировано из 17 ноября 2011 года.
  2. . Дата обращения: 30 сентября 2012. 23 сентября 2012 года.
  3. . OpenACC.org . Дата обращения: 14 января 2014. 3 августа 2016 года.
  4. от 4 ноября 2012 на Wayback Machine // NVidia, 2012
  5. OpenACC.org . Дата обращения: 14 января 2014. 16 января 2014 года.
  6. OpenACC.org . Дата обращения: 14 января 2014. 16 января 2014 года.
  7. . OpenMP.org (5 ноября 2012). Дата обращения: 14 января 2014. 16 января 2014 года.
  8. . OpenMP.org (29 августа 2012). Дата обращения: 14 января 2014. 16 января 2014 года.
  9. . HPCwire (20 июня 2012). Дата обращения: 14 января 2014. Архивировано из 23 июня 2012 года.
  10. Дата обращения: 30 сентября 2012. 25 сентября 2012 года.
  11. . OpenACC.org (12 ноября 2012). Дата обращения: 14 января 2014. 16 января 2014 года.
  12. . Xbit laboratories (16 ноября 2011). Дата обращения: 14 января 2014. Архивировано из 16 января 2014 года.
  13. . HPCwire (14 ноября 2013). Дата обращения: 14 января 2014. 16 января 2014 года.
  14. . Дата обращения: 4 марта 2014. Архивировано из 25 января 2014 года.
  15. . Дата обращения: 4 ноября 2014. 4 ноября 2014 года.
  16. . Дата обращения: 9 мая 2015. 1 апреля 2015 года.
  17. Schwinge, Thomas (15 January 2015). . gcc (Mailing list). из оригинала 16 января 2015 . Дата обращения: 15 января 2015 . {{ cite mailing list }} : Указан более чем один параметр |website= and |mailinglist= ( справка )
  18. Dolbeau, Romain; Bihan, Stéphane; Bodin, François (4 October 2007). (PDF) . . Архивировано из (PDF) 16 января 2014 . Дата обращения: 14 января 2014 . . Дата обращения: 9 мая 2015. Архивировано из 16 января 2014 года.
  19. . Dr.Dobb's (11 июня 2012). Дата обращения: 14 января 2014. 16 января 2014 года.
  20. . NVidia (ноябрь 2011). Дата обращения: 14 января 2014. 16 января 2014 года.
  21. . PGI insider (август 2012). Дата обращения: 14 января 2014. 20 июля 2014 года.
  22. . CAPS entreprise Knowledge Base (3 января 2013). Дата обращения: 14 января 2014. Архивировано из 16 января 2014 года.

Ссылки

Источник —

Same as OpenACC