Raqamli texnologiyalar vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti qarshi filiali “kompyuter injiniringi” fakulteti




Download 143,49 Kb.
bet4/13
Sana25.05.2024
Hajmi143,49 Kb.
#253828
1   2   3   4   5   6   7   8   9   ...   13
Bog'liq
1-amaliy ish

parallel_for algoritmi


Parallelizm algoritmi bir xil vazifani parallel ravishda qayta-qayta bajaradi. Ushbu vazifalarning har biri iteratsiya qiymati bilan parametrlangan. Ushbu algoritm, agar sizda ushbu tsiklning takrorlanishi orasida resurslarni iste'mol qilmaydigan tsikl matni bo'lsa foydali bo'ladi.
parallel_forAlgoritmning vazifalari parallel bajarish uchun optimal tarzda bo'lingan. Balanssiz yuk bo'lsa, ushbu bo'limlarni taqsimlash uchun yuk uzatish va diapazonni uzatish algoritmidan foydalanadi. Bitta takrorlash tsikli birgalikda bloklanganda, ish vaqti joriy ipga tayinlangan iteratsiyalar oralig'ini boshqa iplar yoki protsessorlarga qayta taqsimlaydi. Xuddi shunday, ip iteratsiya diapazonini tugatgandan so'ng, ish vaqti boshqa ish zarrachalaridan ishni shu ipga qayta taqsimlaydi. Algoritm ichki parallelizmniparallel_for ham qo'llab-quvvatlaydi . Agar bitta parallel tsikl boshqa parallel tsiklni o'z ichiga olsa, ish vaqti pastadir jismlari o'rtasida samarali parallel tarzda resurslarni qayta ishlashni muvofiqlashtiradi.
Algoritmda parallel_forbir nechta haddan tashqari yuklangan versiyalar mavjud. Birinchi versiya boshlang'ich qiymatni, yakuniy qiymatni va ishchi funktsiyasini (lambda ifodasi, funktsiya ob'ekti yoki funktsiya ko'rsatkichi) oladi. Ikkinchi versiya boshlang'ich qiymatni, yakuniy qiymatni, qadam qiymatini va ish funktsiyasini oladi. Ushbu funktsiyaning birinchi versiyasi qadam qiymati sifatida 1 dan foydalanadi. Boshqa versiyalar algoritm parallel_fordiapazonlarni iplar o'rtasida qanday bo'lish kerakligini belgilashga imkon beruvchi ajratuvchi ob'ektlarni qabul qiladi. Bo'limlar ushbu hujjatning Ish bo'limida batafsil tavsiflangan .
Ko'p döngüler foydalanish uchun parallel_foraylantirilishi mumkin for. parallel_forBiroq, algoritm ko'rsatmalardan forquyidagi jihatlari bilan farq qiladi:

  • Algoritm parallel_forparallel_forvazifalarni oldindan belgilangan tartibda bajarmaydi.

  • Algoritm parallel_foro'zboshimchalik bilan tugatish shartlarini qo'llab-quvvatlamaydi. parallel_forAgar iteratsiya o'zgaruvchisining joriy qiymati dan kichik bo'lsa, algoritm to'xtaydi last.

  • Type parametri _Index_typebutun son turi bo'lishi kerak. Ushbu butun son turi imzolangan yoki imzosiz bo'lishi mumkin.

  • Loop iteratsiyasi yo'naltirilishi kerak. Agar argument 1 dan kichik bo'lsa, algoritm std::invalid_argumentparallel_for turidagi istisnoni chiqaradi ._Step

  • Algoritm uchun istisnolarni qayta ishlash mexanizmi parallel_foristisnolardan foydalanish mexanizmidan farq qiladi for. Agar parallel tsiklning tanasida bir vaqtning o'zida bir nechta istisnolar yuzaga kelsa, ish vaqti chaqirilgan ipga istisnolardan faqat bittasini tarqatadi parallel_for. Bundan tashqari, agar tsiklning bir iteratsiyasi istisno qilsa, ish vaqti umumiy tsiklni darhol to'xtatmaydi. Buning o'rniga, tsikl bekor qilingan holatda joylashtiriladi va ish vaqti hali bajarilmagan vazifalarni xaritada ko'rsatmaydi. Istisnolarni qayta ishlash va parallel algoritmlar haqida ko'proq ma'lumot olish uchun Istisnolarni qayta ishlash ga qarang.

parallel_forAlgoritm o'zboshimchalik bilan tugatish shartlarini qo'llab-quvvatlamasa ham, bekor qilish barcha vazifalarni to'xtatish uchun ishlatilishi mumkin. Bekor qilish haqida qo'shimcha ma'lumot olish uchun PPL dagi Bekor qilish bo'limiga qarang .
Quyidagi misol algoritmning asosiy tuzilishini ko'rsatadi parallel_for. Ushbu misol [1, 5] oralig'idagi har bir qiymatni konsolga parallel ravishda chop etadi.
C++Nusxalash
// parallel-for-structure.cpp
// compile with: /EHsc
#include

#include
#include
#include


using namespace concurrency;
using namespace std;


int wmain()
{
// Print each value from 1 to 5 in parallel.
parallel_for(1, 6, [](int value) {
wstringstream ss;
ss << value << L' ';
wcout << ss.str();
});
}
Ushbu misol quyidagi namunaviy chiqishni ishlab chiqaradi:
ChiqishNusxalash
1 2 4 3 5
Algoritm har bir elementda parallel ravishda ishlaganligi sababli, konsolda qiymatlarni chop etish tartibi boshqacha bo'ladi.
Algoritmdan qanday foydalanishning to'liq misoli uchun parallel_forqarang : Parallel_for Loop yaratish .

Download 143,49 Kb.
1   2   3   4   5   6   7   8   9   ...   13




Download 143,49 Kb.

Bosh sahifa
Aloqalar

    Bosh sahifa



Raqamli texnologiyalar vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti qarshi filiali “kompyuter injiniringi” fakulteti

Download 143,49 Kb.