Intelek C lengoairako garatu duen ISPC 1.31 konpilatzailearen kaleratzea SPMD luzapenekin

Intelek ISPC 1.31 (Implicit SPMD Program Compiler) argitaratu du, C kodea SPMD (Single Program, Multiple Data) programazio paraleloaren luzapenekin konpilatzeko diseinatua, eta horrek programa bakar baten instantzia anitz paraleloan exekutatzea ahalbidetzen du sarrera-datu multzo desberdinekin. Proiektuaren kodea C++-n idatzita dago eta BSD lizentziapean banatzen da. Onartzen du Linux, Windows, macOS eta FreeBSD.

SPMD luzapenak dituzten C programak PUZak eta GPUk eskaintzen dituzten SIMD unitate konputazionaletan exekutatzeko konpilatzen dira, eta horri esker SIMD bektorializazio mekanismoak erabil ditzakezu maila baxuko optimizaziorik gabe eta kodean SIMD instrukzioen erabilera espliziturik gabe. Paraleliza daitezkeen funtzioak idazteko, C lengoaiaren sintaxia eta hizkera ezagunak erabiltzen dira - SPMD funtzioek C/C++-n idatzitako funtzio eta egiturekin zuzenean elkarreragiten dute. Lehendik dauden araztaileak programak arazteko erabil daitezke.

ISPC-k LLVM azpiegitura erabiltzen du kodea sortzeko eta optimizatzeko backend gisa. x86 (SSE2, SSE4, AVX, AVX2, AVX512) eta ARM (NEON) argibide bektorialak onartzen dira, baita kalkuluak GPU aldean deskargatzea ere (Intel Gen9 eta Xe). Aldi berean 4 elementu prozesatzen dituzten SSE bloke bektorialak dituzten arkitekturan, ISPC erabiltzeari esker, programaren exekuzioaren azelerazioa 3 aldiz edo gehiagotan lor daiteke, eta AVX bloke bektorialak 8 elementu aldi berean prozesatzen dituzten arkitekturan, azelerazioa 5-ra irits daiteke. 6 aldiz. Gainera, bloke bektorialaren tamainaz gain, eskalatzea ere bermatzen da prozesadore-nukleo desberdinetan exekutatuta.

ISPC 1.31 bertsioan gehitutako funtsezko berrikuntzak:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° 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.

Iturria: opennet.ru

Erosi hosting fidagarria DDoS babesa duten guneetarako, VPS VDS zerbitzariak πŸ”₯ Erosi webguneentzako ostatu fidagarria DDoS babesarekin, VPS VDS zerbitzariak | ProHoster