O‘zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarini rivojlantirish vazirligi


Download 165.52 Kb.
Sana07.12.2021
Hajmi165.52 Kb.
#179064
Bog'liq
K.A 612-18 NEMATOV A L7


Kompyuter tizimlari kafedrasi assistenti. Gavharoy Raxmatova

O‘ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI



MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI FARG’ONA FILIALI


Kafedra Kompyuter tizimlari
Fan Kompyuter arxitekturasi


AMALIY ISH № 7

Mavzu: Kutubxonalardan foydalanib parallelashtirishni tashkil etish

Guruh: 612-18TTxx



Bajardi: Nematov A
Tekshirdi: Raxmatova G
Frag’ona–2020

Mavzu:Kutubxonalardan foydalanib parallelashtirishni tashkil etish Nazariy ma’lumotlar:


Intel Threading Building Blocks maqsadi

Intel Threading Building Block (TBB) - bu umumiy xotira tizimlari uchun parallel dasturlarni ishlab chiqishga mo'ljallangan kutubxona. Boshqa taniqli yondashuvlar va vositalardan farqli o'laroq: OpenMP-dan foydalangan holda to'g'ridan-to'g'ri oqimlarda dasturlash, TBB o'zi C ++ da yozilgan (sinflar va shablonlarda) va undan foydalanib ob'ektlarda parallel dastur ishlab chiqishga imkon beradi. Bundan tashqari, kutubxona quyi darajadagi ishlarni yashiradi va shu bilan parallel dastur yaratish jarayonini soddalashtiradi.


Savollar:


  1. Parallelashtirish nima va u nima uchun kerak?

  2. Intel Threading Building Blocks haqida ma’lumot bering.

  3. O’z ism va familiyangizni parallelashtirib


uning dasturini tuzing.


Javoblar:


  1. TBB parallel dasturlarni ishlab chiqish uchun xos bo'lgan quyidagi

vazifalarni hal qilishga imkon beradigan sinflar va funktsiyalar majmuini o'z ichiga

oladi:

  • takrorlanishlar soni ma'lum bo'lgan davrlarni parallellashtirish;

  • qisqarish bilan ma'lum takrorlanishlar soni bilan sikllarni parallellashtirish;

  • shartli sikllarni parallellashtirish;

  • rekursiyani parallellashtirish.

Shuningdek, kutubxonada quyidagilar mavjud:

  • xavfsiz konteynerlar (STL konteynerlariga o'xshash, faqat ular bilan parallel dasturlarda ishlashda qo'shimcha xarajatlar standart STL konteynerlardan foydalanishdan kam);

  • ajratuvchilar, uylarni ajratish operatorlari;

  • sinxronizatsiya primitivlari.

  1. TBB - bu o'zaro faoliyat platformalar kutubxonasi - bu uchun Microsoft Windows, Linux, Mac OS operatsion tizimlari uchun dasturlar mavjud. Bundan tashqari, kutubxona notijorat maqsadlarda foydalanish uchun bepul.




  1. Kutubxonani ishga tushirish va tugatish TBB ning parallel hisoblash imkoniyatlaridan foydalanish uchun sizda tbb :: task_scheduler_init sinfining kamida bitta faol (boshlangan) nusxasi bo'lishi kerak. Ushbu sinf rejalashtiruvchiga ishlash uchun zarur bo'lgan ichki tuzilmalarni yaratish uchun mo'ljallangan. Tbb :: task_scheduler_init sinfining ob'ekti ikkita holatningbirida bo'lishi mumkin: faol yoki nofaol. Tbb :: task_scheduler_init sinfining nusxasini faollashtirishning ikki yo'li mavjud:

  • to'g'ridan-to'g'ri tbb :: task_scheduler_init ob'ektini yaratishda. Bunda yaratilgan oqimlar soni kutubxona tomonidan avtomatik ravishda aniqlanishi yoki foydalanuvchi tomonidan qo'lda o'rnatilishi mumkin;

task_scheduler_init :: initialize usulini chaqirish orqali dangasa boshlash. Tbb :: task_scheduler_init sinfi uchun konstruktor prototipi quyida keltirilgan:

task_scheduler_init (int number_of_threads = avtomatik); task_scheduler_init init; // Sinf ob'ektini initsializatsiya qilish tbb :: task_scheduler_init // sukut bo'yicha ob'ekt yaratishda

#include "tbb / task_scheduler_init.h" // nomlar maydoni tbb yordamida kerakli sarlavha fayllarini qo'shing; int main () {task_scheduler_init init; // Hisobkitoblar 0 natijasini beradi; }

Bir o'lchovli takrorlash maydonidan foydalanish misoli: block_range oralig'i (5, 14); for (int i = range.begin (); i! = range.end (); i ++)

{// Hisob-kitoblar}

TBB kutubxonasi foydalanuvchisiga o'zining takrorlanish maydonini yaratish imkoniyati beriladi. Buning uchun sinfda quyidagi usullarni amalga oshirish kerak:



  • Range :: Range (const R &) - konstruktorni nusxalash.

  • Range :: ~ Range () - bu destruktor.

  • bool Range :: empty () - bo'shliq uchun takrorlanish maydonini tekshirish usuli. Agar u bo'sh bo'lsa, unda funktsiya haqiqiy qiymatga qaytishi kerak.

  • bool Range :: is_divisible () - takrorlash maydonini bo'linishini tekshirish usuli. Agar bo'linish mumkin bo'lsa, unda funktsiya haqiqiy qiymatga qaytishi kerak.

  • Range :: Range (R & r, split) - konstruktorni ajratish, takrorlanish maydonining nusxasini yaratadi va takrorlanish 11 oralig'i bilan belgilangan diapazoni ikki qismga ajratadi (takrorlanish maydonining diapazoni ham yangi yaratilgan ob'ekt, ham uni yaratgan ob'ekt uchun o'zgartiriladi).

#include "tbb/task_scheduler_init.h" #include "tbb/parallel_for.h" #include "tbb/blocked_range.h" using namespace tbb;
Download 165.52 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling