Lëshimi i kompajlerit ISPC 1.25, e zhvilluar nga Intel për gjuhën C me zgjerime SPMD

Kompania Intel publikoi kompilatorin ISPC 1.25 (Implicit SPMD Program Compiler), i cili është i dedikuar për ndërtimin e kodit në gjuhën C me zgjerime të programimit paralel SPMD (Single Program, Multiple Data), që lejojnë ekzekutimin paralel të disa kopjeve të një programi me grupe të ndryshme të të dhënave 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.

Programet C me zgjerime SPMD kompilohet pĂ«r tĂ« funksionuar nĂ« blloqet llogaritĂ«se SIMD, qĂ« ofrohen nga CPU dhe GPU, çka lejon pĂ«rdorimin e mekanizmave tĂ« vektorizimit SIMD pa optimizime tĂ« nivelit tĂ« ulĂ«t dhe aplikimin e qartĂ« tĂ« instrukcioneve SIMD nĂ« kod. PĂ«r tĂ« shkruar funksione tĂ« ndara, pĂ«rdoret sintaksa dhe idiomat e njohura tĂ« gjuhĂ«s C — funksionet SPMD ndĂ«rveprojnĂ« drejtpĂ«rdrejt me funksionet dhe strukturat e shkruara nĂ« C/C++. PĂ«r debugimin e programeve mund tĂ« pĂ«rdoren debugerĂ« ekzistues.

Si backend për gjenerimin e kodit dhe optimizimin në ISPC përdoret infrastruktura LLVM. Mbështeten instrukcionet vektoriale x86 (SSE2, SSE4, AVX, AVX2, AVX512) dhe ARM (NEON), si dhe transferimi i llogaritjeve në GPU (Intel Gen9 dhe Xe). Në arktitekturat me blloqe vektoriale SSE, të cilat trajtojnë 4 elemente njëherësh, përdorimi i ISPC mund të arrijë një shpejtësi ekzekutimi të programit deri në 3 ose më shumë herë, ndërsa në arkitekturat me blloqe vektoriale AVX, të cilat trajtojnë 8 elemente njëherësh, shpejtësia mund të arrijë 5-6 herë. Në të njëjtën kohë, përveç madhësisë së bllokut vektorial, shkallëzimi gjithashtu sigurohet përmes ekzekutimit në bërthama të ndryshme procesori.

Risi kryesore të shtuara në versionin ISPC 1.25:

  • NĂ« shpalljen e variablave dhe funksioneve, lejohet pĂ«rcaktimi i atributeve 'noescape', 'address_space(N)', 'external_only' dhe 'unmangled' pĂ«rmes fjalĂ«s kyçe '__attribute__'.
  • E shtuar mbĂ«shtetje pĂ«r pĂ«rdorimin e shablonĂ«ve pĂ«r shpalljen e vektorĂ«ve dhe arrave.
  • Siguruar shfaqjen e mesazheve tĂ« gabimeve kur pĂ«rdoren tipe tĂ« papajtueshĂ«m nĂ« shpalljen e variablave.
  • PĂ«rmirĂ«suar gjenerimi i kodit pĂ«r ciklet foreach. Rritur eficiencĂ«n e gjenerimit tĂ« kodit nĂ« bazĂ« tĂ« grupeve tĂ« instrukcioneve AVX2 dhe AVX512.
  • Siguruar kompilimin e parashikueshĂ«m tĂ« bibliotekĂ«s standarte (stdlib), e cila ekzekutohet nĂ« fazĂ«n e ndĂ«rtimit tĂ« ISPC, duhekurse gjatĂ« kompilimit tĂ« projekteve. Ky ndryshim ka lejuar njĂ« reduktim tĂ« kohĂ«s sĂ« ndĂ«rtimit nga 5-60%, nĂ« varĂ«si tĂ« madhĂ«sisĂ« sĂ« kodit tĂ« ndĂ«rtuar.
  • Shtuar qĂ«llime tĂ« reja ndĂ«rtimi: xe2hpg-x16 dhe xe2hpg-x32 pĂ«r GPU Intel Xe2 Battlemage, xe2lpg-x16 dhe xe2lpg-x32 pĂ«r GPU Intel X Xe2 Lunar Lake. Shtuar gjithashtu definicionet arrowlake, lunarlake dhe graniterapids pĂ«r CPU Intel ArrowLake, LunarLake dhe GraniteRapids.
  • Deklaruar si tĂ« vjetruara qĂ«llimet e ndĂ«rtimit avx512knl-x16, gen9-x8 dhe gen9-x16.
  • NĂ« bibliotekĂ«n standarde pĂ«r tĂ« dhĂ«na me tipe float dhe double janĂ« shtuar operacione atomike tĂ« mbledhjes, zbritjes, gjetjes sĂ« minimumit dhe maksimumit.
  • Shtuar opsioni i komandĂ«s sĂ« linjĂ«s '-ffunction-sections' pĂ«r tĂ« gjeneruar çdo funksion nĂ« njĂ« seksion tĂ« veçantĂ«.
  • Ofruar mundĂ«sia e ndĂ«rtimit tĂ« ISPC nĂ« dy mĂ«nyra 'slim' dhe 'composite' (nĂ« mĂ«nyrĂ« tĂ« paracaktuar). MĂ«nyra e dytĂ« dallon nga integrimi i bibliotekave stdlib dhe binutils nĂ« njĂ« skedar ekzekutiv tĂ« vetĂ«m, nĂ« vend qĂ« t'i ofrojĂ« ato nĂ« formĂ« skedari tĂ« veçantĂ«.

Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster