ÅbnACC

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 25. december 2021; checks kræver 2 redigeringer .
ÅbnACC
Type API
Skrevet i C , C++ , Fortran
Operativ system på tværs af platforme
nyeste version 2.7 (november 2018)
Internet side openacc.org

OpenACC (fra engelsk.  Open Accelerators ) er en softwarestandard for parallel programmering, udviklet i fællesskab af Cray , CAPS , Nvidia og PGI . Standarden beskriver et sæt kompileringsdirektiver designet til at forenkle skabelsen af ​​heterogene parallelle programmer ved brug af både den centrale og grafiske [1] [2] processor.

Ligesom den tidligere OpenMP -standard bruges OpenACC til at kommentere programfragmenter i C , C++ og Fortran . Ved hjælp af et sæt kompileringsdirektiver markerer programmøren kodesektioner, der skal udføres parallelt eller på GPU'en, angiver hvilke af variablerne der er fælles, og hvilke der er trådspecifikke osv. [3] . Syntaksen ligner OpenMP [ 4] . OpenACC-standarden giver programmøren mulighed for at abstrahere fra de særlige forhold ved initialiseringen af ​​GPU'en, spørgsmålene om overførsel af data til og fra coprocessoren osv.

Historie

Skaberne af OpenACC er også involveret i arbejdet med OpenMP-standarder og planlægger at udvide fremtidige versioner af OpenMP til at understøtte computeracceleratorer. [5] [6] I november 2012 blev en teknisk rapport [7] offentliggjort for at diskutere og tilføje understøttelse af ikke-Nvidia acceleratorer. [8] ISC'12 demonstrerede OpenACC på Nvidia- , AMD- og Intel - acceleratorer uden at offentliggøre ydeevnedata. [9]

Det er planlagt at kombinere specifikationerne for OpenACC og OpenMP, herunder i sidstnævnte støtte til at arbejde med acceleratorer, herunder GPU'er [10] .

Et udkast til den anden version af standarden, OpenACC 2.0, blev præsenteret i november 2012 på SC12-konferencen. [11] Dataoverførselskontroldirektiver, understøttelse af eksplicitte funktionskald og separat kompilering blev tilføjet til standarden.

Kompilerunderstøttelse

Implementering af OpenACC er tilgængelig i compilere fra PGI (siden version 12.6), Cray og CAPS. [9] [12] [13]

HPCTools-gruppen ved University of Houston har tilføjet OpenACC-understøttelse til open source OpenUH-kompileren baseret på Open64- koder [14] .

ORNL National Laboratory udviklede OpenARC open source-kompileren [15] til C-sproget, som understøtter OpenACC version 1.0.

Den gratis compiler GNU GCC understøtter OpenACC siden version 5. [16] [17] GCC 5 er inkluderet i Ubuntu 15.10, i Fedora 22, i DragonFly BSD 4.2. GCC version 5.1 (22. april 2015) tilføjede openacc.h-understøttelsesbiblioteket.

Brug

Hovedbrugstilstanden for OpenACC er direktiver, ligesom i OpenMP 3.x eller tidligere OpenHMPP , [18] [19] . Supportbiblioteket giver adskillige hjælpefunktioner, beskrevet i header-filerne "openacc.h" for C/C++ og "openacc_lib.h" for Fortran; [20] .

Direktiver

OpenACC beskriver forskellige compiler-direktiver (#pragma), herunder [3] :

#pragma acc parallel #pragma acc kernels

Begge direktiver bruges til at definere kode til parallel eksekvering [21] [22]

Hoveddirektivet for definition og kopiering af data:

#pragma acc data

Et direktiv, der definerer typen af ​​samtidighed i regioner parallelogkernels

#pragma acc loop

Yderligere direktiver

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

Biblioteksfunktioner

Nogle standardfunktioner for biblioteker, der implementerer 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(), a_ccit(), a_utallin(), a_cwait(), a_utallin(), a_cwait(), a_cwait(), ), acc_on_device(), acc_malloc(), acc_free().

Se også

Noter

  1. Nvidia, Cray, PGI og CAPS lancerer 'OpenACC'-programmeringsstandarden for parallel databehandling (link ikke tilgængeligt) . The Inquirer (4. november 2011). Hentet 9. maj 2015. Arkiveret fra originalen 17. november 2011. 
  2. OpenACC officielle hjemmeside . Hentet 30. september 2012. Arkiveret fra originalen 23. september 2012.
  3. 12 OpenACC standard version 2.0 . OpenACC.org . Hentet 14. januar 2014. Arkiveret fra originalen 3. august 2016.
  4. GPU-databehandling med simple direktiver Arkiveret 4. november 2012 på Wayback Machine // NVidia, 2012
  5. Hvordan relaterer OpenACC API til OpenMP API? . OpenACC.org . Dato for adgang: 14. januar 2014. Arkiveret fra originalen 16. januar 2014.
  6. Hvordan opstod OpenACC-specifikationerne? . OpenACC.org . Dato for adgang: 14. januar 2014. Arkiveret fra originalen 16. januar 2014.
  7. OpenMP-konsortiet udgiver den første tekniske rapport . OpenMP.org (5. november 2012). Dato for adgang: 14. januar 2014. Arkiveret fra originalen 16. januar 2014.
  8. OpenMP på SC12 . OpenMP.org (29. august 2012). Dato for adgang: 14. januar 2014. Arkiveret fra originalen 16. januar 2014.
  9. 1 2 OpenACC Group-rapporter udvider understøttelse af acceleratorprogrammeringsstandard (link ikke tilgængeligt) . HPCwire (20. juni 2012). Hentet 14. januar 2014. Arkiveret fra originalen 23. juni 2012. 
  10. Hvad er OpenACC-specifikationen baseret på? . Hentet 30. september 2012. Arkiveret fra originalen 25. september 2012.
  11. OpenACC Version 2.0 Sendt til kommentar . OpenACC.org (12. november 2012). Dato for adgang: 14. januar 2014. Arkiveret fra originalen 16. januar 2014.
  12. OpenACC Standard for at hjælpe udviklere med at drage fordel af GPU Compute Accelerators (link ikke tilgængeligt) . Xbit laboratorier (16. november 2011). Dato for adgang: 14. januar 2014. Arkiveret fra originalen 16. januar 2014. 
  13. CAPS annoncerer fuld understøttelse af OpenACC 2.0 i dets kompilatorer . HPCwire (14. november 2013). Dato for adgang: 14. januar 2014. Arkiveret fra originalen 16. januar 2014.
  14. OpenUH Compiler (downlink) . Hentet 4. marts 2014. Arkiveret fra originalen 25. januar 2014. 
  15. OpenARC Compiler . Hentet 4. november 2014. Arkiveret fra originalen 4. november 2014.
  16. OpenACC - GCC Wiki . Dato for adgang: 9. maj 2015. Arkiveret fra originalen 1. april 2015.
  17. Schwinge, Thomas Merge nuværende sæt af OpenACC-ændringer fra gomp-4_0-branch . gcc-mailingliste (15. januar 2015). Dato for adgang: 15. januar 2015.
  18. Dolbeau, Romain; Bihan, Stephane; Bodin, Francois (4. oktober 2007). HMPP: Et hybridt multikernet parallelt programmeringsmiljø (PDF) . Workshop om generel behandling af grafikbehandlingsenheder . Arkiveret fra originalen (PDF) 2014-01-16 . Hentet 14. januar 2014 . Forældet parameter brugt |deadlink=( hjælp ) Arkiveret 16. januar 2014 på Wayback Machine
  19. Nem GPU-parallelisme med OpenACC . Dr. Dobb's (11. juni 2012). Dato for adgang: 14. januar 2014. Arkiveret fra originalen 16. januar 2014.
  20. OpenACC API QuickReference Card, version 1.0 . NVidia (november 2011). Dato for adgang: 14. januar 2014. Arkiveret fra originalen 16. januar 2014.
  21. OpenACC-kerner og parallelle konstruktioner . BGB-insider (august 2012). Dato for adgang: 14. januar 2014. Arkiveret fra originalen 20. juli 2014.
  22. OpenACC parallel sektion VS kerner (downlink) . CAPS enterprise Knowledge Base (3. januar 2013). Dato for adgang: 14. januar 2014. Arkiveret fra originalen 16. januar 2014. 

Links