Intel-ը հրապարակել է ISPC 1.31 (Implicit SPMD Program Compiler) ծրագիրը, որը նախատեսված է C կոդը SPMD (Single Program, Multiple Data) զուգահեռ ծրագրավորման ընդլայնումներով կոմպիլյացնելու համար, որոնք հնարավորություն են տալիս միաժամանակ կատարել մեկ ծրագրի բազմաթիվ օրինակներ՝ տարբեր մուտքային տվյալների հավաքածուներով: Նախագծի կոդը գրված է C++ լեզվով և տարածվում է BSD լիցենզիայով: Այն աջակցում է Linux, Windows, macOS և FreeBSD-ն։
SPMD ընդլայնումներով C ծրագրերը կազմվում են CPU-ի և GPU-ի կողմից տրամադրված SIMD հաշվողական միավորների վրա կատարման համար, ինչը թույլ է տալիս օգտագործել SIMD վեկտորացման մեխանիզմներ՝ առանց ցածր մակարդակի օպտիմալացումների և կոդում SIMD հրահանգների բացահայտ օգտագործման: Զուգահեռելի գործառույթներ գրելու համար օգտագործվում են C լեզվի ծանոթ շարահյուսությունը և բառակապակցությունները. SPMD ֆունկցիաները ուղղակիորեն փոխազդում են C/C++-ով գրված ֆունկցիաների և կառուցվածքների հետ։ Գոյություն ունեցող վրիպազերծիչները կարող են օգտագործվել ծրագրերի վրիպազերծման համար:
ISPC-ն օգտագործում է LLVM ենթակառուցվածքը որպես կոդի ստեղծման և օպտիմալացման հետին պլան: Աջակցվում են x86 (SSE2, SSE4, AVX, AVX2, AVX512) և ARM (NEON) վեկտորի հրահանգները, ինչպես նաև հաշվարկները բեռնաթափում են GPU-ի կողմը (Intel Gen9 և Xe): SSE վեկտորային բլոկներով ճարտարապետություններում, որոնք միաժամանակ մշակում են 4 տարր, ISPC-ի օգտագործումը թույլ է տալիս հասնել ծրագրի կատարման արագացման 3 կամ ավելի անգամ, իսկ AVX վեկտորային բլոկներով ճարտարապետություններում, որոնք միաժամանակ մշակում են 8 տարր, արագացումը կարող է հասնել 5-ի: 6 անգամ։ Ավելին, բացի վեկտորային բլոկի չափից, մասշտաբավորումն ապահովվում է նաև տարբեր պրոցեսորային միջուկների վրա կատարմամբ։
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
