Veröffentlichung des von Intel entwickelten ISPC 1.31-Compilers für die C-Sprache mit SPMD-Erweiterungen

Intel hat den ISPC 1.31 (Implicit SPMD Program Compiler) veröffentlicht. Dieser Compiler dient der Kompilierung von C-Code mit SPMD-Erweiterungen (Single Program, Multiple Data) für parallele Programmierung. Diese Erweiterungen ermöglichen die parallele Ausführung mehrerer Instanzen eines einzelnen Programms mit unterschiedlichen Eingabedatensätzen. Der Projektcode ist in C++ geschrieben und wird unter der BSD-Lizenz vertrieben. Er unterstützt Linux, Windows, macOS und FreeBSD.

C-Programme mit SPMD-Erweiterungen werden für die Ausführung auf SIMD-Recheneinheiten kompiliert, die von der CPU und der GPU bereitgestellt werden. Dadurch können Sie SIMD-Vektorisierungsmechanismen ohne Optimierungen auf niedriger Ebene und ohne explizite Verwendung von SIMD-Anweisungen im Code verwenden. Um parallelisierbare Funktionen zu schreiben, werden die bekannte Syntax und Redewendungen der C-Sprache verwendet – SPMD-Funktionen interagieren direkt mit in C/C++ geschriebenen Funktionen und Strukturen. Vorhandene Debugger können zum Debuggen von Programmen verwendet werden.

ISPC nutzt die LLVM-Infrastruktur als Backend für die Codegenerierung und -optimierung. x86- (SSE2, SSE4, AVX, AVX2, AVX512) und ARM- (NEON) Vektoranweisungen werden unterstützt und die Berechnungen werden auf die GPU-Seite verlagert (Intel Gen9 und Xe). Auf Architekturen mit SSE-Vektorblöcken, die 4 Elemente gleichzeitig verarbeiten, ermöglicht die Verwendung von ISPC eine Beschleunigung der Programmausführung um das Dreifache oder mehr, und auf Architekturen mit AVX-Vektorblöcken, die 3 Elemente gleichzeitig verarbeiten, kann die Beschleunigung das 8-fache erreichen. 5 Mal. Darüber hinaus wird neben der Größe des Vektorblocks auch eine Skalierung durch die Ausführung auf unterschiedlichen Prozessorkernen gewährleistet.

Wichtige Neuerungen, die in ISPC-Version 1.31 hinzugefügt wurden:

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

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz und VPS-VDS-Servern 🔥 Kaufen Sie zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server | ProHoster