Kutolewa kwa mkusanyaji wa ISPC 1.31 iliyotengenezwa na Intel kwa lugha ya C na viendelezi vya SPMD

Intel imechapisha ISPC 1.31 (Implicit SPMD Program Compiler), iliyoundwa kukusanya msimbo wa C na viendelezi vya programu sambamba vya SPMD (Single Program, Multiple Data), ambavyo huwezesha utekelezaji sambamba wa matukio mengi ya programu moja yenye seti tofauti za data ya ingizo. Msimbo wa mradi umeandikwa katika C++ na unasambazwa chini ya leseni ya BSD. Inasaidia Linux, Windows, macOS na FreeBSD.

Programu za C zilizo na viendelezi vya SPMD hukusanywa kwa ajili ya kutekelezwa kwenye vitengo vya ukokotoaji vya SIMD vinavyotolewa na CPU na GPU, ambayo hukuruhusu kutumia mbinu za uwekaji vekta za SIMD bila uboreshaji wa kiwango cha chini na matumizi dhahiri ya maagizo ya SIMD kwenye msimbo. Ili kuandika vitendaji vinavyoweza kusawazishwa, sintaksia na nahau zinazojulikana za lugha C hutumiwa - vitendaji vya SPMD vinaingiliana moja kwa moja na vitendaji na miundo iliyoandikwa katika C/C++. Vitatuzi vilivyopo vinaweza kutumika kutatua programu.

ISPC hutumia miundombinu ya LLVM kama sehemu ya nyuma ya utengenezaji wa msimbo na uboreshaji. x86 (SSE2, SSE4, AVX, AVX2, AVX512) na ARM (NEON) maagizo ya vekta yanaauniwa, pamoja na upakiaji mahesabu kwa upande wa GPU (Intel Gen9 na Xe). Kwenye usanifu na vizuizi vya vekta ya SSE kusindika vitu 4 kwa wakati mmoja, utumiaji wa ISPC hufanya iwezekanavyo kufikia kasi ya utekelezaji wa programu kwa mara 3 au zaidi, na kwenye usanifu na AVX vekta huzuia kusindika vitu 8 kwa wakati mmoja, kuongeza kasi kunaweza kufikia 5- mara 6. Kwa kuongezea, pamoja na saizi ya kizuizi cha vekta, kuongeza kiwango pia kunahakikishwa kwa utekelezaji wa cores tofauti za processor.

Ubunifu muhimu ulioongezwa katika toleo la 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.

Chanzo: opennet.ru

Nunua upangishaji wa kuaminika wa tovuti zilizo na ulinzi wa DDoS, seva za VPS VDS πŸ”₯ Nunua upangishaji wa tovuti unaoaminika kwa ulinzi wa DDoS, seva za VPS VDS | ProHoster