אינטעל האט ארויסגעגעבן דעם ISPC 1.31 (אימפליציט SPMD פראגראם קאמפיילער), וואס איז געמאכט צו קאמפיילן C קאוד מיט SPMD (איינציקע פראגראם, מערערע דאטן) פאראלעלע פראגראמירן עקסטענשאנס, וואס ערמעגליכן די פאראלעלע אויספירונג פון פארשידענע אינסטאַנצן פון איין פראגראם מיט פארשידענע סעטס פון אינפוט דאטן. דער פראיעקט קאוד איז געשריבן אין C++ און ווערט פארשפרייט אונטער דער BSD ליצענץ. עס שטיצט Linux, Windows, macOS און FreeBSD.
C מגילה מיט SPMD יקסטענשאַנז זענען קאַמפּיילד פֿאַר דורכפירונג אויף SIMD קאַמפּיוטיישאַנאַל וניץ צוגעשטעלט דורך די קפּו און גפּו, וואָס אַלאַוז איר צו נוצן SIMD וועקטאָריזאַטיאָן מעקאַניזאַמז אָן נידעריק-מדרגה אָפּטימיזאַטיאָנס און יקספּליסאַט נוצן פון SIMD ינסטראַקשאַנז אין די קאָד. צו שרייַבן פּאַראַלעליזאַבלע פאַנגקשאַנז, די באַקאַנטע סינטאַקס און ידיאָמס פון די C שפּראַך זענען געניצט - SPMD פאַנגקשאַנז גלייך ינטעראַקט מיט פאַנגקשאַנז און סטראַקטשערז געשריבן אין C / C ++. עקסיסטינג דיבוגערז קענען ווערן גענוצט צו דיבאַגינג מגילה.
ISPC ניצט די LLVM ינפראַסטראַקטשער ווי אַ באַקענד פֿאַר קאָד דור און אַפּטאַמאַזיישאַן. x86 (SSE2, SSE4, AVX, AVX2, AVX512) און ARM (NEON) וועקטאָר אינסטרוקציעס זענען געשטיצט, ווי געזונט ווי אָפלאָודינג חשבונות צו די גפּו זייַט (ינטעל גענ 9 און קסע). אויף אַרקאַטעקטשערז מיט SSE וועקטאָר בלאַקס פּראַסעסינג 4 עלעמענטן אין אַ צייט, די נוצן פון 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
