د ISPC 1.26 کمپیلر خوشې کول د SPMD توسیعونو سره د C ژبې لپاره د Intel لخوا رامینځته شوی

Intel د ISPC 1.26 (مضمون SPMD پروګرام کمپیلر) خپور کړی، د SPMD (واحد برنامه، څو ډیټا) موازي پروګرام کولو توسیعونو سره د C کوډ راټولولو لپاره ډیزاین شوی، کوم چې د ورته پروګرام ډیری مثالونو موازي اجرا کولو ته اجازه ورکوي د مختلف ان پټ ډیټا سیټونو سره. د پروژې کوډ په C++ کې لیکل شوی او د BSD جواز لاندې ویشل شوی. په لینکس، وینډوز، macOS او FreeBSD کې د کار ملاتړ کوي.

د SPMD توسیع سره د C پروګرامونه د CPU او GPU لخوا چمتو شوي SIMD کمپیوټري واحدونو کې د اجرا کولو لپاره تالیف شوي، کوم چې تاسو ته اجازه درکوي د ټیټ کچې اصلاح کولو او په کوډ کې د SIMD لارښوونو واضح کارولو پرته د SIMD ویکتور کولو میکانیزمونو څخه کار واخلئ. د موازي دندو لیکلو لپاره، د C ژبې پیژندل شوي نحو او محاورې کارول کیږي - د SPMD افعال په مستقیم ډول په C/C++ کې لیکل شوي دندو او جوړښتونو سره اړیکه لري. موجوده ډیبګرونه د برنامو ډیبګ کولو لپاره کارول کیدی شي.

ISPC د کوډ تولید او اصلاح کولو لپاره د LLVM زیربنا د شالید په توګه کاروي. x86 (SSE2, SSE4, AVX, AVX2, AVX512) او ARM (NEON) ویکتور لارښوونې ملاتړ کیږي، په بیله بیا د GPU اړخ (Intel Gen9 او Xe) ته د آفلوډ کولو حسابونه. په معمارۍ کې چې د SSE ویکتور بلاکونه په یو وخت کې 4 عناصر پروسس کوي ، د ISPC کارول دا امکان ورکوي چې د برنامې اجرا کولو سرعت تر 3 یا ډیرو ځله ترلاسه کړي ، او د AVX ویکتور بلاکونو سره په معمارۍ کې چې په یو وخت کې 8 عناصر پروسس کوي ، سرعت کولی شي 5 ته ورسیږي. 6 ځله سربیره پردې ، د ویکتور بلاک اندازې سربیره ، اندازه کول هم د مختلف پروسیسر کورونو اجرا کولو سره تضمین کیږي.

کلیدي نوښتونه د ISPC نسخه 1.26 کې اضافه شوي:

  • د ARM جوړښت لپاره ښه ملاتړ:
    • د "--arch=arm" بیرغ چلند بدل شوی، کوم چې اوس د ARMv8 (32-bit) معمارۍ سره تړاو لري، نه ARMv7 (د ARMv8 لپاره په 64-bit حالت کې، د "--arch=aarch64" بیرغ باید لاهم وکارول شي).
    • د ARMv7 Cortex-a9 او Cortex-a15 پروسیسرونو ملاتړ بند شوی دی.
    • د کورټیکس-a55، کورټیکس-a78، کورټیکس-a510، کورټیکس-a520 پروسیسرونو، او همدارنګه د ایپل ARM نوي پروسیسرونو لپاره ملاتړ اضافه شوی.
    • د جوړولو لپاره نوي هدفونه اضافه شوي: neon-i16x16 او neon-i8x32.
    • د ARM SDOT او UDOT ویکتور لارښوونو پراساس د عملیاتو لپاره اضافه شوی ملاتړ.
    • اصلاح ترسره شوې، د ARMv8 فعالیت په اوسط ډول ۱۳٪ زیات شوی دی.
  • د جوړونې یو نوی ډول هدفونه اضافه شوي دي - "جنریک"، کوم چې د کمپیلر داخلي جوړښت غوره کولو او د نوي جوړونې هدفونو اضافه کولو ساده کولو ته اجازه ورکوي. نظر دا دی چې د ځانګړو هارډویر وړتیاوو لپاره د اساس هدفونو ملاتړ وشي، چې په سر کې یې د ځانګړو اصلاح کولو سره هدفونه په اسانۍ سره جوړ کیدی شي. د ARM جوړښت لپاره ملاتړ د عمومي هدفونو کارولو ته بدل شوی دی.
  • د کوډ جنریټر خپل لوپ او فعالیت خلاصول تنظیم کړي ترڅو د "-O1" اصلاح کولو حالت کې د پایله شوي کوډ اندازه کمه کړي. د جوړ شوي دندو count_leading_zeros او count_trailing_zeros لپاره د کوډ تولید ښه شوی، او همدارنګه کله چې د دندو څخه جوړښتونه بیرته راګرځوي او کله چې د int8/int16 ډولونو سره ډیټا خوندي کوي یا بار کوي.
  • د LLVM داخلي برخو لپاره پراخ ملاتړ، د "--enable-llvm-intrinsics" بیرغ په مشخص کولو سره فعال شوی.
  • د LLVM وسیلې زنځیر د پیچونو سره 18.1.8 نسخې ته تازه شوی. په ISPC کې کارول شوي LLVM نسخه کشف کولو لپاره میکرو اضافه شوی.
  • اجازه ورکړل شوې چې د "__attribute__((deprecated))" ځانګړتیا په دندو کې پلي کړي ترڅو د فعالیت د غږیدو په وخت کې خبرداری چاپ کړي.
  • د جوړونې هدف avx512knl-x16 (KNL) لرې شو.
  • د macOS او iOS لپاره د هدف پلیټ فارم لږترلږه ملاتړ شوی نسخه مشخص کولو لپاره "--darwin-version-min" اختیار اضافه شوی.

سرچینه: opennet.ru

Add a comment