Intelは、SPMD(Single Program, Multiple Data)並列プログラミング拡張機能を備えたCコードをコンパイルするために設計されたISPC 1.31(Implicit SPMD Program Compiler)を公開しました。SPMD拡張機能により、異なる入力データセットを持つ単一プログラムの複数のインスタンスを並列実行できます。プロジェクトコードは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) への計算のオフロードもサポートされています。一度に 4 要素を処理する SSE ベクトル ブロックを備えたアーキテクチャでは、ISPC を使用することでプログラム実行の高速化を 3 倍以上達成できます。また、一度に 8 要素を処理する AVX ベクトル ブロックを備えたアーキテクチャでは、加速は 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.
出所: オープンネット.ru
