ఇంటెల్, ISPC 1.31 (ఇంప్లిసిట్ SPMD ప్రోగ్రామ్ కంపైలర్)ను ప్రచురించింది. ఇది SPMD (సింగిల్ ప్రోగ్రామ్, మల్టిపుల్ డేటా) సమాంతర ప్రోగ్రామింగ్ పొడిగింపులతో C కోడ్ను కంపైల్ చేయడానికి రూపొందించబడింది. ఈ పొడిగింపులు, ఒకే ప్రోగ్రామ్ యొక్క బహుళ ఇన్స్టాన్సులను విభిన్న ఇన్పుట్ డేటా సెట్లతో సమాంతరంగా అమలు చేయడానికి వీలు కల్పిస్తాయి. ఈ ప్రాజెక్ట్ కోడ్ C++ లో వ్రాయబడింది మరియు BSD లైసెన్స్ క్రింద పంపిణీ చేయబడింది. ఇది మద్దతు ఇస్తుంది Linux, Windows, macOS మరియు ఫ్రీబీఎస్డీ.
SPMD పొడిగింపులతో కూడిన C ప్రోగ్రామ్లు CPU మరియు GPU ద్వారా అందించబడిన SIMD కంప్యూటేషనల్ యూనిట్లపై అమలు కోసం సంకలనం చేయబడ్డాయి, ఇది కోడ్లో తక్కువ-స్థాయి ఆప్టిమైజేషన్లు మరియు SIMD సూచనలను స్పష్టంగా ఉపయోగించకుండా SIMD వెక్టరైజేషన్ మెకానిజమ్లను ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తుంది. సమాంతరీకరించదగిన ఫంక్షన్లను వ్రాయడానికి, సి భాష యొక్క సుపరిచితమైన సింటాక్స్ మరియు ఇడియమ్లు ఉపయోగించబడతాయి - 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
