Navoakan'ny Intel ny ISPC 1.31 (Implicit SPMD Program Compiler), izay natao hanangonana kaody C miaraka amin'ny fanitarana fandaharana SPMD (Single Program, Multiple Data) mifanitsy, izay ahafahana manatanteraka fandaharana maromaro mifanitsy amin'ny angon-drakitra fidirana samihafa. Ny kaody tetikasa dia nosoratana tamin'ny C++ ary zaraina eo ambanin'ny lisansa BSD. Manohana izany izy io. Linux, Windows, macOS ary FreeBSD.
Ny programa C miaraka amin'ny fanitarana SPMD dia natambatra ho famonoana ireo singa computational SIMD nomen'ny CPU sy GPU, izay ahafahanao mampiasa mekanika vectorization SIMD tsy misy fanatsarana ambany sy fampiasana mazava ny torolàlana SIMD ao amin'ny code. Mba hanoratana fonction parallelizable dia ampiasaina ny syntax sy idioms mahazatra amin'ny fiteny C - ny fiasa SPMD dia mifandray mivantana amin'ny fiasa sy rafitra voasoratra ao amin'ny C/C++. Ny debuggers efa misy dia azo ampiasaina hanesorana ny programa.
ISPC dia mampiasa ny fotodrafitrasa LLVM ho toy ny backend amin'ny famoronana kaody sy fanatsarana. x86 (SSE2, SSE4, AVX, AVX2, AVX512) ary ARM (NEON) toromarika ho an'ny vector dia tohanana, ary koa ny fampidinana ny kajy amin'ny lafiny GPU (Intel Gen9 sy Xe). Amin'ny architectures miaraka amin'ny SSE vector blocks fanodinana singa 4 amin'ny fotoana iray, ny fampiasana ISPC dia ahafahana manatratra ny fanafainganana ny programa amin'ny in-3 na mihoatra, ary amin'ny architectures miaraka amin'ny sakana vector AVX fanodinana singa 8 amin'ny fotoana iray, ny fanafainganana dia mety hahatratra 5- 6x . Ankoatr'izay, ankoatry ny haben'ny bloc vector, ny scaling dia azo antoka ihany koa amin'ny famonoana ireo cores processeur samihafa.
Fanavaozana lehibe nampiana tao amin'ny ISPC version 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.
Source: opennet.ru
