Intel yatulutsa ISPC 1.31 (Implicit SPMD Program Compiler), yopangidwa kuti ipange ma code a C ndi ma SPMD (Single Program, Multiple Data) parallel programming extensions, omwe amalola kuti pakhale ma parallel events angapo a pulogalamu imodzi yokhala ndi ma input data osiyanasiyana. Khodi ya polojekitiyi imalembedwa mu C++ ndipo imagawidwa pansi pa layisensi ya BSD. Imathandizira Linux, Windows, macOS ndi FreeBSD.
Mapulogalamu a C okhala ndi zowonjezera za SPMD amapangidwa kuti agwire ntchito pa SIMD computational units zoperekedwa ndi CPU ndi GPU, zomwe zimakupatsani mwayi wogwiritsa ntchito njira za SIMD vectorization popanda kukhathamiritsa kwapang'ono komanso kugwiritsa ntchito malangizo a SIMD momveka bwino pamakhodi. Kulemba ntchito zofananira, mawu omveka bwino a chilankhulo cha C amagwiritsidwa ntchito - Ntchito za SPMD zimagwirizana mwachindunji ndi ntchito ndi zolembedwa mu C/C++. Ma debugger omwe alipo atha kugwiritsidwa ntchito kukonza mapulogalamu.
ISPC imagwiritsa ntchito maziko a LLVM ngati chothandizira kupanga ma code ndi kukhathamiritsa. Malangizo a x86 (SSE2, SSE4, AVX, AVX2, AVX512) ndi ARM (NEON) amathandizidwa, komanso kutsitsa kuwerengera ku mbali ya GPU (Intel Gen9 ndi Xe). Pazomanga ndi SSE vekitala midadada pokonza zinthu 4 panthawi, kugwiritsa ntchito ISPC kumapangitsa kuti zitheke kukwaniritsa kuthamangitsidwa kwa pulogalamu ndi 3 kapena kupitilira apo, komanso pazomanga ndi AVX vector block blocks pokonza zinthu 8 nthawi imodzi, mathamangitsidwe amatha kufikira 5- 6 nthawi. Kuphatikiza apo, kuwonjezera pa kukula kwa block block, makulitsidwe amatsimikizidwanso pochita ma processor cores osiyanasiyana.
Zatsopano zazikulu zowonjezeredwa mu mtundu wa 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.
Source: opennet.ru
