Intel avaldas ISPC 1.24 kompilaatori, mis rakendab SPMD-paralleelset modelleerimist.

Intel on avaldanud kompilaatori ISPC 1.24 (Implicit SPMD Program Compiler), mis võimaldab C keeles koodi koostamist, laiendades toetust SPMD (Single Program, Multiple Data) paralleelsesse programmeerimisse meetodile, kus mitu sama programmi eksemplari koordinaatide erinevate sisendandmetega käitatakse paralleelselt. Projekti kood on kirjutatud C++ keeles ja seda jaotatakse BSD litsentsi alusel. Toetatakse töötamist Linuxis, Windowsis, macOS-s ja FreeBSD-s.

C-programm, kus on lisandused SPMD, kompileeritakse SIMD arvutusblokkide täitmiseks, mida pakuvad CPU ja GPU, võimaldades programmides kasutada SIMD vektoriseerimise mehhanisme ilma madala taseme optimeerimiste ja SIMD käskude otsese rakendamiseta koodis. Paralleelselt teostatavate funktsioonide kirjutamiseks kasutatakse tuttavat C süntaksit ja iidoleid. Need SPMD funktsioonid võivad integreeruda C/C++ rakendustega ja otse suhelda nende funktsioonide ja struktuuridega. Programmide silumiseks võivad kasutada olemasolevaid silureid.

Koodi genereerimise ja optimeerimise taustaks kasutatakse LLVM infrastruktuuri. Toetatakse x86 (SSE2, SSE4, AVX, AVX2, AVX512) ja ARM (NEON) vektorivaatusi, samuti arvutuste suunamist GPU-le (Intel Gen9 ja Xe). SSE vektoriblokkide arhitektuurides, mis töötlevad korraga 4 elementi, võimaldab ISPC-i rakendamine programmini jõudmiskiiruselt 3 ja rohkem korda kiirendada, samas kui AVX vektoriblokkidega, mis töötlevad 8 elementi korraga, võib kiirus tõusta 5-6 korda. Seda saavutatakse lisaks vektoribloki suurusele ka erinevates protsessorituumades töötamise kaudu.

ISPC versiooni 1.24 peamised uuendused:

  • Täiendatud on tüüpide arvu argumentide tugi funktsioonide mallides. Nüüd on malliparametrites lubatud kasutada ühist täisarvu ja loendatav väärtusi (silt «uniform»).
  • Lisatud on dot-funktsioonid allkirjastatud ja allkirjastamata tüüpide int8 ja int16 jaoks, mis kasutavad AVX-VNNI ja AVX512-VNN käsklusi.
  • Lisatud on makrode määratlused, mis määratlevad numbrite mõõtmete piirangud.
  • Uued sihtplatvormid: avx2vnni-i32x4, avx2vnni-i32x8, avx2vnni-i32x16, millel on AVX-VNNI käsu toetamine, ja avx512icl-x4, avx512icl-x8, avx512icl-x16, avx512icl-x32, avx512icl-x64, millel on AVX512-VNNI käsu toetamine.
  • Probleemid liigsete vektorkäskude kasutamisega GPU koodi genereerimisel on lahendatud.
  • Käsurea lipp «—pic» on viidud kooskõlla lippudega «-fpic» Clangis ja GCC-s, ning lipp «—PIC» kooskõlastatakse «-fPIC»-ga.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster