Lanzamiento del compilador ISPC 1.31 desarrollado por Intel para lenguaje C con extensiones SPMD

Intel ha publicado ISPC 1.31 (Compilador de Programas SPMD Implícito), diseñado para compilar código C con las extensiones de programación paralela SPMD (Programa Único, Datos Múltiples), que permiten la ejecución paralela de múltiples instancias de un mismo programa con diferentes conjuntos de datos de entrada. El código del proyecto está escrito en C++ y se distribuye bajo la licencia BSD. Es compatible con Linux, Windows, macOS y FreeBSD.

Los programas C con extensiones SPMD se compilan para su ejecución en unidades computacionales SIMD proporcionadas por la CPU y la GPU, lo que le permite utilizar mecanismos de vectorización SIMD sin optimizaciones de bajo nivel y sin el uso explícito de instrucciones SIMD en el código. Para escribir funciones paralelizables, se utilizan la sintaxis y los modismos familiares del lenguaje C: las funciones SPMD interactúan directamente con funciones y estructuras escritas en C/C++. Los depuradores existentes se pueden utilizar para depurar programas.

ISPC utiliza la infraestructura LLVM como backend para la generación y optimización de código. Se admiten instrucciones vectoriales x86 (SSE2, SSE4, AVX, AVX2, AVX512) y ARM (NEON), así como la descarga de cálculos al lado de la GPU (Intel Gen9 y Xe). En arquitecturas con bloques vectoriales SSE que procesan 4 elementos a la vez, el uso de ISPC permite lograr una aceleración de la ejecución del programa 3 o más veces, y en arquitecturas con bloques vectoriales AVX que procesan 8 elementos a la vez, la aceleración puede alcanzar 5- 6 veces. Además, además del tamaño del bloque vectorial, el escalado también se garantiza mediante la ejecución en diferentes núcleos de procesador.

Innovaciones clave agregadas en ISPC versió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.

Fuente: opennet.ru

Compre alojamiento confiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra alojamiento web fiable con protección DDoS, servidores VPS VDS | ProHoster