Laboratoriya ishi №1 C++ dasturlash tilining ppl kutubxonasi bilan tanishish va uning yordamida parallel dasturlar tuzush


Download 455.17 Kb.
Pdf ko'rish
Sana04.11.2020
Hajmi455.17 Kb.
#140310

Laboratoriya ishi №1 

C++ dasturlash tilining PPL kutubxonasi bilan tanishish va uning 

yordamida parallel dasturlar tuzush. 

 

1.Ishni bajarishdan maqsad:Parallelashtirishning maxsus  kutubxonalridan 

biri  bo’lgan  ppl  kutubxonasi  haqida  nazariy  bilimlarga  ega  bo’lish  va  ppl 

kutubxonasidan  foydalangan  holda  parallel  tasturlar  tushush  ko’nikmasini 

shakllantirish. 



2.Nazariy qisim 

 

 



Parallel  Patterns  Library  (PPL)  parallellashtirish  kutubxonasi  bir  vaqtda 

dasturlarni  ishlab  chiqish  uchun  keng  ko'lamli  va  qulay  foydalanishni 

ta'minlaydigan majburiy dasturiy modeli taqdim etadi. PPL  

Concurrency Runtime 

ning  rejalashtirish  va  resurslarni  boshqarish  qismlariga  asoslanadi.  Bu  parallel 

ravishda ma'lumotlar ustida parallel ishlaydigan algoritm va maxsus konteynerlarni 

taqdim etish orqali dastur bajalishini parallel bajarilishini ta’minlab beradugan c++ 

tadqim qilgan kutubxona hisoblanadi. 

PPL quyidagi xususiyatlarni taqdim etadi: 

  Vazifa parallelizmi: Bir nechta ish elementini (vazifalarini) parallel ravishda 



bajarishni Windows ThreadPool ustida ishlatadigan mexanizmni yaratish; 

  Parallel  algoritmlar:  Parallel  algorintmlarni  generatsiya  qilish,  parallel 



ravishda  ishlash  uchun  o'zaro  bir  vaqtda  ishlaydigan  umumiy  algoritmlarni 

yaratish. 

  Parallel  konteynerlar  va  ob’yektlar:  Maxsus  konteynerlar  va  maxsus 



obyektlar ustida parallel algoritmlar asosida ishlov berish 

 

 



Parallel  Patterns  Library  (PPL)  bir  vaqtning  o'zida  ma'lumotlarni  to'plash 

bo'yicha ishlarni amalga oshiradigan algoritmlarni taqdim etadi. Ushbu algoritmlar 

C  ++  standart  kutubxonasi  tomonidan  taqdim  etilganlarga  o'xshaydi.  Parallel 

algoritmlar   

Concurrency 

  Runtime  da  mavjud  funktsiyalardan  iborat.  Bularga 

misol qilib quyida parallel_for va parallel_for_each algorimlarini ko’rib chiqamiz. 

 

 

Parallel_for  algoritmi.  Parallel_for  algoritmi  parallel  ravishda  bir  xil 

vazifani  bajaradi.  Ushbu  vazifalarning  har  biri  iteratsiya  qiymati  bilan 

parametrlangan.  Ushbu  algoritm  sizga  iteratsiyalari  o'rtasida  resurslarni 

taqsimlamaydigan masalalarni parallel yechishda yordam beradi. 

 

Parallel_for  algoritmi  parallel  bajarish  uchun  optimal  tarzda  ishlaydi. 



Parallel_for  algoritmi  ichki  parallelizmni  ham  qo'llab-quvvatlaydi.  Ya’ni  har  bir 

itaratsiyada  parallel  bajaraliadigan  bir  nechta  masalalarni  bajarishimiz  mumkin. 



Ichki iteratsiyalar oxirida olingan natijalar yuqorida turgan iteratsiya bajariladigan 

vazifaga natijalarni uzatadi.   

 

Parallel_for  algoritmining  bir  nechta  parametrlari  mavjud.  Birinchi 



parametrlari  boshlang'ich  qiymatini,  yakuniy  qiymatini  va  ish  funktsiyasini 

(lambda  ifodasi,  funktsiya  obyekti  yoki  funktsiyani  ko'rsatuvchi)  oladi.  

Parallel_for  algoritmi  o'zboshimchalik  bilan  bekor  qilish  shartlarini  qo'llab-

quvvatlamaydi.  Parallel_for  algoritmi  iteratsiya  o'zgaruvchining  joriy  qiymati 

oxirgi  qiymatdan  pastroq  bo'lganda  to'xtaydi.  Ya’ni  barcha  iteratsiyalar  to’liq 

bajariladi. Sikl  iteratsiyasi oldinga qarab bo'lishi kerak.  Parallel_for algoritmi stst 

:: invalid_argument turidagi istisnolardan foydalanadi, agar _Step parametri 1 dan 

kichik  bo'lsa.  PPL  ko’p  yadroli  dasturlash  uchun  funktsiyalarni  ta'minlovchi 

mahalliy C ++ dasturchilari tomonidan ishlab chiqilgan Microsoft kutubxonasi.  U 

Visual  Studio  ning  2010-yilgi  dasturiga  kiritilgan.  C  ++  standart  kutubxonasiga 

o'xshash  va  Visual  Studio  2010  bilan  tanishtirilgan  C  ++  11  til  funktsiyasi  bilan 

ishlaydi. 

   

 

 



Quyidagi  misolda  esa  parallel_for  algoritmining  asosiy  tuzilishi 

ko'rsatilgan.  Ushbu  misol  konsolga  parallel  ravishda  [1,  5]  oralig'idagi  har  bir 

qiymatni yozishga imkon beradi. 

 

 



1.1-rasm. parallel_for operatordan foydalanish 

 

#include


 

#include



 

#include

 

#include  



 

using


 

namespace

 concurrency; 

using


 

namespace

 

std


 

int



 

wmain


() 

   parallel_for(1, 6, [](



int

 value) { 

      wstringstream ss; 

      ss << value << L' 

'; 

      wcout << ss.str(); 



   }; 



 



 

Parallel_for_each  algoritmi.  Bir  vaqtning  o'zida  parallel_for_each 

algoritmi  parallel  ravishda  C  ++  standart  kutubxonasi  tomonidan  taqdim  etilgan 

kabi,  iterativ  konteynerda  vazifalarni  bajaradi.  Bu  parallel_for  algoritmidan 

foydalanadigan  bir  xil    mantiqdan  foydalanadi.  Parallel_for_each  algoritmi  C  ++ 

standart kutubxonasi std :: for_each algoritmiga o'xshaydi, faqat parallel_for_each 

algoritmi  vazifalarni  bir  vaqtning  o'zida  bajaradi.  Boshqa  parallel  algoritmlar 

singari, 

parallel_for_each 

vazifalarni 

muayyan 


tartibda 

bajarmaydi. 

Parallel_for_each  algoritmida  asosan  maxsus  obyektlar  ,  konteyner  elematlari 

ustida  parallel  amallarni  bajarishda  qulay  vosita  hisoblanadi  va  iteratsiyalar 

tasodifiy genaratsiya qilinadi. 

 

Misol 

Quyidagi  misolda  parallel_for_each  algoritmining  asosiy  tuzilishi  ko'rsatilgan. 

Ushbu  misol,  konsolda  std  ::  array  ob'ektidagi  har  bir  qiymatni  parallel  ravishda 

yozishga undadi. 

 

 



1.2-rasm. parallel_for_each operatordan foydalanish 

 

#include


 

#include



 

#include

 

#include



 

using


 

namespace

 Concurrency; 

using


 

namespace

 

std


 

int



 

wmain


() 

   



array

<

int


, 5> values = { 1, 2, 3, 4, 5 }; 

   parallel_for_each(begin(values), end(values), [](

int

 value) { 



      wstringstream ss; 

      ss << value << L' 

'; 

      wcout << ss.str(); 



   }); 

 



3.Topshiriqlar 

 

1.  Bir o’lchovli signallar ustida qayta ishlash amallarini ppl kutubxonasi 

imkoniyatlaridan foydalanib amalga oshirish. 

Signallarni qayta ishlash masalalari: 

    a) Signallarni oynalardan o’tkazish (Hemming,Henning va boshqalar); 

    b) Spektral almashtishlarni amalga oshirish (Diskret kosinus almashtirish,  

Adamar, Xaara, Dobishe, Fur’ye almashtirish); 

    c) Signallarni filetrlash

    d) Signallarni spektral sohada siqish.  

2.  Ikki o’lchovli signallarni(tasvirlarni) qayta ishlash masalalarini ppl 

kutubxonasi  imkoniyatlaridan foydalanib amalga oshirish. 

Tasvirlani qayta ishlash masalalari: 

    a) Tasvirlarni filterlash (box filter, medium filter, Gaus filter va boshqa); 

    b) Tasvirlarni spektral almashtish (Diskret kosinus almashtirish,  Adamar, 

Xaara, Dobishe, Fur’ye almashtirish); 

    c) tasvirlarni spektral sohada filerlash; 

    d) tasvirlarni siqish. 

4.Hisobot shakli 

 

1.  Laboratoriya ishining nomi.  

2.  Laboratoriya ishidagi topshiriq mavzusi.  

3.  Nazariy  ma’lumotlar  ya’ni  topshriqni  bajarishda  foydalanilgan  funksiyalar 

tavsifi.  


4.  Topshiriq  natijasi  (dastur  bajarilayotganda  kompyuter  ekranini  rasm  olib 

hisobotga qo’shish). 

5.  Hisobotda xulosa keltirish . 

 

5.Adabiyotlar ro’yxat 

 

1. 

John Bandela

.

 

Software Developer self employed.United States. 2016 



2. 

https://docs.microsoft.com/en-us/cpp/parallel/concrt/parallel-

algorithms?view= vs-2017 

https://herbsutter.com/2011/03/24/book-on-ppl-is-now-available/



 

Download 455.17 Kb.

Do'stlaringiz bilan baham:




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