Intel نے ISPC 1.31 (Implicit SPMD پروگرام کمپائلر) شائع کیا ہے، جو SPMD (سنگل پروگرام، ایک سے زیادہ ڈیٹا) متوازی پروگرامنگ ایکسٹینشن کے ساتھ C کوڈ کو مرتب کرنے کے لیے ڈیزائن کیا گیا ہے، جو ان پٹ ڈیٹا کے مختلف سیٹوں کے ساتھ ایک پروگرام کی متعدد مثالوں کے متوازی عمل کو قابل بناتا ہے۔ پروجیکٹ کوڈ C++ میں لکھا گیا ہے اور اسے BSD لائسنس کے تحت تقسیم کیا گیا ہے۔ یہ سپورٹ کرتا ہے۔ Linux, Windows, macOS اور فری بی ایس ڈی۔
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 یا اس سے زیادہ بار پروگرام کے عمل میں تیزی کو حاصل کرنا ممکن بناتا ہے، اور AVX ویکٹر بلاکس کے ساتھ ایک وقت میں 8 عناصر پر کارروائی کرتے ہوئے، سرعت 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.
ماخذ: opennet.ru
