OpenACC (англ. Open Accelerators) — програмний стандарт для паралельного програмування, що розробляється y Cray, CAPS, Nvidia і . Стандарт описує набір директив компілятора, призначених для спрощення створення гетерогенних паралельних програм, що задіюють як центральний, так і графічний процесор.
Тип | API |
---|---|
Стабільний випуск | 2.0 (червень 2013) |
Платформа | Cross-platform |
Операційна система | Cross-platform |
Мова програмування | C, , тa Fortran |
Вебсайт | openacc.org |
Як і більш ранній стандарт OpenMP, OpenACC використовується для анотування фрагментів програм на мовах 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.
У національній лабораторії був розроблений компілятор з відкритими вихідними текстами OpenARC для мови Сі, що підтримує OpenACC версії 1.0.
Безкоштовний компілятор GNU GCC підтримує OpenACC починаючи з версії 5. У версії 5.1 (22 квітня 2015 року) була додана бібліотека підтримки openacc.h. GCC версії 5.1 планується до включення в Ubuntu 15.10 (жовтень 2015 року), компілятор також доступний у складі Fedora 22 beta.
Використання
Основним режимом використання OpenACC є директиви, точно також як і в OpenMP 3.x або більш ранньому OpenHMPP. Бібліотека підтримки надає кілька допоміжних функцій, описаних в заголовних файлах «openacc.h» для C / C ++ і «openacc_lib.h» для Fortran;.
Директиви
У OpenACC описані різні директиви компілятора:
#pragma acc parallel #pragma acc kernels
Обидві Прагми використовуються для визначення коду для паралельного виконання. Основна директива для визначення і копіювання даних:
#pragma acc data
Директива, яка визначає тип паралелізму в регіонах і
#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 ().
Примітки
- . The Inquirer. 4/11/2011. Архів оригіналу за 17 листопада 2011. Процитовано 28 травня 2015. (англ.)
- Офіційний сайт OpenACC [ 23 вересня 2012 у Wayback Machine.] (англ.)
- (PDF). OpenACC.org. Архів оригіналу (PDF) за 3 серпня 2016. Процитовано 28 травень 2015. (англ.)
- Вычисления на GPU с помощью простых директив [ 4 листопада 2012 у Wayback Machine.] // NVidia, 2012 (рос.)
Див. також
Це незавершена стаття про програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
OpenACC angl Open Accelerators programnij standart dlya paralelnogo programuvannya sho rozroblyayetsya y Cray CAPS Nvidia i Standart opisuye nabir direktiv kompilyatora priznachenih dlya sproshennya stvorennya geterogennih paralelnih program sho zadiyuyut yak centralnij tak i grafichnij procesor OpenACCTipAPIStabilnij vipusk2 0 cherven 2013 PlatformaCross platformOperacijna sistemaCross platformMova programuvannyaC C ta FortranVebsajtopenacc org Yak i bilsh rannij standart OpenMP OpenACC vikoristovuyetsya dlya anotuvannya fragmentiv program na movah C i Fortran Za dopomogoyu naboru direktiv kompilyatora programist zaznachaye dilyanki kodu yaki slid vikonuvati paralelno abo na grafichnomu procesori poznachaye yaki z zminnih ye zagalnimi a yaki individualnimi dlya potoku i t in Za sintaksisom shozhij z OpenMP Standart OpenACC dozvolyaye programistu abstraguvatisya vid osoblivostej inicializaciyi grafichnogo procesora pitan peredachi danih na spivprocesor i nazad i t d IstoriyaTvorci OpenACC takozh berut uchast u roboti nad standartami OpenMP i planuyut rozshiriti majbutni versiyi OpenMP dlya pidtrimki obchislyuvalnih priskoryuvachiv U listopadi 2012 roku buv opublikovanij tehnichnij zvit dlya obgovorennya ta dodavannya pidtrimki akseleratoriv tvir ne Nvidia Na konferenciyi ISC 12 prodemonstrovano robotu OpenACC na priskoryuvachah virobnictva Nvidia AMD i Intel bez publikaciyi danih pro produktivnist Planuyetsya ob yednati specifikaciyi OpenACC i OpenMP vklyuchivshi v ostannij pidtrimku roboti z priskoryuvachami v tomu chisli GPU Chernetka drugoyi versiyi standartu OpenACC 2 0 buv predstavlenij v listopadi 2012 roku na konferenciyi SC12 U standart buli dodani direktivi upravlinnya peresilannyam danih pidtrimka yavnih viklikiv funkcij i rozdilna kompilyaciya Pidtrimka v kompilyatorahRealizaciya OpenACC dostupna v kompilyatorah vid PGI z versiyi 12 6 Cray i CAPS Grupa HPCTools z dodala pidtrimku OpenACC u vidkritij kompilyator OpenUH zasnovanij na kodah Open64 U nacionalnij laboratoriyi buv rozroblenij kompilyator z vidkritimi vihidnimi tekstami OpenARC dlya movi Si sho pidtrimuye OpenACC versiyi 1 0 Bezkoshtovnij kompilyator GNU GCC pidtrimuye OpenACC pochinayuchi z versiyi 5 U versiyi 5 1 22 kvitnya 2015 roku bula dodana biblioteka pidtrimki openacc h GCC versiyi 5 1 planuyetsya do vklyuchennya v Ubuntu 15 10 zhovten 2015 roku kompilyator takozh dostupnij u skladi Fedora 22 beta VikoristannyaOsnovnim rezhimom vikoristannya OpenACC ye direktivi tochno takozh yak i v OpenMP 3 x abo bilsh rannomu OpenHMPP Biblioteka pidtrimki nadaye kilka dopomizhnih funkcij opisanih v zagolovnih fajlah openacc h dlya C C i openacc lib h dlya Fortran Direktivi Div takozh Direktiva programuvannya U OpenACC opisani rizni direktivi kompilyatora pragma acc parallel pragma acc kernels Obidvi Pragmi vikoristovuyutsya dlya viznachennya kodu dlya paralelnogo vikonannya Osnovna direktiva dlya viznachennya i kopiyuvannya danih pragma acc data Direktiva yaka viznachaye tip paralelizmu v regionah i pragma acc loop Dodatkovi direktivi pragma acc cache pragma acc update pragma acc declare pragma acc wait Funkciyi biblioteki Deyaki standartni funkciyi bibliotek sho realizuyut 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 Primitki The Inquirer 4 11 2011 Arhiv originalu za 17 listopada 2011 Procitovano 28 travnya 2015 angl Oficijnij sajt OpenACC 23 veresnya 2012 u Wayback Machine angl PDF OpenACC org Arhiv originalu PDF za 3 serpnya 2016 Procitovano 28 traven 2015 angl Vychisleniya na GPU s pomoshyu prostyh direktiv 4 listopada 2012 u Wayback Machine NVidia 2012 ros Div takozhC AMP OpenCL OpenMP Ce nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi