WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте
OpenACC
Тип API
Написана на C, C++, Fortran
Последняя версия 2.5 (ноябрь 2015)
Сайт openacc.org

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

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

История

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

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

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

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

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

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

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

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

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

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

Директивы

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

 #pragma acc parallel
 #pragma acc kernels

Обе прагмы используются для определения кода для параллельного исполнения[21][22]

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

 #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. Nvidia, Cray, PGI, and CAPS launch ‘OpenACC’ programming standard for parallel computing. The Inquirer (4 November 2011).
  2. Официальный сайт OpenACC
  3. 1 2 OpenACC standard version 2.0. OpenACC.org. Проверено 14 января 2014.
  4. Вычисления на GPU с помощью простых директив // NVidia, 2012
  5. How does the OpenACC API relate to the OpenMP API?. OpenACC.org. Проверено 14 января 2014.
  6. How did the OpenACC specifications originate?. OpenACC.org. Проверено 14 января 2014.
  7. The OpenMP Consortium Releases First Technical Report. OpenMP.org (5 November 2012). Проверено 14 января 2014.
  8. OpenMP at SC12. OpenMP.org (29 August 2012). Проверено 14 января 2014.
  9. 1 2 OpenACC Group Reports Expanding Support for Accelerator Programming Standard (недоступная ссылка). HPCwire (20 June 2012). Проверено 14 января 2014. Архивировано 23 июня 2012 года.
  10. What is the OpenACC specification based on?
  11. OpenACC Version 2.0 Posted for Comment. OpenACC.org (12 November 2012). Проверено 14 января 2014.
  12. OpenACC Standard to Help Developers to Take Advantage of GPU Compute Accelerators (недоступная ссылка). Xbit laboratories (16 November 2011). Проверено 14 января 2014. Архивировано 16 января 2014 года.
  13. CAPS Announcing Full Support for OpenACC 2.0 in its Compilers. HPCwire (14 November 2013). Проверено 14 января 2014.
  14. OpenUH Compiler (недоступная ссылка). Проверено 4 марта 2014. Архивировано 25 января 2014 года.
  15. OpenARC Compiler. Проверено 4 ноября 2014.
  16. OpenACC - GCC Wiki
  17. Schwinge, Thomas Merge current set of OpenACC changes from gomp-4_0-branch. Список рассылки gcc (15 January 2015). Проверено 15 января 2015.
  18. (4 October 2007) "HMPP: A Hybrid Multi-core Parallel Programming Environment" in Workshop on General Purpose Processing on Graphics Processing Units.. Проверено 14 January 2014. 
  19. Easy GPU Parallelism with OpenACC. Dr.Dobb's (11 June 2012). Проверено 14 января 2014.
  20. OpenACC API QuickReference Card, version 1.0. NVidia (November 2011). Проверено 14 января 2014.
  21. OpenACC Kernels and Parallel Constructs. PGI insider (August 2012). Проверено 14 января 2014.
  22. OpenACC parallel section VS kernels (недоступная ссылка). CAPS entreprise Knowledge Base (3 January 2013). Проверено 14 января 2014. Архивировано 16 января 2014 года.

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии