Išleistas ISPC 1.31 kompiliatorius, kurį „Intel“ sukūrė C kalbai su SPMD plėtiniais

„Intel“ išleido ISPC 1.31 (numanomas SPMD programos kompiliatorius), skirtą C kodui kompiliuoti su SPMD (viena programa, keli duomenys) lygiagretaus programavimo plėtiniais, kurie leidžia lygiagrečiai vykdyti kelis vienos programos egzempliorius su skirtingais įvesties duomenų rinkiniais. Projekto kodas parašytas C++ kalba ir platinamas pagal BSD licenciją. Jis palaiko Linux, Windows, macOS ir „FreeBSD“.

C programos su SPMD plėtiniais yra sudarytos vykdyti SIMD skaičiavimo vienetuose, kuriuos teikia CPU ir GPU, o tai leidžia naudoti SIMD vektorizavimo mechanizmus be žemo lygio optimizavimo ir aiškaus SIMD instrukcijų naudojimo kode. Paralelizuojamoms funkcijoms rašyti naudojama pažįstama C kalbos sintaksė ir idiomos – SPMD funkcijos tiesiogiai sąveikauja su funkcijomis ir struktūromis, parašytomis C/C++. Esami derintuvai gali būti naudojami programoms derinti.

ISPC naudoja LLVM infrastruktūrą kaip kodo generavimo ir optimizavimo pagrindą. Palaikomos x86 (SSE2, SSE4, AVX, AVX2, AVX512) ir ARM (NEON) vektorinės instrukcijos, taip pat skaičiavimų perkėlimas į GPU pusę (Intel Gen9 ir Xe). Architektūrose su SSE vektoriniais blokais, vienu metu apdorojančiais 4 elementus, ISPC naudojimas leidžia pasiekti programos vykdymo pagreitį 3 ar daugiau kartų, o architektūrose su AVX vektoriniais blokais, apdorojančiais 8 elementus vienu metu, pagreitis gali siekti 5- 6 kartus. Be to, be vektorinio bloko dydžio, mastelio keitimą taip pat užtikrina vykdymas skirtinguose procesoriaus branduoliuose.

Pagrindinės naujovės, įtrauktos į ISPC 1.31 versiją:

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

Šaltinis: opennet.ru

Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster