Intel hat de ISPC 1.31 (Implicit SPMD Program Compiler) publisearre, ûntworpen om C-koade te kompilearjen mei SPMD (Single Program, Multiple Data) parallelle programmearútwreidings, dy't de parallelle útfiering fan meardere eksimplaren fan ien programma mei ferskillende sets ynfiergegevens mooglik meitsje. De projektkoade is skreaun yn C++ en wurdt ferspraat ûnder de BSD-lisinsje. It stipet Linux, Windows, macOS en FreeBSD.
C-programma's mei SPMD-útwreidingen wurde gearstald foar útfiering op SIMD-berekkeningsienheden dy't troch de CPU en GPU levere wurde, wêrtroch jo SIMD-fektorisaasjemeganismen kinne brûke sûnder optimisaasjes op leech nivo en eksplisyt gebrûk fan SIMD-ynstruksjes yn 'e koade. Om parallellisearbere funksjes te skriuwen, wurde de bekende syntaksis en idiomen fan 'e C-taal brûkt - SPMD-funksjes direkt ynteraksje mei funksjes en struktueren skreaun yn C/C++. Besteande debuggers kinne brûkt wurde om programma's te debuggen.
ISPC brûkt de LLVM-ynfrastruktuer as backend foar koadegeneraasje en optimisaasje. x86 (SSE2, SSE4, AVX, AVX2, AVX512) en ARM (NEON) vector-ynstruksjes wurde stipe, lykas ek berekkeningen ôfladen nei de GPU-kant (Intel Gen9 en Xe). Op arsjitektueren mei SSE-fektorblokken dy't 4 eleminten tagelyk ferwurkje, makket it gebrûk fan ISPC it mooglik om programma-útfierfersnelling troch 3 of mear kearen te berikken, en op arsjitektueren mei AVX-fektorblokken dy't 8 eleminten tagelyk ferwurkje, kin fersnelling 5- berikke. 6 kear. Boppedat, neist de grutte fan it vector blok, skaalfergrutting wurdt ek garandearre troch útfiering op ferskate prosessor kearnen.
Wichtige ynnovaasjes tafoege yn ISPC ferzje 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.
Boarne: opennet.ru
