ÖppnaACC

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 25 december 2021; kontroller kräver 2 redigeringar .
ÖppnaACC
Sorts API
Skrivet i C , C++ , Fortran
Operativ system plattformsoberoende
senaste versionen 2.7 (november 2018)
Hemsida openacc.org

OpenACC (från engelska.  Open Accelerators ) är en mjukvarustandard för parallell programmering, utvecklad gemensamt av Cray , CAPS , Nvidia och PGI . Standarden beskriver en uppsättning kompilatordirektiv utformade för att förenkla skapandet av heterogena parallella program med både centrala och grafiska [1] [2] processorer.

Liksom den tidigare OpenMP -standarden används OpenACC för att kommentera programfragment i C , C++ och Fortran . Med hjälp av en uppsättning kompilatordirektiv markerar programmeraren kodsektioner som ska köras parallellt eller på GPU:n, indikerar vilka av variablerna som är vanliga och vilka som är trådspecifika, etc. [3] . Syntaxen liknar OpenMP [ 4] . OpenACC-standarden tillåter programmeraren att abstrahera från särdragen med initieringen av GPU:n, frågorna om att överföra data till och från samprocessorn, etc.

Historik

Skaparna av OpenACC är också involverade i arbetet med OpenMP-standarder och planerar att utöka framtida versioner av OpenMP för att stödja datoracceleratorer. [5] [6] I november 2012 publicerades en teknisk rapport [7] för att diskutera och lägga till stöd för icke-Nvidia-acceleratorer. [8] ISC'12 demonstrerade OpenACC på Nvidia- , AMD- och Intel - acceleratorer utan att publicera prestandadata. [9]

Det är planerat att kombinera specifikationerna för OpenACC och OpenMP, inklusive i det senare stödet för att arbeta med acceleratorer, inklusive GPU: er [10] .

Ett utkast till den andra versionen av standarden, OpenACC 2.0, presenterades i november 2012 på SC12-konferensen. [11] Direktiv för kontroll av dataöverföring, stöd för explicita funktionsanrop och separat kompilering lades till standarden.

Kompilatorstöd

Implementering av OpenACC finns i kompilatorer från PGI (sedan version 12.6), Cray och CAPS. [9] [12] [13]

HPCTools-gruppen vid University of Houston har lagt till OpenACC-stöd till OpenUH-kompilatorn med öppen källkod baserad på Open64- koder [14] .

ORNL National Laboratory utvecklade OpenARC-kompilatorn med öppen källkod [15] för C-språket, som stöder OpenACC version 1.0.

Den kostnadsfria kompilatorn GNU GCC stöder OpenACC sedan version 5. [16] [17] GCC 5 ingår i Ubuntu 15.10, i Fedora 22, i DragonFly BSD 4.2. GCC version 5.1 (22 april 2015) lade till openacc.h-stödbiblioteket.

Användning

Huvudanvändningsläget för OpenACC är direktiv, precis som i OpenMP 3.x eller tidigare OpenHMPP , [18] [19] . Stödbiblioteket tillhandahåller flera hjälpfunktioner, som beskrivs i rubrikfilerna "openacc.h" för C/C++ och "openacc_lib.h" för Fortran; [20] .

Direktiv

