Laboratoriya ishi №1 C++ dasturlash tilining ppl kutubxonasi bilan tanishish va uning yordamida parallel dasturlar tuzush
Download 455.17 Kb. Pdf ko'rish
|
- Bu sahifa navigatsiya:
- 2.Nazariy qisim
- 3.Topshiriqlar
- 4.Hisobot shakli
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.
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.
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); 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.
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 .
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'muriyatiga murojaat qiling