Izdaja prevajalnika ISPC 1.31, ki ga je razvil Intel za jezik C z razširitvami SPMD

Intel je objavil prevajalnik ISPC 1.31 (Implicit SPMD Program Compiler), zasnovan za prevajanje kode C z razširitvami vzporednega programiranja SPMD (Single Program, Multiple Data), ki omogočajo vzporedno izvajanje več primerkov enega programa z različnimi nabori vhodnih podatkov. Koda projekta je napisana v jeziku C++ in se distribuira pod licenco BSD. Podpira Linux, Windows, macOS in FreeBSD.

Programi C z razširitvami SPMD so sestavljeni za izvajanje na računalniških enotah SIMD, ki jih zagotavljata CPE in GPE, kar vam omogoča uporabo mehanizmov vektorizacije SIMD brez optimizacij na nizki ravni in eksplicitne uporabe navodil SIMD v kodi. Za pisanje vzporednih funkcij se uporabljajo znana sintaksa in idiomi jezika C - funkcije SPMD neposredno komunicirajo s funkcijami in strukturami, napisanimi v C/C++. Obstoječe razhroščevalnike je mogoče uporabiti za odpravljanje napak v programih.

ISPC uporablja infrastrukturo LLVM kot zaledje za ustvarjanje kode in optimizacijo. Podprta so vektorska navodila x86 (SSE2, SSE4, AVX, AVX2, AVX512) in ARM (NEON), kot tudi razbremenitev izračunov na strani GPE (Intel Gen9 in Xe). Na arhitekturah z vektorskimi bloki SSE, ki obdelujejo 4 elemente naenkrat, uporaba ISPC omogoča 3- ali večkratno pospešitev izvajanja programa, na arhitekturah z vektorskimi bloki AVX, ki obdelujejo 8 elementov naenkrat, pa lahko pospešek doseže 5-krat. 6-krat. Poleg tega je skaliranje poleg velikosti vektorskega bloka zagotovljeno tudi z izvajanjem na različnih procesorskih jedrih.

Ključne novosti, dodane v različici 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.

Vir: opennet.ru

Kupite zanesljivo gostovanje za strani z DDoS zaščito, VPS VDS strežniki 🔥 Kupite zanesljivo spletno gostovanje z zaščito DDoS, VPS VDS strežniki | ProHoster