Paglabas ng ISPC 1.31 compiler na binuo ng Intel para sa wikang C na may mga extension ng SPMD

Inilathala ng Intel ang ISPC 1.31 (Implicit SPMD Program Compiler), na idinisenyo upang i-compile ang C code gamit ang SPMD (Single Program, Multiple Data) parallel programming extensions, na nagbibigay-daan sa parallel execution ng maraming instance ng isang programa na may iba't ibang set ng input data. Ang project code ay nakasulat sa C++ at ipinamamahagi sa ilalim ng lisensya ng BSD. Sinusuportahan nito ang Linux, Windows, macOS at FreeBSD.

Ang mga C program na may mga extension ng SPMD ay pinagsama-sama para sa pagpapatupad sa mga SIMD computational unit na ibinigay ng CPU at GPU, na nagbibigay-daan sa iyong gumamit ng mga mekanismo ng vectorization ng SIMD nang walang mababang antas ng pag-optimize at tahasang paggamit ng mga tagubilin ng SIMD sa code. Upang magsulat ng mga parallelizable na function, ginagamit ang pamilyar na syntax at idiom ng C language - ang mga function ng SPMD ay direktang nakikipag-ugnayan sa mga function at istruktura na nakasulat sa C/C++. Ang mga kasalukuyang debugger ay maaaring gamitin upang i-debug ang mga programa.

Ginagamit ng ISPC ang imprastraktura ng LLVM bilang backend para sa pagbuo at pag-optimize ng code. x86 (SSE2, SSE4, AVX, AVX2, AVX512) at ARM (NEON) na mga tagubilin sa vector ay sinusuportahan, pati na rin ang pag-offload ng mga kalkulasyon sa gilid ng GPU (Intel Gen9 at Xe). Sa mga arkitektura na may SSE vector blocks na nagpoproseso ng 4 na elemento sa isang pagkakataon, ang paggamit ng ISPC ay ginagawang posible upang makamit ang pagpapabilis ng pagpapatupad ng programa nang 3 o higit pang beses, at sa mga arkitektura na may mga AVX vector block na nagpoproseso ng 8 elemento sa isang pagkakataon, ang acceleration ay maaaring umabot sa 5- 6 na beses. Bukod dito, bilang karagdagan sa laki ng block ng vector, ang pag-scale ay tinitiyak din sa pamamagitan ng pagpapatupad sa iba't ibang mga core ng processor.

Mga pangunahing inobasyon na idinagdag sa bersyon 1.31 ng ISPC:

  • Добавлена экспериментальная поддержка 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.

Pinagmulan: opennet.ru

Bumili ng maaasahang pagho-host para sa mga site na may proteksyon ng DDoS, mga server ng VPS VDS 🔥 Bumili ng maaasahang website hosting na may proteksyon ng DDoS, VPS VDS servers | ProHoster