OpenACC

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 25. joulukuuta 2021 tarkistetusta versiosta . tarkastukset vaativat 2 muokkausta .
OpenACC
Tyyppi API
Sisään kirjoitettu C , C++ , Fortran
Käyttöjärjestelmä cross-platform
uusin versio 2.7 (marraskuu 2018)
Verkkosivusto openacc.org

OpenACC ( englanniksi  Open Accelerators ) on Cray , CAPS , Nvidia ja PGI yhdessä kehittämä ohjelmistostandardi rinnakkaisohjelmointiin . Standardi kuvaa joukon kääntäjädirektiivejä, jotka on suunniteltu yksinkertaistamaan heterogeenisten rinnakkaisten ohjelmien luomista käyttämällä sekä keskus- että graafista [1] [2] prosessoria.

Kuten aikaisempi OpenMP -standardi , OpenACC:tä käytetään ohjelmafragmenttien merkitsemiseen C :ssä , C++ :ssa ja Fortranissa . Ohjelmoija merkitsee joukkoa kääntäjäkäskyjä käyttäen koodiosat, jotka tulee suorittaa rinnakkain tai GPU:lla, osoittaa mitkä muuttujista ovat yleisiä ja mitkä säiekohtaisia ​​jne. [3] . Syntaksi on samanlainen kuin OpenMP [ 4 ] . OpenACC-standardi antaa ohjelmoijalle mahdollisuuden irtautua GPU:n alustuksen erityispiirteistä, tietojen siirtämisestä apuprosessorille ja sieltä pois jne.

Historia

OpenACC:n luojat ovat myös mukana OpenMP-standardien parissa ja aikovat laajentaa OpenMP:n tulevia versioita tukemaan tietojenkäsittelyn kiihdyttimiä. [5] [6] Marraskuussa 2012 julkaistiin tekninen raportti [7] , jossa keskusteltiin ja lisättiin tuki muille kuin Nvidian kiihdyttimille. [8] ISC'12 esitteli OpenACC:n Nvidia- , AMD- ja Intel - kiihdyttimissä julkaisematta suorituskykytietoja. [9]

Suunnitelmissa on yhdistää OpenACC:n ja OpenMP:n spesifikaatiot, mukaan lukien jälkimmäisessä tuki kiihdyttimien kanssa työskentelylle, mukaan lukien GPU:t [10] .

Luonnos standardin toisesta versiosta, OpenACC 2.0:sta, esiteltiin marraskuussa 2012 SC12-konferenssissa. [11] Tiedonsiirron ohjausohjeet, tuki eksplisiittisille funktiokutsuille ja erillinen käännös lisättiin standardiin.

Kääntäjän tuki

OpenACC:n toteutus on saatavilla kääntäjinä PGI:stä (versiosta 12.6 lähtien), Craylle ja CAPS:lle. [9] [12] [13]

Houstonin yliopiston HPCTools-ryhmä on lisännyt OpenACC-tuen Open64- koodeihin perustuvaan avoimen lähdekoodin OpenUH-kääntäjään [14] .

ORNL National Laboratory kehitti avoimen lähdekoodin OpenARC-kääntäjän [15] C-kielelle, joka tukee OpenACC-versiota 1.0.

Ilmainen kääntäjä GNU GCC tukee OpenACC:tä versiosta 5 lähtien. [16] [17] GCC 5 sisältyy Ubuntu 15.10:een, Fedora 22:een ja DragonFly BSD 4.2:een. GCC-versio 5.1 (22. huhtikuuta 2015) lisäsi openacc.h-tukikirjaston.

Käyttö

OpenACC:n pääkäyttötapa on käskyt, kuten OpenMP 3.x:ssä tai aiemmassa OpenHMPP :ssä [18] [19] . Tukikirjasto tarjoaa useita aputoimintoja, jotka on kuvattu otsikkotiedostoissa "openacc.h" C/C++:lle ja "openacc_lib.h" Fortranille; [20] .

Direktiivit

OpenACC kuvaa useita kääntäjäohjeita (#pragma), mukaan lukien [3] :

#pragma acc rinnakkais #pragma acc ytimet

Molempia direktiivejä käytetään koodin määrittämiseen rinnakkaiseen suoritukseen [21] [22]

Pääohje tietojen määrittämiseen ja kopioimiseen:

#pragma acc tiedot

Direktiivi, joka määrittelee samanaikaisuuden tyypin alueilla paralleljakernels

#pragma acc-silmukka

Lisämääräykset

#pragma acc cache #pragma acc update #pragma acc deklaroida #pragma acc odota

Kirjaston toiminnot

Joitakin OpenACC:tä toteuttavien kirjastojen vakiotoimintoja: 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_test_all(), acc_(acc_async), acc_async), acc_aall(), awaasync ), acc_on_device(), acc_malloc(), acc_free().

Katso myös

