เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™ ISPC 1.31 เบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบ Intel เบชเปเบฒเบฅเบฑเบšเบžเบฒเบชเบฒ C เบ—เบตเปˆเบกเบตเบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ SPMD

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

เบŠเบทเป‰เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ DDoS, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ VPS VDS ๐Ÿ”ฅ เบŠเบทเป‰เป€เบงเบฑเบšเป„เบŠเบ—เปŒเป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบ”เป‰เบงเบเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ DDoS, เป€เบŠเบตเบšเป€เบงเบต VPS VDS | ProHoster