Intel đã công bố ISPC 1.31 (Implicit SPMD Program Compiler), được thiết kế để biên dịch mã C với các phần mở rộng lập trình song song SPMD (Single Program, Multiple Data), cho phép thực thi song song nhiều phiên bản của một chương trình duy nhất với các tập dữ liệu đầu vào khác nhau. Mã dự án được viết bằng C++ và được phân phối theo giấy phép BSD. Nó hỗ trợ Linux, Windows, macOS và FreeBSD.
Các chương trình C có phần mở rộng SPMD được biên dịch để thực thi trên các đơn vị tính toán SIMD do CPU và GPU cung cấp, cho phép bạn sử dụng các cơ chế vectơ hóa SIMD mà không cần tối ưu hóa ở mức độ thấp và sử dụng rõ ràng các hướng dẫn SIMD trong mã. Để viết các hàm song song, cú pháp và thành ngữ quen thuộc của ngôn ngữ C được sử dụng - Hàm SPMD tương tác trực tiếp với các hàm và cấu trúc được viết bằng C/C++. Trình gỡ lỗi hiện có có thể được sử dụng để gỡ lỗi chương trình.
ISPC sử dụng cơ sở hạ tầng LLVM làm phần phụ trợ để tạo và tối ưu hóa mã. Hướng dẫn vectơ x86 (SSE2, SSE4, AVX, AVX2, AVX512) và ARM (NEON) được hỗ trợ, cũng như giảm tải các phép tính cho phía GPU (Intel Gen9 và Xe). Trên các kiến trúc có khối vectơ SSE xử lý 4 phần tử cùng một lúc, việc sử dụng ISPC giúp đạt được khả năng tăng tốc thực hiện chương trình từ 3 lần trở lên và trên các kiến trúc có khối vectơ AVX xử lý 8 phần tử cùng một lúc, khả năng tăng tốc có thể đạt tới 5- 6 lần. Hơn nữa, ngoài kích thước của khối vectơ, việc chia tỷ lệ cũng được đảm bảo bằng cách thực thi trên các lõi xử lý khác nhau.
Những cải tiến chính được thêm vào trong ISPC phiên bản 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.
Nguồn: opennet.ru
