Intel publikoi kompilatorin ISPC 1.24, i cili implemeton modelin e shpërndarjes SPMD

Kompania Intel publikoi kompjuterin ISPC 1.24 (Kompilatori i Programave Implicit SPMD), i cili siguron ndërtimin e kodit në gjuhën C me zgjerime për mbështetje të metodës së programimit paralel SPMD (Program i Vetëm, Shume Të Dhëna), ku disa instanca të një programi ekzekutohen paralelisht me grupe të ndryshme të dhënash hyrëse. Kodi i projektit është shkruar në gjuhën C++ dhe shpërndahet nën licencën BSD. Mbështetet puna në Linux, Windows, macOS dhe FreeBSD.

Programi C me zgjerime SPMD kompilohet për ekzekutimin në blloqet llogaritëse SIMD, të ofruara nga CPU dhe GPU, duke lejuar angazhimin në programe të mekanizmave të vektorizimit SIMD pa optimizime të ulëta dhe përdorimin e drejtpërdrejtë të instrukcioneve SIMD në kod. Për të shkruar funksione të ndara përdoren sintaksa dhe idiomat e njohura të gjuhës C. Funksionet SPMD mund të integrohen me aplikacione në C/C++ dhe të ndërlidhen drejtpërdrejt me funksionet dhe strukturat e tyre. Për debugimin e programeve mund të përdoren debuguesit ekzistues.

Si një backend për gjenerimin e kodit dhe optimizimin përdoret infrastruktura LLVM. Mbështetet përdorimi i instrukcioneve vektoriale x86 (SSE2, SSE4, AVX, AVX2, AVX512) dhe ARM (NEON), si dhe transferimi i llogaritjeve në anën e GPU (Intel Gen9 dhe Xe). Në arkitekturat me blloqe vektorësh SSE, të cilat përpunojnë 4 elemente në një herë, përdorimi i ISPC lejon arritjen e përshpejtimit të ekzekutimit të programit në 3 ose më shumë herë, ndërsa në arkitekturat me blloqe vektorësh AVX, të cilat përpunojnë 8 elemente në një herë, përshpejtimi mund të arrijë nga 5-6 herë. Në këtë rast, përveç madhësisë së bllokut vektor, përmasimi arrin gjithashtu përmes ekzekutimit në bërthamat e ndryshme të procesorit.

Novitetet kryesore të shtuar në versionin ISPC 1.24:

  • Shtuar mbĂ«shtetje pĂ«r parametra tĂ« pa-typuar nĂ« funksionet template. Tani mund tĂ« pĂ«rdoren vlera tĂ« bashkuara tĂ« tĂ«rĂ« dhe tĂ« listuara si parametra tĂ« template (me shenjĂ«n "uniform").
  • Shtuar funksionet dot pĂ«r tipet e nĂ«nshkruar dhe tĂ« pa-nĂ«nshkruar int8 dhe int16, ku pĂ«rdoren instrukcione AVX-VNNI dhe AVX512-VNN.
  • Shtuar pĂ«rcaktime makros qĂ« pĂ«rcaktojnĂ« kufizimet dimensionale tĂ« numrave.
  • Shtuar platforma tĂ« reja tĂ« targetuara: avx2vnni-i32x4, avx2vnni-i32x8, avx2vnni-i32x16 me mbĂ«shtetje pĂ«r instrukcionin AVX-VNNI, dhe avx512icl-x4, avx512icl-x8, avx512icl-x16, avx512icl-x32, avx512icl-x64 me mbĂ«shtetje pĂ«r instrukcionin AVX512-VNNI.
  • Zgjidhur problemet me pĂ«rdorimin e instrukcioneve vektorĂ« tĂ« tepĂ«rta gjatĂ« gjenerimit tĂ« kodit pĂ«r GPU.
  • Flamuri i komandĂ«s sĂ« linjĂ«s "—pic" Ă«shtĂ« pĂ«rputhur me flamurin "-fpic" nĂ« Clang dhe GCC, dhe flamuri "—PIC" Ă«shtĂ« pĂ«rputhur me "-fPIC".

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster