Intel เปเบเปเปเบเบตเบเปเบเป ISPC 1.31 (Implicit SPMD Program Compiler), เปเบเบดเปเบเบเบทเบเบญเบญเบเปเบเบเบกเบฒเปเบเบทเปเบญเบเบญเบกเปเบเบฅเปเบฅเบฐเบซเบฑเบ C เบเปเบงเบเบชเปเบงเบเบเบฐเบซเบเบฒเบเบเบฒเบเบเบฝเบเปเบเบฃเปเบเบฃเบกเปเบเบเบเบฐเปเบฒเบ SPMD (Single Program, Multiple Data), เปเบเบดเปเบเบเปเบงเบเปเบซเปเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบเบเบเบฐเปเบฒเบเบเบญเบเบซเบผเบฒเบ instance เบเบญเบเปเบเบฃเปเบเบฃเบกเบเบฝเบงเบเปเบงเบเบเบธเบเบเปเปเบกเบนเบเบเปเบญเบเบเปเปเบกเบนเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ. เบฅเบฐเบซเบฑเบเปเบเบเบเบฒเบเบเบทเบเบเบฝเบเบเปเบงเบเบเบฒเบชเบฒ C++ เปเบฅเบฐเปเบเบเบขเบฒเบเบเบฒเบเปเบเปเปเบเบญเบฐเบเบธเบเบฒเบ BSD. เบกเบฑเบเบฎเบญเบเบฎเบฑเบ Linux, Windows, macOS เปเบฅเบฐ FreeBSD.
เปเบเบฅเปเบเบฅเบก C เบเบตเปเบกเบตเบชเปเบงเบเบเบฐเบซเบเบฒเบ SPMD เปเบเปเบเบทเบเบฅเบงเบเบฅเบงเบกเปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเปเบเบซเบเปเบงเบเบเบฒเบเบเบญเบกเบเบดเบงเปเบเบตเป SIMD เบเบตเปเบชเบฐเบซเบเบญเบเปเบเบ CPU เปเบฅเบฐ GPU, เปเบเบดเปเบเบเปเบงเบเปเบซเปเบเปเบฒเบเปเบเปเบเบปเบเปเบเบเบฒเบเบเปเบฒเบเบปเบ vector เบเบญเบ SIMD เปเบเบเบเปเปเบกเบตเบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเปเบเบฅเบฐเบเบฑเบเบเปเปเบฒเปเบฅเบฐเบเบฒเบเบเปเบฒเปเบเปเบเปเบฒเปเบเบฐเบเปเบฒเบเบญเบ SIMD เบขเปเบฒเบเบเบฑเบเปเบเบเปเบเบฅเบฐเบซเบฑเบ. เปเบเบทเปเบญเบเบฝเบเบซเบเปเบฒเบเบตเปเบเบฐเบซเบเบฒเบ, syntax เปเบฅเบฐ idioms เบเบตเปเบเบธเปเบเปเบเบตเบเบเบญเบเบเบฒเบชเบฒ C - เบเบฑเบเบเบฑเบ SPMD เบเบปเบงเบเบฑเบเปเบเบเบเบปเบเบเบฑเบเบเบฑเบเบเบฑเบเปเบฅเบฐเปเบเบเบชเปเบฒเบเบเบตเปเบเบฝเบเปเบ C / C ++. เบชเบฒเบกเบฒเบเปเบเปเบเบปเบงเบเบตเบเบฑเปเบเบเบตเปเบกเบตเบขเบนเปเปเบฅเปเบงเปเบเบทเปเบญเบเบตเบเบฑเบเปเบเบฃเปเบเบฃเบกเบเปเบฒเบเป.
ISPC เปเบเปเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเบเบญเบ LLVM เปเบเบฑเบ backend เบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบเบฅเบฐเบซเบฑเบเปเบฅเบฐเบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบ. x86 (SSE2, SSE4, AVX, AVX2, AVX512) เปเบฅเบฐเบเปเบฒเปเบเบฐเบเปเบฒ vector ARM (NEON) เปเบเปเบฎเบฑเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฒเบเบเบดเบเปเบฅเป offloading เบเบฑเบเบเปเบฒเบ GPU (Intel Gen9 เปเบฅเบฐ Xe). เบเปเบฝเบงเบเบฑเบเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเบตเปเบกเบต SSE vector blocks เบเบฒเบเบเบธเบเปเบเปเบ 4 เบญเบปเบเบเบฐเบเบญเบเปเบเปเบงเบฅเบฒเบเบฑเปเบ, เบเบฒเบเบเปเบฒเปเบเป ISPC เปเบฎเบฑเบเปเบซเปเบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบเบฑเบเบฅเบธเบเบฒเบเปเบฅเบฑเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเบเบเบฒเบเปเบเบ 3 เบซเบผเบทเบซเบผเบฒเบเบเบงเปเบฒเบเบฑเปเบ, เปเบฅเบฐเปเบเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเบตเปเบกเบต AVX vector blocks เบเบฒเบเบเบธเบเปเบเปเบ 8 เบญเบปเบเบเบฐเบเบญเบเปเบเปเบงเบฅเบฒเบเบฑเปเบ, เบเบฒเบเปเบฅเบฑเปเบเบชเบฒเบกเบฒเบเบเบฑเบเบฅเบธ 5-. 6 เปเบเบทเปเบญ. เบเบดเปเบเปเบเบเบงเปเบฒเบเบฑเปเบ, เบเบญเบเปเบซเบเบทเบญเบเบฒเบเบเบฐเบซเบเบฒเบเบเบญเบ vector block, เบเบฒเบเบเบฑเบเบเบฐเบซเบเบฒเบเบเบฑเบเบเบทเบเบฎเบฑเบเบเบฐเบเบฑเบเปเบเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเปเบเบเปเบฎเบเบเบฒเบเบเบฐเบฅเบดเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ.
เบเบฒเบเบเบฐเบเบดเบเบชเปเบฒเบเบเบตเปเบชเปเบฒเบเบฑเบเบเบตเปเปเบเบตเปเบกเปเบเบปเปเบฒเปเบ 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
