Firstprivate sharti.
Bu shartga javob beradigan oʻzgaruvchilar har
bir potok uchun individualdir, lekin ish bajarilishidan oldin ular oldingi
ketma -ket kodda olingan qiymat bilan ishga tushiriladi. Shunday qilib,
quyidagi misolda, kodning parallel boʻlimiga kirishdan oldin a
oʻzgaruvchining qiymati 10 edi. Bu oʻzgaruvchining kodning parallel
boʻlimiga kirganda ham xuddi shunday qiymati bor.
int myid, a;
a = 10;
#pragma omp parallel default(private) \ firstprivate(a)
{
myid = omp_get_thread_num(); printf("Thread%d: a = %d\n", myid, a);
a = myid;
printf("Thread%d: a = %d\n", myid, a);
}
Natija
Thread1: a = 10
Thread1: a = 1
Thread2: a = 10
Thread0: a = 10
Thread3: a = 10
Thread3: a = 3
Thread2: a = 2
Thread0: a = 0
12.1. Ish taqsimoti uchun OpenMP konstruksiyalari
Boshqa shartlardan foydalanish ish boʻlinmalari tuzilmalari misolida
yanada aniqroq namoyon boʻladi. Bunday tuzilmalar faqat uchta:
●
parallel sikl
Do'stlaringiz bilan baham: |