OpenACC beskriver olika kompilatordirektiv (#pragma), inklusive [3] :

#pragma acc parallella #pragma acc kärnor

Båda direktiven används för att definiera kod för parallell exekvering [21] [22]

Huvuddirektivet för att definiera och kopiera data:

#pragma acc data

Ett direktiv som definierar typen av samtidighet i regioner parallelochkernels

#pragma acc loop

Ytterligare direktiv

#pragma acc cache #pragma acc update #pragma acc declare #pragma acc wait

Biblioteksfunktioner

Vissa standardfunktioner i bibliotek som implementerar 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_testa_all(), a_cc(a_sync_testa_all(), a_cc(), a_ccallit() ), acc_on_device(), acc_malloc(), acc_free().

Se även

Anteckningar

  1. Nvidia, Cray, PGI och CAPS lanserar "OpenACC"-programmeringsstandard för parallell beräkning (länk ej tillgänglig) . The Inquirer (4 november 2011). Hämtad 9 maj 2015. Arkiverad från originalet 17 november 2011. 
  2. Officiell webbplats för OpenACC . Hämtad 30 september 2012. Arkiverad från originalet 23 september 2012.
  3. 12 OpenACC standardversion 2.0 . OpenACC.org . Hämtad 14 januari 2014. Arkiverad från originalet 3 augusti 2016.
  4. GPU-datorer med enkla direktiv Arkiverad 4 november 2012 på Wayback Machine // NVidia, 2012
  5. Hur förhåller sig OpenACC API till OpenMP API? . OpenACC.org . Tillträdesdatum: 14 januari 2014. Arkiverad från originalet 16 januari 2014.
  6. Hur uppstod OpenACC-specifikationerna? . OpenACC.org . Tillträdesdatum: 14 januari 2014. Arkiverad från originalet 16 januari 2014.
  7. OpenMP-konsortiet släpper den första tekniska rapporten . OpenMP.org (5 november 2012). Tillträdesdatum: 14 januari 2014. Arkiverad från originalet 16 januari 2014.
  8. OpenMP på SC12 . OpenMP.org (29 augusti 2012). Tillträdesdatum: 14 januari 2014. Arkiverad från originalet 16 januari 2014.
  9. 1 2 OpenACC Group rapporterar utökat stöd för acceleratorprogrammeringsstandard (länk ej tillgänglig) . HPCwire (20 juni 2012). Hämtad 14 januari 2014. Arkiverad från originalet 23 juni 2012. 
  10. Vad är OpenACC-specifikationen baserad på? . Hämtad 30 september 2012. Arkiverad från originalet 25 september 2012.
  11. OpenACC Version 2.0 Postat för kommentar . OpenACC.org (12 november 2012). Tillträdesdatum: 14 januari 2014. Arkiverad från originalet 16 januari 2014.
  12. OpenACC Standard för att hjälpa utvecklare att dra fördel av GPU Compute Accelerators (länk ej tillgänglig) . Xbit laboratories (16 november 2011). Tillträdesdatum: 14 januari 2014. Arkiverad från originalet 16 januari 2014. 
  13. CAPS tillkännager fullt stöd för OpenACC 2.0 i dess kompilatorer . HPCwire (14 november 2013). Tillträdesdatum: 14 januari 2014. Arkiverad från originalet 16 januari 2014.
  14. OpenUH-kompilator (nedlänk) . Hämtad 4 mars 2014. Arkiverad från originalet 25 januari 2014. 
  15. OpenARC-kompilator . Hämtad 4 november 2014. Arkiverad från originalet 4 november 2014.
  16. OpenACC - GCC Wiki . Tillträdesdatum: 9 maj 2015. Arkiverad från originalet 1 april 2015.
  17. Schwinge, Thomas Slå samman nuvarande uppsättning OpenACC-ändringar från gomp-4_0-branch . gcc e-postlista (15 januari 2015). Tillträdesdatum: 15 januari 2015.
  18. Dolbeau, Romain; Bihan, Stephane; Bodin, Francois (4 oktober 2007). HMPP: En hybrid flerkärnig parallell programmeringsmiljö (PDF) . Workshop om allmän bearbetning av grafiska bearbetningsenheter . Arkiverad från originalet (PDF) 2014-01-16 . Hämtad 14 januari 2014 . Utfasad parameter används |deadlink=( hjälp ) Arkiverad 16 januari 2014 på Wayback Machine
  19. Enkel GPU-parallellism med OpenACC . Dr. Dobb's (11 juni 2012). Tillträdesdatum: 14 januari 2014. Arkiverad från originalet 16 januari 2014.
  20. OpenACC API QuickReference Card, version 1.0 . NVidia (november 2011). Tillträdesdatum: 14 januari 2014. Arkiverad från originalet 16 januari 2014.
  21. OpenACC-kärnor och parallella konstruktioner . PGI insider (augusti 2012). Datum för åtkomst: 14 januari 2014. Arkiverad från originalet den 20 juli 2014.
  22. OpenACC parallellsektion VS-kärnor (nedlänk) . CAPS enterprise Knowledge Base (3 januari 2013). Tillträdesdatum: 14 januari 2014. Arkiverad från originalet 16 januari 2014. 

Länkar