Megjelent az Intel által az SPMD kiterjesztésű C nyelvre kifejlesztett ISPC 1.31 fordító

Az Intel kiadta az ISPC 1.31-ot (Implicit SPMD Program Compiler), amely C kód SPMD (Single Program, Multiple Data) párhuzamos programozási kiterjesztésekkel történő fordítására szolgál, amelyek lehetővé teszik egyetlen program több példányának párhuzamos végrehajtását különböző bemeneti adatkészletekkel. A projektkód C++ nyelven íródott, és BSD licenc alatt kerül terjesztésre. Támogatja a következőket: Linux, Windows, macOS és a FreeBSD-t.

Az SPMD kiterjesztésű C programokat a CPU és a GPU által biztosított SIMD számítási egységeken való végrehajtásra fordítják, ami lehetővé teszi a SIMD vektorizációs mechanizmusok használatát alacsony szintű optimalizálás és a kódban lévő SIMD utasítások kifejezett használata nélkül. A párhuzamosítható függvények írásához a C nyelv ismert szintaxisát és idiómáit használják – az SPMD függvények közvetlenül kölcsönhatásba lépnek a C/C++ nyelven írt függvényekkel és struktúrákkal. A meglévő hibakeresők használhatók a programok hibakeresésére.

Az ISPC az LLVM infrastruktúrát használja háttérként a kódgeneráláshoz és -optimalizáláshoz. Az x86 (SSE2, SSE4, AVX, AVX2, AVX512) és az ARM (NEON) vektorutasítások támogatottak, valamint a számítások GPU-oldalra történő áttöltése (Intel Gen9 és Xe). Egyszerre 4 elemet feldolgozó SSE vektorblokkokkal rendelkező architektúrákon az ISPC használata lehetővé teszi a programvégrehajtás 3-szoros vagy többszöri gyorsítását, az egyszerre 8 elemet feldolgozó AVX vektorblokkokkal rendelkező architektúrákon pedig a gyorsulás elérheti az 5-öt is. 6 alkalommal. Sőt, a skálázást a vektorblokk méretén túl a különböző processzormagokon történő végrehajtás is biztosítja.

Az ISPC 1.31-es verziójában hozzáadott legfontosabb újítások:

  • Добавлена экспериментальная поддержка 64-разрядной little-endian архитектуры PowerPC (ppc64le). По умолчанию осуществляется сборка для POWER ISA 2.7 (POWER8+) с расширениями VSX (Vector Scalar Extension).
  • Добавлены новые сборочные цели avx10.2nvl-x4, avx10.2nvl-x8, avx10.2nvl-x16, avx10.2nvl-x32 и avx10.2nvl-x64, реализующие поддержку расширенный наборов инструкций AVX10.2 (Advanced Vector Extensions) и APX (Advanced Performance Extensions) для процессоров на базе микроархитектуры Intel Nova Lake.
  • В диспетчеризаторе обеспечен выбор вариантов сборочных целей с поддержкой AMX (avx512spr, avx512gnr, avx10.2dmr) только при реальной поддержке расширений AMX (Advanced Matrix Extensions) в операционной системе и CPU.
  • Добавлена опция «—opt=disable-apx» для выборочного отключения отдельных возможностей x86 APX (egpr, ndd, push2pop2, ppx, ccmp, cf, nf, zu и jmpabs), которые по умолчанию включены в поддерживающих APX сборочных целях, таких как avx10.2dmr и avx10.2nvl.
  • Добавлены сбалансированный («balanced») и агрессивный («aggressive») режимы оптимизации математических вычислений, включаемые через опцию «—opt=fast-math» и более агрессивные по сравнению с применяемым по умолчанию режимом оптимизации.
  • В сандартную библиотеку добавлены новые математические функции:
    erf, erfc (функции ошибок Гаусса), expm1 (точное вычисление «exp(x)-1»), log1p («log(1+x)»), sinh, cosh и tanh (гиперболические синус, косинус и тангенс). Повышена точность и производительность функций asin, acos, atan и log.
  • Значительно повышена производительность 32-битных операций перестановки (shuffles) для сборочной цели avx2-i32x16 и вычислений popcnt для целей avx2-i8x32, avx512skx-x32 и avx512skx-x64.
  • Инструментарий LLVM обновлён до находящейся в разработке ветки 23.

Forrás: opennet.ru

Vásároljon megbízható tárhelyet DDoS védelemmel, VPS VDS szerverekkel rendelkező webhelyekhez 🔥 Vásároljon megbízható weboldal tárhelyet DDoS védelemmel, VPS VDS szerverekkel | ProHoster