Intel yasindikiza ISPC 1.26 (Implicit SPMD Program Compiler), yopangidwa kuti isonkhanitse kachidindo C ndi SPMD (Single Program, Multiple Data) zowonjezera mapulogalamu ofanana, zomwe zimalola kuchitidwa kofanana kwa zochitika zingapo za pulogalamu imodzi yokhala ndi ma seti osiyanasiyana a data. Khodi ya polojekitiyi idalembedwa mu C ++ ndikugawidwa pansi pa layisensi ya BSD. Imathandizira ntchito pa Linux, Windows, macOS ndi FreeBSD.
Mapulogalamu a C okhala ndi zowonjezera za SPMD amapangidwa kuti agwire ntchito pa SIMD computational units zoperekedwa ndi CPU ndi GPU, zomwe zimakupatsani mwayi wogwiritsa ntchito njira za SIMD vectorization popanda kukhathamiritsa kwapang'ono komanso kugwiritsa ntchito malangizo a SIMD momveka bwino pamakhodi. Kulemba ntchito zofananira, mawu omveka bwino a chilankhulo cha C amagwiritsidwa ntchito - Ntchito za SPMD zimagwirizana mwachindunji ndi ntchito ndi zolembedwa mu C/C++. Ma debugger omwe alipo atha kugwiritsidwa ntchito kukonza mapulogalamu.
ISPC imagwiritsa ntchito maziko a LLVM ngati chothandizira kupanga ma code ndi kukhathamiritsa. Malangizo a x86 (SSE2, SSE4, AVX, AVX2, AVX512) ndi ARM (NEON) amathandizidwa, komanso kutsitsa kuwerengera ku mbali ya GPU (Intel Gen9 ndi Xe). Pazomanga ndi SSE vekitala midadada pokonza zinthu 4 panthawi, kugwiritsa ntchito ISPC kumapangitsa kuti zitheke kukwaniritsa kuthamangitsidwa kwa pulogalamu ndi 3 kapena kupitilira apo, komanso pazomanga ndi AVX vector block blocks pokonza zinthu 8 nthawi imodzi, mathamangitsidwe amatha kufikira 5- 6 nthawi. Kuphatikiza apo, kuwonjezera pa kukula kwa block block, makulitsidwe amatsimikizidwanso pochita ma processor cores osiyanasiyana.
Zatsopano zazikulu zowonjezeredwa mu mtundu wa ISPC 1.26:
- Thandizo lokwezeka la zomangamanga za ARM:
- Makhalidwe a mbendera ya "--arch=arm" asinthidwa, omwe tsopano akugwirizana ndi kamangidwe ka ARMv8 (32-bit), osati ARMv7 (kwa ARMv8 mu 64-bit mode, mbendera ya "--arch=aarch64" iyenera kugwiritsidwabe ntchito).
- Thandizo la purosesa la ARMv7 Cortex-a9 ndi Cortex-a15 lathetsedwa.
- Zowonjezera zothandizira Cortex-a55, Cortex-a78, Cortex-a510, Cortex-a520 purosesa, komanso mapurosesa atsopano a Apple ARM.
- Zolinga zatsopano zomanga: neon-i16x16 ndi neon-i8x32.
- Thandizo lowonjezera la magwiridwe antchito potengera malangizo a ARM SDOT ndi malangizo a vector a UDOT.
- Kukhathamiritsa kwachitika, magwiridwe antchito a ARMv8 akwera ndi 13% pafupifupi.
- Mitundu yatsopano ya zolinga zawonjezedwa - "generic", zomwe zimalola kukhathamiritsa kapangidwe ka mkati mwawopanga komanso kupangitsa kuti kuwonjezera kwazomanga zatsopano. Lingaliro ndikuthandizira zolinga zoyambira pazamphamvu zinazake za hardware, pamwamba pake zomwe zolinga zomwe zili ndi kukhathamiritsa kwapadera zitha kumangidwa mosavuta. Thandizo la zomangamanga za ARM lasinthidwa kuti ligwiritse ntchito zolinga zachibadwa.
- Jenereta ya ma code yakhala ndi kuzungulira kwake ndi ntchito yosasinthika kuti achepetse kukula kwa code yomwe imachokera mu "-O1" mode optimization. Kupititsa patsogolo ma code a ntchito zomwe zidamangidwa count_leading_zeros ndi count_trailing_zeros, komanso pobweza zomanga kuchokera ku ntchito komanso posunga kapena kutsitsa deta ndi mitundu ya int8/int16.
- Thandizo lokulitsa la LLVM intrinsics, lothandizidwa pofotokoza mbendera ya "-enable-llvm-intrinsics".
- LLVM toolchain yasinthidwa kukhala 18.1.8 yokhala ndi zigamba. Macro owonjezera kuti azindikire mtundu wa LLVM womwe umagwiritsidwa ntchito mu ISPC.
- Amaloledwa kugwiritsa ntchito "__attribute__((deprecated))" ku ntchito kuti asindikize chenjezo ntchitoyo itayitanidwa.
- Chotsani cholinga cha kumanga avx512knl-x16 (KNL).
- Onjezani njira ya "--darwin-version-min" kuti mutchule mtundu wocheperako wothandizidwa ndi nsanja yomwe mukufuna ya macOS ndi iOS.
Source: opennet.ru
