O‘zbekiston respublikasi axborot


PPL quyidagi xususiyatlarni taqdim etadi



Download 1,22 Mb.
bet3/3
Sana21.04.2020
Hajmi1,22 Mb.
#46193
1   2   3
Bog'liq
1 Лаборатория иши

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-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.



2-rasm. parallel_for_each operatordan foydalanish

#include

#include

#include

#include

using namespace Concurrency;

using namespace std;

int wmain()

{

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



parallel_for_each(begin(values), end(values), [](int value) {

wstringstream ss;

ss << value << L' ';

wcout << ss.str();



});

}


Download 1,22 Mb.

Do'stlaringiz bilan baham:
1   2   3




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish