ISPC kompilaatori 1.31 väljaanne, mida arendab Intel C keele laienduste SPMD jaoks.

Intel on avaldanud ISPC 1.31 (Implicit SPMD Program Compiler) kompilaatori, mis on mõeldud C keeles kirjutatud koodi koostamiseks, kasutades paralleelse programmeerimise SPMD (Single Program, Multiple Data) laiendusi, mis võimaldavad sama programmi mitme eksemplari paralleelset täitmist erinevate sisendandmete komplektidega. Projekti kood on kirjutatud C++ keeles ja seda levitatakse BSD litsentsi alusel. Töö toetatakse Linuxis, Windowsis, macOS-is ja FreeBSD-s.

C-programmid, millel on SPMD laiendused, kompileeritakse SIMD arvutusplokkide jaoks, mida pakuvad CPU ja GPU, mis võimaldab kasutada SIMD vektorisüsteeme ilma madala taseme optimeerimisteta ja SIMD juhiste otsest rakendamist koodis. Paralleelseid funktsioone kirjutades kasutatakse tuttavat C keele süntaksit ja idiome — SPMD-funktsioonid suhtlevad otse C/C++ keeles kirjutatud funktsioonide ja struktuuridega. Programmide silumiseks võivad kasutada olemasolevaid silumisseadeid.

ISPC koodi genereerimise ja optimeerimise taustal kasutatakse LLVM infrastruktuuri. Toetatakse x86 (SSE2, SSE4, AVX, AVX2, AVX512) ja ARM (NEON) vektorinstruktsioone, samuti GPU (Intel Gen9 ja Xe) arvutuste väljastamist. SSE vektorplokkide arhitektuuridel, mis töötlevad 4 elementi korraga, võimaldab ISPC saavutada programmide täitmise kiirus kuni 3 korda või enam, samas kui AVX vektorplokkide arhitektuuridel, mis töötlevad 8 elementi korraga, võib kiirus tõusta 5-6 korda. Lisaks vektorploki suurusele tagab skaleeritavuse ka erinevate protsessorituumade kasutamine.

Versioonis ISPC 1.31 lisatud põhimuudatused:

  • Lisatud eksperimentaalne tugi 64-bitise little-endian PowerPC arhitektuuri (ppc64le) jaoks. Vaikimisi toimub kokkupanek POWER ISA 2.7 (POWER8+) koos VSX (Vector Scalar Extension) laiendustega.
  • Uued kogumise sihid avx10.2nvl-x4, avx10.2nvl-x8, avx10.2nvl-x16, avx10.2nvl-x32 ja avx10.2nvl-x64 on lisatud, et toetada AVX10.2 (Advanced Vector Extensions) ja APX (Advanced Performance Extensions) laiendatud juhiste komplekti Intel Nova Lake mikroarhitektuuri põhinevatele protsessoritele.
  • Kogumiste eesmärkide valik on saadaval juhtimisseadmes, toetades AMX (avx512spr, avx512gnr, avx10.2dmr) vaid siis, kui operatsioonisüsteem ja CPU tõeliselt toetavad AMX (Advanced Matrix Extensions) laiendusi.
  • Lisatud on valik «—opt=disable-apx» üksikute x86 APX funktsioonide (egpr, ndd, push2pop2, ppx, ccmp, cf, nf, zu ja jmpabs) valikuliseks keelamiseks, mis on vaikimisi aktiivsed APX toetavates kogumistes nagu avx10.2dmr ja avx10.2nvl.
  • Lisatud on tasakaalustatud («balanced») ja agressiivne («aggressive») matemaatiliste arvutuste optimeerimise režiimid, mis aktiveeritakse valiku «—opt=fast-math» kaudu ning on agressiivsemad võrreldes vaikimisi rakendatava optimeerimisrežiimiga.
  • Standardsesse raamatukokku on lisatud uusi matemaatilisi funktsioone:
    erf, erfc (Gaussi viga funktsioonid), expm1 (täpne arvutus «exp(x)-1»), log1p («log(1+x)»), sinh, cosh ja tanh (hüperboolne siinus, kosinus ja tangens). Funktsioonide asin, acos, atan ja log täpsus ja tulemuslikkus on oluliselt tõusnud.
  • 32-bitiste shuffle operatsioonide tulemuslikkus on oluliselt paranenud kogumise sihtmärgile avx2-i32x16 ning popcnt arvutuste jaoks sihtmärkidele avx2-i8x32, avx512skx-x32 ja avx512skx-x64.
  • LLVM tööriist komplekt on uuendatud arenduses olevale harule 23.

Allikas: opennet.ru

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