3- amaliy mashg’ulot. Mavzu


} / * Parallel parchani * /



Yüklə 251,03 Kb.
Pdf görüntüsü
səhifə3/6
tarix08.06.2023
ölçüsü251,03 Kb.
#127206
1   2   3   4   5   6
3-amaliy (1)

} / * 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, 

Yüklə 251,03 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin