SPMD เชเช•เซเชธเซเชŸเซ‡เชจเซเชถเชจเซเชธ เชธเชพเชฅเซ‡ C เชญเชพเชทเชพ เชฎเชพเชŸเซ‡ เช‡เชจเซเชŸเซ‡เชฒ เชฆเซเชตเชพเชฐเชพ เชตเชฟเช•เชธเชฟเชค ISPC 1.26 เช•เชฎเซเชชเชพเช‡เชฒเชฐเชจเซเช‚ เชชเซเชฐเช•เชพเชถเชจ

เช‡เชจเซเชŸเซ‡เชฒเซ‡ ISPC 1.26 (เช‡เชฎเซเชชเซเชฒเชฟเชธเชฟเชŸ SPMD เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช•เชฎเซเชชเชพเช‡เชฒเชฐ) เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซเชฏเซเช‚ เช›เซ‡, เชœเซ‡ SPMD (เชธเชฟเช‚เช—เชฒ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ, เชฎเชฒเซเชŸเซ€เชชเชฒ เชกเซ‡เชŸเชพ) เชธเชฎเชพเช‚เชคเชฐ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชเช•เซเชธเซเชŸเซ‡เชจเซเชถเชจเซเชธ เชธเชพเชฅเซ‡ C เช•เซ‹เชกเชจเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชกเชฟเชเชพเช‡เชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เชœเซ‡ เช‡เชจเชชเซเชŸ เชกเซ‡เชŸเชพเชจเชพ เชตเชฟเชตเชฟเชง เชธเซ‡เชŸ เชธเชพเชฅเซ‡ เชธเชฎเชพเชจ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชจเชพ เช˜เชฃเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹เชจเชพ เชธเชฎเชพเช‚เชคเชฐ เช…เชฎเชฒเชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช•เซ‹เชก C++ เชฎเชพเช‚ เชฒเช–เชพเชฏเซ‡เชฒ เช›เซ‡ เช…เชจเซ‡ BSD เชฒเชพเชฏเชธเชจเซเชธ เชนเซ‡เช เชณ เชตเชฟเชคเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. Linux, Windows, macOS เช…เชจเซ‡ FreeBSD เชชเชฐ เช•เชพเชฎเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡.

