Intel-แแ แแแแแแฅแแแงแแ ISPC 1.31 (Implicit SPMD Program Compiler), แ แแแแแแช แจแแฅแแแแแแ C แแแแแก แแแแแแแแชแแแกแแแแก SPMD (Single Program, Multiple Data) แแแ แแแแแฃแ แ แแ แแแ แแแแ แแแแก แแแคแแ แแแแแแแแ, แ แแช แกแแจแฃแแแแแแก แแซแแแแ แแ แแ แแ แแแ แแแแก แแ แแแแแ แแแแแแแแแ แแก แแแ แแแแแฃแ แแ แจแแกแ แฃแแแแแกแ แจแแงแแแแแก แแแแแชแแแแแแก แกแฎแแแแแกแฎแแ แแแแ แแแแ. แแ แแแฅแขแแก แแแแ แแแฌแแ แแแแ C++-แจแ แแ แแแแ แชแแแแแฃแแแ BSD แแแชแแแแแแ. แแก แแฎแแ แก แฃแญแแ แก Linux, Windows, macOS แแ FreeBSD.
C แแ แแแ แแแแแ SPMD แแแคแแ แแแแแแแแ แจแแแแแแแแแ แจแแกแแกแ แฃแแแแแแ CPU-แกแ แแ GPU-แก แแแแ แแแฌแแแแแฃแ SIMD แแแแแแแแแ แแ แแแฃแแแแแ, แ แแช แกแแจแฃแแแแแแก แแแซแแแแ แแแแแแงแแแแ SIMD แแแฅแขแแ แแแแชแแแก แแแฅแแแแแแแแ แแแแแแ แแแแแก แแแขแแแแแแชแแแกแ แแ แแแแจแ SIMD แแแกแขแ แฃแฅแชแแแแแก แแจแแแ แ แแแแแงแแแแแแก แแแ แแจแ. แแแ แแแแแแแแ แแแแแ แคแฃแแฅแชแแแแแก แแแกแแฌแแ แแ แแแแแแงแแแแแ C แแแแก แแแชแแแแ แกแแแขแแฅแกแ แแ แแแแแแแแ - SPMD แคแฃแแฅแชแแแแ แฃแจแฃแแแแ แฃแ แแแแ แแฅแแแแแแแ C/C++-แจแ แแแฌแแ แแ แคแฃแแฅแชแแแแแแ แแ แกแขแ แฃแฅแขแฃแ แแแแแ. แแ แกแแแฃแแ แแแแแ แแแแแ แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก แแ แแแ แแแแแแก แแแแแ แแแแกแแแแก.
ISPC แแงแแแแแก LLVM แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแแแแก แแแแแ แแ แแแแกแ แแ แแแขแแแแแแชแแแกแแแแก. x86 (SSE2, SSE4, AVX, AVX2, AVX512) แแ ARM (NEON) แแแฅแขแแ แฃแแ แแแกแขแ แฃแฅแชแแแแ แแฎแแ แแแญแแ แแแแ, แแกแแแ แแแแแแแแแแแก แแแแแแขแแแ แแแ GPU แแฎแแ แแก (Intel Gen9 แแ Xe). 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
