發布由 Intel 開發的具有 SPMD 擴展的 C 語言 ISPC 1.31 編譯器

英特爾發布了 ISPC 1.31(隱式 SPMD 程式編譯器),旨在編譯具有 SPMD(單程式多資料)並行程式擴展的 C 程式碼,從而能夠使用不同的輸入資料集並行執行單一程式的多個實例。此專案程式碼使用 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)。在SSE向量區塊一次處理4個元素的架構上,使用ISPC可以實現3倍或更多倍的程式執行加速,而在AVX向量區塊一次處理8個元素的架構上,加速可以達到5- 6次。此外,除了向量塊的大小之外,還透過在不同處理器核心上執行來確保縮放。

ISPC 1.31 版新增的關鍵創新:

  • 已新增對 64 位元小端 PowerPC 架構 (ppc64le) 的實驗性支援。預設建置目標是帶有 VSX(向量標量擴展)的 POWER ISA 2.7 (POWER8+)。
  • 新增了 avx10.2nvl-x4、avx10.2nvl-x8、avx10.2nvl-x16、avx10.2nvl-x32 和 avx10.2nvl-x64 構建目標,這些目標實現了對基於擴展 Nova Lake 微架構的處理器的擴展集 高級指令(高級)的 RAVX)。
  • 調度程式提供多種彙編目標選項,支援 AMX(avx512spr、avx512gnr、avx10.2dmr),但前提是作業系統和 CPU 必須真正支援 AMX 擴充(進階矩陣擴充)。
  • 新增了「--opt=disable-apx」選項,用於選擇性地停用在支援 APX 的建置目標(例如 avx10.2dmr 和 avx10.2nvl)上預設啟用的各個 x86 APX 功能(egpr、ndd、push2pop2、ppx、ccmp、cf、nf、zu 和 jmpabs)。
  • 新增了平衡模式和激進模式,用於最佳化數學計算,可透過「--opt=fast-math」選項啟用,並且比預設最佳化模式更加激進。
  • 標準庫中新增了一些數學函數:
    erf、erfc(高斯誤差函數)、expm1(「exp(x)-1」的精確計算)、log1p(「log(1+x)」)、sinh、cosh 和 tanh(雙曲正弦、餘弦和正切)。 asin、acos、atan 和 log 函數的精確度和效能已提升。
  • 顯著提高了 avx2-i32x16 彙編目標的 32 位元 shuffle 效能以及 avx2-i8x32、avx512skx-x32 和 avx512skx-x64 目標的 popcnt 運算效能。
  • LLVM 工具鏈已更新至開發分支 23。

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster