Intel parantos medalkeun ISPC 1.31 (Implicit SPMD Program Compiler), anu dirancang pikeun ngompilasi kode C nganggo ekstensi pamrograman paralel SPMD (Single Program, Multiple Data), anu ngamungkinkeun palaksanaan paralel tina sababaraha instansi program tunggal kalayan sét data input anu béda. Kode proyék ditulis dina C++ sareng disebarkeun dina lisénsi BSD. Éta ngadukung Linux, Windows, macOS sareng FreeBSD.
Program C sareng ekstensi SPMD disusun pikeun dijalankeun dina unit komputasi SIMD anu disayogikeun ku CPU sareng GPU, anu ngamungkinkeun anjeun ngagunakeun mékanisme vectorization SIMD tanpa optimasi tingkat rendah sareng panggunaan eksplisit petunjuk SIMD dina kode. Pikeun nulis fungsi parallelizable, sintaksis akrab jeung idiom basa C dipaké - fungsi SPMD langsung berinteraksi sareng fungsi jeung struktur ditulis dina C/C++. Debugger anu aya tiasa dianggo pikeun nga-debug program.
ISPC ngagunakeun infrastruktur LLVM salaku backend pikeun kode generasi sarta optimasi. x86 (SSE2, SSE4, AVX, AVX2, AVX512) jeung ARM (NEON) instruksi vektor dirojong, kitu ogé offloading itungan ka sisi GPU (Intel Gen9 na Xe). Dina arsitéktur kalayan blok vektor SSE ngolah 4 elemen dina hiji waktu, pamakéan ISPC ngamungkinkeun pikeun ngahontal akselerasi palaksanaan program ku 3 kali atawa leuwih, sarta dina arsitéktur jeung blok vektor AVX ngolah 8 elemen dina hiji waktu, akselerasi bisa ngahontal 5- 6 kali. Leuwih ti éta, sajaba ukuran blok vektor, skala ogé ensured ku palaksanaan on cores processor béda.
Inovasi konci ditambahkeun dina versi ISPC 1.31:
- Добавлена экспериментальная поддержка 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.
sumber: opennet.ru
