Kuburitswa kweISPC 1.26 compiler yakagadziridzwa neIntel yemutauro weC ine SPMD yekuwedzera

Intel yakaburitsa ISPC 1.26 (Implicit SPMD Program Compiler), yakagadzirirwa kuunganidza C kodhi neSPMD (Single Chirongwa, Multiple Data) yakafanana programming extensions, iyo inobvumira kuenzanirana kwezviitiko zvakati wandei zvechirongwa chimwe chete nemaseti akasiyana edata rekuisa. Iyo kodhi yeprojekiti yakanyorwa muC ++ uye yakagoverwa pasi peiyo BSD rezinesi. Inotsigira basa paLinux, Windows, macOS uye FreeBSD.

Mapurogiramu eC ane SPMD ekuwedzera anounganidzwa kuti aitwe paSIMD computational zvikamu zvinopihwa neCPU neGPU, izvo zvinokutendera kuti ushandise SIMD vectorization masisitimu pasina yakaderera-level optimizations uye zvakajeka kushandiswa kweSIMD mirairo mukodhi. Kunyora mabasa anoenzanirana, masintakisi uye madimikira emutauro weC anoshandiswa - SPMD mabasa anodyidzana nemabasa uye zvimiro zvakanyorwa muC/C++. Madebugger aripo anogona kushandiswa kugadzirisa zvirongwa.

ISPC inoshandisa zvivakwa zveLLVM senge yekumashure yekugadzira kodhi uye optimization. x86 (SSE2, SSE4, AVX, AVX2, AVX512) uye ARM (NEON) vector mirairo inotsigirwa, pamwe nekuburitsa kuverenga kudivi reGPU (Intel Gen9 uye Xe). Pazvivakwa zvine SSE vector inovhara kugadzirisa zvinhu zvina panguva, kushandiswa kweISPC kunoita kuti zvikwanise kuzadzisa chirongwa chekufambisa kukurumidza ne4 kana kupfuura nguva, uye pazvivakwa zvine AVX vector inovhara kugadzirisa zvinhu 3 panguva, kukurumidza kunogona kusvika 8- 5 nguva . Uyezve, mukuwedzera kune saizi yevhavhavhavha, kuyera zvakare kunovimbiswa nekuuraya pane akasiyana processor cores.

Makiyi matsva akawedzerwa muISPC vhezheni 1.26:

  • Yakavandudzwa rutsigiro rweArM architecture:
    • Maitiro e "--arch=arm" mureza akachinjwa, izvo zvino zvave kudyidzana neArMv8 (32-bit) architecture, kwete ARMv7 (yeARMv8 mu64-bit mode, "--arch=aarch64" mureza unofanira kuramba uchishandiswa).
    • Tsigiro yeARMv7 Cortex-a9 uye Cortex-a15 processors yakamiswa.
    • Yakawedzerwa rutsigiro rweCortex-a55, Cortex-a78, Cortex-a510, Cortex-a520 processors, pamwe neatsva Apple ARM processors.
    • Yakawedzera zvinangwa zvitsva zvekuvaka: neon-i16x16 uye neon-i8x32.
    • Yakawedzerwa tsigiro yekushanda yakavakirwa paARM SDOT uye UDOT vector mirairo.
    • Optimization yaitwa, kuita kweARMv8 kwawedzera ne13% paavhareji.
  • Rudzi rutsva rwezvinangwa zvekuvaka rwakawedzerwa - "generic", iyo inobvumira kukwidziridza mukati mekuvaka kweiyo compiler uye kurerutsa kuwedzera kwezvitsva zvekuvaka. Pfungwa ndere kutsigira zvibodzwa zvekutanga zvehumwe hunyanzvi hwekugona, pamusoro pazvo zvinonangwa zvine chaiwo optimizations zvinogona kuvakwa zviri nyore. Tsigiro yeArM architecture yakachinjirwa kushandisa generic zvinangwa.
  • Iyo kodhi jenareta yakave neyayo loop uye basa rekusunungura yakagadziridzwa kuderedza saizi yeinoguma kodhi mu "-O1" optimization mode. Yakavandudzwa kodhi yekugadzira yeakavakirwa-mukati mabasa count_leading_zeros uye count_trailing_zeros, pamwe nekudzoreredza zvimiro kubva kumabasa uye kana uchichengetedza kana kurodha data ine int8/int16 mhando.
  • Yakawedzera rutsigiro rweLLVM intrinsics, inogoneswa nekutsanangura iyo "-enable-llvm-intrinsics" mureza.
  • LLVM toolchain yakagadziridzwa kushanduro 18.1.8 ine zvigamba. Yakawedzera macro kuona iyo LLVM vhezheni inoshandiswa muISPC.
  • Inotenderwa kushandisa iyo "__attribute__((yakadzikiswa))" hunhu kumabasa kudhinda yambiro kana basa radaidzwa.
  • Yakabviswa chinangwa chekuvaka avx512knl-x16 (KNL).
  • Yakawedzerwa "--darwin-version-min" sarudzo yekutsanangura iyo shoma inotsigirwa vhezheni yepuratifomu inotariswa yeMacOS uye iOS.

Source: opennet.ru

Voeg