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
Typ API
Zapsáno v C , C++ , Fortran
Operační systém multiplatformní
Nejnovější verze 2.7 (listopad 2018)
webová stránka openacc.org

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

  1. 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. 
  2. Oficiální stránky OpenACC . Získáno 30. září 2012. Archivováno z originálu 23. září 2012.
  3. 12 Standardní verze OpenACC 2.0 . OpenACC.org . Získáno 14. ledna 2014. Archivováno z originálu 3. srpna 2016.
  4. GPU computing s jednoduchými direktivami Archivováno 4. listopadu 2012 na Wayback Machine // NVidia, 2012
  5. Jak souvisí OpenACC API s OpenMP API? . OpenACC.org . Datum přístupu: 14. ledna 2014. Archivováno z originálu 16. ledna 2014.
  6. Jak vznikly specifikace OpenACC? . OpenACC.org . Datum přístupu: 14. ledna 2014. Archivováno z originálu 16. ledna 2014.
  7. 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.
  8. OpenMP na SC12 . OpenMP.org (29. srpna 2012). Datum přístupu: 14. ledna 2014. Archivováno z originálu 16. ledna 2014.
  9. 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. 
  10. Na čem je založena specifikace OpenACC? . Získáno 30. září 2012. Archivováno z originálu 25. září 2012.
  11. 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.
  12. 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. 
  13. 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.
  14. OpenUH Compiler (downlink) . Získáno 4. března 2014. Archivováno z originálu 25. ledna 2014. 
  15. OpenARC Compiler . Získáno 4. listopadu 2014. Archivováno z originálu 4. listopadu 2014.
  16. OpenACC - GCC Wiki . Datum přístupu: 9. května 2015. Archivováno z originálu 1. dubna 2015.
  17. 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.
  18. 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 . Použitý zastaralý parametr |deadlink=( nápověda ) Archivováno 16. ledna 2014 na Wayback Machine
  19. 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.
  20. OpenACC API QuickReference Card, verze 1.0 . NVidia (listopad 2011). Datum přístupu: 14. ledna 2014. Archivováno z originálu 16. ledna 2014.
  21. 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.
  22. 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. 

Odkazy