OpenACC
Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od
verze recenzované 25. prosince 2021; kontroly vyžadují
2 úpravy .
OpenACC (z angl. Open Accelerators ) je softwarový standard pro paralelní programování, vyvinutý společně společnostmi Cray , CAPS , Nvidia a PGI . Norma popisuje sadu direktiv kompilátoru navržených pro zjednodušení tvorby heterogenních paralelních programů pomocí centrálního i grafického [1] [2] procesoru.
Stejně jako dřívější standard OpenMP se OpenACC používá k anotaci fragmentů programů v C , C++ a Fortran . Pomocí sady direktiv kompilátoru programátor označí části kódu, které by se měly spouštět paralelně nebo na GPU, označuje, které z proměnných jsou společné a které jsou specifické pro vlákna atd. [3] . Syntaxe je podobná OpenMP [ 4] . Standard OpenACC umožňuje programátorovi abstrahovat od zvláštností inicializace GPU, problematiky přenosu dat do a z koprocesoru atd.
Historie
Tvůrci OpenACC jsou také zapojeni do práce na standardech OpenMP a plánují rozšířit budoucí verze OpenMP o podporu výpočetních akcelerátorů. [5] [6] V listopadu 2012 byla zveřejněna technická zpráva [7] k diskuzi a přidání podpory pro akcelerátory jiných výrobců než Nvidia. [8] ISC'12 předvedl OpenACC na akcelerátorech Nvidia , AMD a Intel bez zveřejnění údajů o výkonu. [9]
Plánuje se spojení specifikací OpenACC a OpenMP, včetně podpory pro práci s akcelerátory, včetně GPU [10] .
Návrh druhé verze standardu, OpenACC 2.0, byl představen v listopadu 2012 na konferenci SC12. [11] Do standardu byly přidány směrnice pro řízení přenosu dat, podpora pro explicitní volání funkcí a samostatná kompilace.
Podpora kompilátoru
Implementace OpenACC je dostupná v kompilátorech od PGI (od verze 12.6), Cray a CAPS. [9] [12] [13]
Skupina HPCTools na University of Houston přidala podporu OpenACC do open source kompilátoru OpenUH založeného na kódech Open64 [14] .
Národní laboratoř ORNL vyvinula OpenARC open source kompilátor [15] pro jazyk C, který podporuje OpenACC verze 1.0.
Bezplatný kompilátor GNU GCC podporuje OpenACC od verze 5. [16] [17] GCC 5 je součástí Ubuntu 15.10, ve Fedoře 22, v DragonFly BSD 4.2. GCC verze 5.1 (22. dubna 2015) přidala podpůrnou knihovnu openacc.h.
Použití
Hlavním režimem použití OpenACC jsou direktivy, stejně jako v OpenMP 3.x nebo dřívějších OpenHMPP , [18] [19] . Knihovna podpory poskytuje několik pomocných funkcí, popsaných v hlavičkových souborech "openacc.h" pro C/C++ a "openacc_lib.h" pro Fortran; [20] .
Směrnice
OpenACC popisuje různé direktivy kompilátoru (#pragma), včetně [3] :
#pragma acc paralelní
jádra #pragma acc
Obě směrnice se používají k definování kódu pro paralelní provádění [21] [22]
Hlavní směrnice pro definování a kopírování dat:
#pragma acc data
Směrnice, která definuje typ souběhu v regionech parallelakernels
#pragma acc smyčka
Další směrnice
#pragma acc cache
#pragma acc update #pragma acc deklarovat #pragma acc čekat
Funkce knihovny
Některé standardní funkce knihoven implementujících 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(),sync_async_test_all(),sync_waitinitall_test_all(), acc_waitinitall_test_all(), acc_waitinitall_test_all() ), acc_on_device(), acc_malloc(), acc_free().
Viz také
Poznámky
- ↑ Nvidia, Cray, PGI a CAPS spouští programovací standard 'OpenACC' pro paralelní výpočty (odkaz není k dispozici) . The Inquirer (4. listopadu 2011). Získáno 9. května 2015. Archivováno z originálu 17. listopadu 2011. (neurčitý)
- ↑ Oficiální stránky OpenACC . Získáno 30. září 2012. Archivováno z originálu 23. září 2012. (neurčitý)
- ↑ 12 Standardní verze OpenACC 2.0 . OpenACC.org . Získáno 14. ledna 2014. Archivováno z originálu 3. srpna 2016. (neurčitý)
- ↑ GPU computing s jednoduchými direktivami Archivováno 4. listopadu 2012 na Wayback Machine // NVidia, 2012
- ↑ Jak souvisí OpenACC API s OpenMP API? . OpenACC.org . Datum přístupu: 14. ledna 2014. Archivováno z originálu 16. ledna 2014. (neurčitý)
- ↑ Jak vznikly specifikace OpenACC? . OpenACC.org . Datum přístupu: 14. ledna 2014. Archivováno z originálu 16. ledna 2014. (neurčitý)
- ↑ Konsorcium OpenMP zveřejnilo první technickou zprávu . OpenMP.org (5. listopadu 2012). Datum přístupu: 14. ledna 2014. Archivováno z originálu 16. ledna 2014. (neurčitý)
- ↑ OpenMP na SC12 . OpenMP.org (29. srpna 2012). Datum přístupu: 14. ledna 2014. Archivováno z originálu 16. ledna 2014. (neurčitý)
- ↑ 1 2 OpenACC Group Reports Rozšíření podpory pro Accelerator Programming Standard (odkaz není dostupný) . HPCwire (20. června 2012). Získáno 14. ledna 2014. Archivováno z originálu 23. června 2012. (neurčitý)
- ↑ Na čem je založena specifikace OpenACC? . Získáno 30. září 2012. Archivováno z originálu 25. září 2012. (neurčitý)
- ↑ OpenACC verze 2.0 Publikováno pro komentář . OpenACC.org (12. listopadu 2012). Datum přístupu: 14. ledna 2014. Archivováno z originálu 16. ledna 2014. (neurčitý)
- ↑ OpenACC Standard pomáhá vývojářům využívat GPU Compute Accelerator (odkaz není k dispozici) . Laboratoře Xbit (16. listopadu 2011). Datum přístupu: 14. ledna 2014. Archivováno z originálu 16. ledna 2014. (neurčitý)
- ↑ CAPS oznamuje plnou podporu OpenACC 2.0 ve svých kompilátorech . HPCwire (14. listopadu 2013). Datum přístupu: 14. ledna 2014. Archivováno z originálu 16. ledna 2014. (neurčitý)
- ↑ OpenUH Compiler (downlink) . Získáno 4. března 2014. Archivováno z originálu 25. ledna 2014. (neurčitý)
- ↑ OpenARC Compiler . Získáno 4. listopadu 2014. Archivováno z originálu 4. listopadu 2014. (neurčitý)
- ↑ OpenACC - GCC Wiki . Datum přístupu: 9. května 2015. Archivováno z originálu 1. dubna 2015. (neurčitý)
- ↑ Schwinge, Thomas Sloučit aktuální sadu změn OpenACC z větve gomp-4_0 . gcc mailing list (15. ledna 2015). Datum přístupu: 15. ledna 2015. (neurčitý)
- ↑ Dolbeau, Romain; Bihan, Stephane; Bodin, Francois (4. října 2007). HMPP: Hybridní vícejádrové paralelní programovací prostředí (PDF) . Workshop o obecném zpracování na grafických procesorových jednotkách . Archivováno z originálu (PDF) dne 2014-01-16 . Načteno 14. ledna 2014 . Archivováno 16. ledna 2014 na Wayback Machine
- ↑ Snadná paralelnost GPU s OpenACC . Dr. Dobb's (11. června 2012). Datum přístupu: 14. ledna 2014. Archivováno z originálu 16. ledna 2014. (neurčitý)
- ↑ OpenACC API QuickReference Card, verze 1.0 . NVidia (listopad 2011). Datum přístupu: 14. ledna 2014. Archivováno z originálu 16. ledna 2014. (neurčitý)
- ↑ OpenACC jádra a paralelní konstrukce . Zasvěcenec CHZO (srpen 2012). Datum přístupu: 14. ledna 2014. Archivováno z originálu 20. července 2014. (neurčitý)
- ↑ VS jádra paralelní sekce OpenACC (downlink) . Podniková znalostní báze CAPS (3. ledna 2013). Datum přístupu: 14. ledna 2014. Archivováno z originálu 16. ledna 2014. (neurčitý)
Odkazy