Mavzu Intel Threading Building Blocks kutubxonasi bilan tanishish va uning yordamida parallel dasturlar tuzush.
Ishning maqsadi: Intel Threading Building Blocks kutubxonasi bilan tanishish va uning yordamida parallel dasturlar tuzush ko’nikmasini egallash.
USLUBIY KO‘RSATMALAR oneAPI Threading Building Blocks (oneTBB; ilgari Threading Building Blocks yoki TBB) ko'p yadroli protsessorlarda parallel dasturlash uchun Intel tomonidan ishlab chiqilgan C++ shablon kutubxonasidir . TBB yordamida hisoblash parallel ravishda bajarilishi mumkin bo'lgan vazifalarga bo'linadi . Kutubxona ushbu vazifalarni bajarish uchun mavzularni boshqaradi va rejalashtiradi . OneTBB dasturi algoritmlarga , ya'ni yuqori darajadagi parallel dasturlash paradigmalariga (aka Algoritmik Skeletlar ) muvofiq bog'liq vazifalarning grafiklarini yaratadi, sinxronlashtiradi va yo'q qiladi . Keyin vazifalar grafik bog'liqliklari bo'yicha bajariladi. Ushbu yondashuv TBBni parallel dasturlash uchun texnikalar oilasiga guruhlaydi, bu esa dasturlashni asosiy mashinaning tafsilotlaridan ajratishga qaratilgan.
oneTBB yadrodan foydalanishni va shuning uchun masshtabni oshirish uchun mavjud ishlov berish yadrolari bo'ylab parallel ish yukini muvozanatlash uchun ishlarni o'g'irlashni amalga oshiradi. Dastlab, ish yuki mavjud protsessor yadrolari orasida teng taqsimlanadi. Agar bitta yadro o'z ishini yakunlasa, boshqa yadrolar o'z navbatida hali ham katta hajmga ega bo'lsa, oneTBB ishning bir qismini band yadrolardan biridan bo'sh turgan yadroga qayta tayinlaydi. Ushbu dinamik qobiliyat dasturchini mashinadan ajratadi, bu kutubxona yordamida yozilgan ilovalarga manba kodi yoki bajariladigan dastur faylida hech qanday o'zgarishsiz mavjud ishlov berish yadrolaridan foydalanish uchun masshtablash imkonini beradi. 2008 yilda Prinston universiteti tadqiqotchilari TBBda o'g'irlangan ishlarni amalga oshirishni baholashdaBu ko'p sonli protsessor yadrolari uchun optimal emasligini aniqladi, bu esa 32 yadroli tizimda ma'lum mezonlarni ishga tushirishda qo'shimcha xarajatlarni rejalashtirishga sarflangan hisoblash vaqtining 47% gacha sabab bo'ladi. [3] oneTBB, xuddi STL (va unga asoslangan C++ standart kutubxonasining bir qismi) kabi shablonlardan keng foydalanadi. Bu kam xarajatli polimorfizmning afzalliklariga ega , chunki shablonlar kompilyatsiya vaqti konstruksiyasi bo'lib, zamonaviy C++ kompilyatorlari asosan optimallashtirishga qodir. va manba va ikkilik shakllarda ochiq kodli dasturiy ta'minot sifatida mavjud.
oneTBB determinizm yoki ma'lumotlar poygalaridan ozodlik kafolatlarini bermaydi.
Mana oneTBB ilovalari uchun maxsus talablar ro'yxati:
Amalga oshirish standartning C++ 11 versiyasidan foydalanishi va aniq ko'rsatilgan hollar bundan mustasno yangiroq versiyalarni talab qilmasligi kerak; u ham nostandart til kengaytmalarini talab qilmasligi kerak.
Amalga oshirish platformaga xos API lardan foydalanishi mumkin, agar ular C++ ijro va xotira modellariga mos kelsa. Misol uchun, agar ushbu dastur C++ iplari bilan bir xil bajarilishi kafolatlarini ta'minlasa, platformaga xos bo'lgan ish zarralarini amalga oshirishdan foydalanish mumkin.
Amalga oshirish bir yadroli va ko'p yadroli protsessorlarda, shu jumladan bir vaqtning o'zida ko'p o'qish qobiliyatini ta'minlaydigan protsessorlarda bajarilishini qo'llab-quvvatlashi kerak.
Protsessorda dastur kichikroq qismlardan kattaroq parallel komponentlarni yaratishga imkon berish uchun ichki parallelizmni qo'llab-quvvatlashi kerak.