SPMD เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจเชตเชพเชณเชพ C เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธ 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.26 เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชพเชฏเซ‡เชฒ เชฎเซเช–เซเชฏ เชจเชตเซ€เชจเชคเชพเช“:

  • ARM เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชฎเชพเชŸเซ‡ เชธเซเชงเชพเชฐเซ‡เชฒ เชธเชชเซ‹เชฐเซเชŸ:
    • "--arch=arm" เชงเซเชตเชœเชจเซเช‚ เชตเชฐเซเชคเชจ เชฌเชฆเชฒเชพเชˆ เช—เชฏเซเช‚ เช›เซ‡, เชœเซ‡ เชนเชตเซ‡ ARMv8 (32-เชฌเซ€เชŸ) เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒเซเช‚ เช›เซ‡, ARMv7 เชธเชพเชฅเซ‡ เชจเชนเซ€เช‚ (8-เชฌเซ€เชŸ เชฎเซ‹เชกเชฎเชพเช‚ ARMv64 เชฎเชพเชŸเซ‡, "--arch=aarch64" เชงเซเชตเชœ เชนเชœเซ เชชเชฃ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเซ‹ เชœเซ‹เชˆเช).
    • ARMv7 Cortex-a9 เช…เชจเซ‡ Cortex-a15 เชชเซเชฐเซ‹เชธเซ‡เชธเชฐเซเชธ เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ เชฌเช‚เชง เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡.
    • Cortex-a55, Cortex-a78, Cortex-a510, Cortex-a520 เชชเซเชฐเซ‹เชธเซ‡เชธเชฐเซเชธ, เชคเซ‡เชฎเชœ เชจเชตเชพ Apple ARM เชชเซเชฐเซ‹เชธเซ‡เชธเชฐเซเชธ เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช‰เชฎเซ‡เชฐเซเชฏเซ‹.
    • เชจเชตเชพ เชฌเชฟเชฒเซเชก เชฒเช•เซเชทเซเชฏเซ‹ เช‰เชฎเซ‡เชฐเซเชฏเชพ: neon-i16x16 เช…เชจเซ‡ neon-i8x32.
    • ARM SDOT เช…เชจเซ‡ UDOT เชตเซ‡เช•เซเชŸเชฐ เชธเซ‚เชšเชจเชพเช“ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช•เชพเชฎเช—เซ€เชฐเซ€ เชฎเชพเชŸเซ‡ เช‰เชฎเซ‡เชฐเชพเชฏเซ‡เชฒ เชธเชชเซ‹เชฐเซเชŸ.
    • เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡, ARMv8 เชฎเชพเชŸเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชจ เชธเชฐเซ‡เชฐเชพเชถ 13% เชตเชงเซเชฏเซเช‚ เช›เซ‡.
  • เชเช• เชจเชตเชพ เชชเซเชฐเช•เชพเชฐเชจเชพ เชฌเชฟเชฒเซเชก เชŸเชพเชฐเซเช—เซ‡เชŸ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡ - "เชœเซ‡เชจเซ‡เชฐเชฟเช•", เชœเซ‡ เช•เชฎเซเชชเชพเช‡เชฒเชฐเชจเชพ เช†เช‚เชคเชฐเชฟเช• เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเชพ เช…เชจเซ‡ เชจเชตเชพ เชฌเชฟเชฒเซเชก เชŸเชพเชฐเซเช—เซ‡เชŸ เช‰เชฎเซ‡เชฐเชตเชพเชจเซเช‚ เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพ เชฆเซ‡ เช›เซ‡. เช† เชตเชฟเชšเชพเชฐ เชšเซ‹เช•เซเช•เชธ เชนเชพเชฐเซเชกเชตเซ‡เชฐ เช•เซเชทเชฎเชคเชพเช“ เชฎเชพเชŸเซ‡ เชฌเซ‡เช เชŸเชพเชฐเซเช—เซ‡เชŸเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡, เชœเซ‡เชจเชพ เชชเชฐ เชšเซ‹เช•เซเช•เชธ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เชธเชพเชฅเซ‡ เชŸเชพเชฐเซเช—เซ‡เชŸ เชธเชฐเชณเชคเชพเชฅเซ€ เชฌเชจเชพเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡. ARM เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸเชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฒเช•เซเชทเซเชฏเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเชตเชฟเชš เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡.
  • "-O1" เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เชฎเซ‹เชกเชฎเชพเช‚ เชชเชฐเชฟเชฃเชพเชฎเซ€ เช•เซ‹เชกเชจเซเช‚ เช•เชฆ เช˜เชŸเชพเชกเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸเชฐเชจเซเช‚ เชฒเซ‚เชช เช…เชจเซ‡ เชซเช‚เช•เซเชถเชจ เช…เชจเชฐเซ‹เชฒเชฟเช‚เช— เชเชกเชœเชธเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡. เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชซเช‚เช•เซเชถเชจเซเชธ count_leading_zeros เช…เชจเซ‡ count_trailing_zeros เชฎเชพเชŸเซ‡ เชธเซเชงเชพเชฐเซ‡เชฒ เช•เซ‹เชก เชœเชจเชฐเซ‡เชถเชจ, เชคเซ‡เชฎเชœ เชซเช‚เช•เซเชถเชจเซเชธเชฎเชพเช‚เชฅเซ€ เชธเซเชŸเซเชฐเช•เซเชšเชฐเซเชธ เชชเชฐเชค เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช…เชจเซ‡ int8/int16 เชชเซเชฐเช•เชพเชฐเซ‹ เชธเชพเชฅเซ‡ เชกเซ‡เชŸเชพ เชธเซ‡เชต เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช…เชฅเชตเชพ เชฒเซ‹เชก เช•เชฐเชคเซ€ เชตเช–เชคเซ‡.
  • "--enable-llvm-intrinsics" เชซเซเชฒเซ‡เช—เชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ€เชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเซ‡เชฒ LLVM เช†เช‚เชคเชฐเชฟเช• เชฎเชพเชŸเซ‡ เชตเชฟเชธเซเชคเซƒเชค เชธเชชเซ‹เชฐเซเชŸ.
  • LLVM เชŸเซ‚เชฒเชšเซ‡เชจเชจเซ‡ เชชเซ‡เชšเซ‹ เชธเชพเชฅเซ‡ เช†เชตเซƒเชคเซเชคเชฟ 18.1.8 เชฎเชพเช‚ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚. ISPC เชฎเชพเช‚ เชตเชชเชฐเชพเชคเชพ LLVM เชธเช‚เชธเซเช•เชฐเชฃเชจเซ‡ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซ‡เช•เซเชฐเซ‹ เช‰เชฎเซ‡เชฐเซเชฏเซ‹.
  • เชœเซเชฏเชพเชฐเซ‡ เชซเช‚เช•เซเชถเชจ เช•เซ‰เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชšเซ‡เชคเชตเชฃเซ€ เช›เชพเชชเชตเชพ เชฎเชพเชŸเซ‡ เชซเช‚เช•เซเชถเชจเชฎเชพเช‚ "__attribute__((deprecated))" เชเชŸเซเชฐเชฟเชฌเซเชฏเซเชŸ เชฒเชพเช—เซ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช›เซ‡.
  • เชฌเชฟเชฒเซเชก เชŸเชพเชฐเซเช—เซ‡เชŸ avx512knl-x16 (KNL) เชฆเซ‚เชฐ เช•เชฐเซเชฏเซเช‚.
  • macOS เช…เชจเซ‡ iOS เชฎเชพเชŸเซ‡ เชฒเช•เซเชทเซเชฏ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎเชจเชพ เชจเซเชฏเซ‚เชจเชคเชฎ เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เชธเช‚เชธเซเช•เชฐเชฃเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ "--darwin-version-min" เชตเชฟเช•เชฒเซเชช เช‰เชฎเซ‡เชฐเซเชฏเซ‹.

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