Kua whakaputaina e Intel te ISPC 1.31 (Implicit SPMD Program Compiler), i hangaia hei whakahiato i te waehere C me ngā toronga hōtaka SPMD (Single Program, Multiple Data), e āhei ai te whakahaere i ngā tauira maha o tētahi hōtaka kotahi me ngā huinga raraunga whakauru rerekē. Kua tuhia te waehere kaupapa ki te C++, ā, kua tohatohahia i raro i te raihana BSD. E tautoko ana i... Linux, Windows, macOS me FreeBSD.
Ko nga kaupapa C me nga taapiri SPMD kua whakahiatohia mo te mahi i runga i nga waahanga rorohiko SIMD e whakaratohia ana e te PTM me te GPU, e taea ai e koe te whakamahi i nga miihini vectorization SIMD me te kore arotautanga taumata-iti me te whakamahi maamaa o nga tohutohu SIMD i roto i te waehere. Hei tuhi i nga mahi whakarara, ka whakamahia te wetereo mohio me nga kiwaha o te reo C - Ko nga mahi SPMD e mahi tika ana me nga mahi me nga hanganga kua tuhia ki te C/C++. Ka taea te whakamahi i nga patuiro o mua ki te patuiro i nga papatono.
Ka whakamahia e te ISPC te hanganga LLVM hei tuara mo te hanga waehere me te arotautanga. x86 (SSE2, SSE4, AVX, AVX2, AVX512) me te ARM (NEON) nga tohutohu vector e tautokohia ana, me te whakaheke i nga tatauranga ki te taha GPU (Intel Gen9 me Xe). I runga i nga hoahoanga me nga poraka vector SSE e tukatuka ana i nga huānga e 4 i te wa kotahi, ma te whakamahi i te ISPC ka taea ki te whakatutuki i te whakaterenga o te kaupapa ma te 3 neke atu ranei nga wa, me nga hoahoanga me nga poraka vector AVX e tukatuka ana i nga huānga e 8 i te wa kotahi, ka eke te tere ki te 5- 6 nga wa. Ano, i tua atu i te rahi o te poraka vector, ka whakatauhia ano te tauine ma te mahi i runga i nga momo miihini rereke.
Ko nga mea hou kua taapirihia ki te putanga ISPC 1.31:
- Kua tāpirihia te tautoko whakamātautau mō te hoahoanga PowerPC little-endian 64-bit (ppc64le). Ko te whāinga hanga taunoa ko POWER ISA 2.7 (POWER8+) me VSX (Vector Scalar Extensions).
- Kua tāpirihia ngā whāinga hanga hou avx10.2nvl-x4, avx10.2nvl-x8, avx10.2nvl-x16, avx10.2nvl-x32 me avx10.2nvl-x64, e tautoko ana i ngā huinga tohutohu whānui AVX10.2 (Ngā Toronga Vector Matatau) me APX (Ngā Toronga Mahi Matatau) mō ngā tukatuka e hangai ana ki te hoahoa iti o Intel Nova Lake.
- Ka whakaratohia e te kaiwhakahaere he kōwhiringa o ngā kōwhiringa ūnga huihuinga me te tautoko AMX (avx512spr, avx512gnr, avx10.2dmr) me te tautoko tūturu mō ngā toronga AMX (Advanced Matrix Extensions) i roto i te pūnaha whakahaere me te CPU.
- Kua tāpirihia te kōwhiringa "--opt=disable-apx" hei whakakore i ngā āhuatanga APX x86 takitahi (egpr, ndd, push2pop2, ppx, ccmp, cf, nf, zu, me jmpabs) e whakahohea ana i te taunoa i runga i ngā whāinga hanga APX-āhei pērā i avx10.2dmr me avx10.2nvl.
- Kua tāpirihia ngā aratau taurite me te pukuriri mō te arotau i ngā tātaitanga pāngarau, kua whakahohea mā te kōwhiringa "--opt=fast-math" ā, he pukuriri ake i te aratau arotau taunoa.
- Kua tāpirihia ngā mahi pāngarau hou ki te whare pukapuka paerewa:
erf, erfc (ngā mahi hapa Gaussian), expm1 (te tatau tika o "exp(x)-1"), log1p ("log(1+x)"), sinh, cosh, me tanh (sine hyperbolic, cosine, me te tangent). Kua whakapaitia te tika me te mahi a ngā mahi asin, acos, atan, me te log. - Kua tino whakapaitia te mahi a ngā shuffle 32-bit mō te ūnga huihuinga avx2-i32x16 me ngā tataunga popcnt mō ngā ūnga avx2-i8x32, avx512skx-x32, me avx512skx-x64.
- Kua whakahoutia te mekameka taputapu LLVM ki te peka whanaketanga 23.
Source: opennet.ru
