3- amaliy mashg’ulot. Mavzu


} / * Parallel parchani * /


Download 251.03 Kb.
Pdf ko'rish
bet3/6
Sana18.06.2023
Hajmi251.03 Kb.
#1581579
1   2   3   4   5   6
Bog'liq
3-amaliy

} / * Parallel parchani * / 

Qanday ishlayotganini ko'rib chiqsangiz, GCC maxsus funktsiyani yaratadi va blok 
kodini bu funktsiyaga o'tkazadi, shuning uchun blok ichidagi barcha o'zgaruvchilar 
funktsiyaning lokal o'zgaruvchilari (har bir oqimning mahalliy o'zgaruvchilari) 
bo'ladi. Boshqa tomondan, ICC fork () ga o'xshash mexanizmdan 
foydalanadi va maxsus funksiya yaratmaydi. Har ikki dastur ham, albatta, to'g'ri va 
semantik jihatdan bir xildir. 
Agarda ifdan foydalanilsa, parallelizm shartli bo’lishi mumkin: extern int 
parallelism_enabled; 
#pragma omp parallel for if(parallelism_enabled) for(int c=0; c
handle(c); 
ushbu holatda parallelism_enabled 0 ga teng va sikl bir marta bajariladi 
for direktivasi forsiklini bir nechta oqimlarga ajiratadi: 
#pragma omp for 
for(int n=0; n<10; ++n) 

printf(" %d", n); 

printf(".n"); 
Ushbu tsikl 0 dan 9 gacha bo'lgan sonlarni aniq bir marta chiqaradi. Biroq, ularni 
olib chiqish tartibi noma'lum. Masalan, bunday bo'lishi mumkin: 0 5 6 7 18 


2 3 4 9 
Vektorni matritsaga gorizantal lenta(satr) bo’ylab ko’paytiruvchi C++ tilidagi 
funksiya quyidagichabbo’ladi: 
 ParallelResultCalculation(double* pMatrix, double* pVector, double* 
pResult, intSize) 

int i, j; 
#pragma omp paralell for private (j) 
for (i=0; i
{ for (j=0; j
pResult[i] +=pMatrix[i*Size+j]*pVector[j]; 


Vektorni matritsaga vertikal lenta (ustun) bo’ylab ko’paytiruvchi C++ tilidagi 
funksiya quyidagicha bo’ladi: 
ParallelResultCalculation(double* pMatrix, double* pVector, double* pResult, 

Download 251.03 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




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