Muistiinpanot

  1. Nvidia, Cray, PGI ja CAPS julkaisevat OpenACC-ohjelmointistandardin rinnakkaislaskennassa (linkki ei ole käytettävissä) . The Inquirer (4. marraskuuta 2011). Haettu 9. toukokuuta 2015. Arkistoitu alkuperäisestä 17. marraskuuta 2011. 
  2. OpenACC:n virallinen verkkosivusto . Haettu 30. syyskuuta 2012. Arkistoitu alkuperäisestä 23. syyskuuta 2012.
  3. 12 OpenACC-standardiversio 2.0 . OpenACC.org . Haettu 14. tammikuuta 2014. Arkistoitu alkuperäisestä 3. elokuuta 2016.
  4. GPU-laskenta yksinkertaisilla ohjeilla Arkistoitu 4. marraskuuta 2012 Wayback Machinessa // NVidia, 2012
  5. Miten OpenACC-sovellusliittymä liittyy OpenMP-sovellusliittymään? . OpenACC.org . Käyttöpäivä: 14. tammikuuta 2014. Arkistoitu alkuperäisestä 16. tammikuuta 2014.
  6. Miten OpenACC-spesifikaatiot syntyivät? . OpenACC.org . Käyttöpäivä: 14. tammikuuta 2014. Arkistoitu alkuperäisestä 16. tammikuuta 2014.
  7. OpenMP Consortium julkaisee ensimmäisen teknisen raportin . OpenMP.org (5. marraskuuta 2012). Käyttöpäivä: 14. tammikuuta 2014. Arkistoitu alkuperäisestä 16. tammikuuta 2014.
  8. OpenMP SC12:ssa . OpenMP.org (29. elokuuta 2012). Käyttöpäivä: 14. tammikuuta 2014. Arkistoitu alkuperäisestä 16. tammikuuta 2014.
  9. 1 2 OpenACC-ryhmäraportteja Accelerator Programming Standard -tuen laajentaminen (linkki ei ole käytettävissä) . HPCwire (20. kesäkuuta 2012). Haettu 14. tammikuuta 2014. Arkistoitu alkuperäisestä 23. kesäkuuta 2012. 
  10. Mihin OpenACC-spesifikaatio perustuu? . Haettu 30. syyskuuta 2012. Arkistoitu alkuperäisestä 25. syyskuuta 2012.
  11. OpenACC-versio 2.0 lähetetty kommentoitavaksi . OpenACC.org (12. marraskuuta 2012). Käyttöpäivä: 14. tammikuuta 2014. Arkistoitu alkuperäisestä 16. tammikuuta 2014.
  12. OpenACC-standardi, joka auttaa kehittäjiä hyödyntämään GPU-laskentakiihdyttimiä (linkki ei ole käytettävissä) . Xbit laboratories (16. marraskuuta 2011). Käyttöpäivä: 14. tammikuuta 2014. Arkistoitu alkuperäisestä 16. tammikuuta 2014. 
  13. CAPS ilmoittaa täyden tuen OpenACC 2.0:lle kääntäjissään . HPCwire (14. marraskuuta 2013). Käyttöpäivä: 14. tammikuuta 2014. Arkistoitu alkuperäisestä 16. tammikuuta 2014.
  14. OpenUH-kääntäjä (downlink) . Haettu 4. maaliskuuta 2014. Arkistoitu alkuperäisestä 25. tammikuuta 2014. 
  15. OpenARC-kääntäjä . Haettu 4. marraskuuta 2014. Arkistoitu alkuperäisestä 4. marraskuuta 2014.
  16. OpenACC - GCC Wiki . Käyttöpäivä: 9. toukokuuta 2015. Arkistoitu alkuperäisestä 1. huhtikuuta 2015.
  17. Schwinge, Thomas Yhdistä nykyinen OpenACC-muutosjoukko gomp-4_0-branchista . gcc-postituslista (15. tammikuuta 2015). Käyttöönottopäivä: 15.1.2015.
  18. Dolbeau, Romain; Bihan, Stephane; Bodin, Francois (4. lokakuuta 2007). HMPP: Hybrid Multi-core Parallel Programming Environment (PDF) . Grafiikkaprosessointiyksiköiden yleisprosessointia käsittelevä työpaja . Arkistoitu alkuperäisestä (PDF) 2014-01-16 . Haettu 14. tammikuuta 2014 . Käytöstä poistettu parametri |deadlink=( ohje ) Arkistoitu 16. tammikuuta 2014 Wayback Machinessa
  19. Helppo GPU-rinnakkaisuus OpenACC:n kanssa . Dr. Dobb's (11. kesäkuuta 2012). Käyttöpäivä: 14. tammikuuta 2014. Arkistoitu alkuperäisestä 16. tammikuuta 2014.
  20. OpenACC API QuickReference Card, versio 1.0 . NVidia (marraskuu 2011). Käyttöpäivä: 14. tammikuuta 2014. Arkistoitu alkuperäisestä 16. tammikuuta 2014.
  21. OpenACC-ytimet ja rinnakkaisrakenteet . SMM-sisäpiiri (elokuu 2012). Käyttöpäivä: 14. tammikuuta 2014. Arkistoitu alkuperäisestä 20. heinäkuuta 2014.
  22. OpenACC-rinnakkaisosion VS-ytimet (downlink) . CAPS Enterprise Knowledge Base (3. tammikuuta 2013). Käyttöpäivä: 14. tammikuuta 2014. Arkistoitu alkuperäisestä 16. tammikuuta 2014. 

Linkit