Oddiy tsikllarga va ularning parallellik tahliliga bog'liq
Ko'p dasturlarda, matematik modellashtirish bilan bog'liq, u
deyarli bir xil tarzda qayta ishlash uchun zarurbo'lgan ma'lumotlar majmuasi. Shunday qilib
, ma'lumotlar bo'yicha parallelizm uchun mavjud ketma-ket dasturlarni tahlil qilish alohida qiziqish uyg'otadi.
Parallelizatsiya ma'lumotlarga ko'ra, massivlarni
alohida ijro etuvchi tomonidan ko'rib chiqiladigan zonalarga ajratish — ijrochilarning mas'uliyat zonalari deb ataladi
. Bunday hisob-kitoblar odatda tsikl operatorlari yordamida ketma-ket kodda amalga
oshiriladi. Biz davrlari uchun ma'lumotlar bog'liqliklar mavjudligini kashf
, tillo bilan ishlash, va imkoniyati bu bog'liqliklar ta'siriparallel ijro ko'chadan.
Eng oddiy tsikllardan boshlaylik — hisoblagich bilan bir o'lchamli yoki murakkab bo'lmagan tsikllar.
Turli dasturlash tillarida tsikllarni tashkil qilish uchun o'xshash, ammo turli xil dizaynlar qo'llaniladi
. Shu bilan birga, hisoblagichli (yoki iterativ
o'zgarmaydigan) barcha tsikllar uchun hisoblagichning boshlang'ich va yakuniy qiymati
va iteratsiya o'rtasidagi o'zgarish qonuni mavjudligi xarakterlidir. Hisoblagich butun o'zgaruvchining va
iteratsiya o'rtasidagi qiymatini o'zgartirish qonuni — qiymatni ma'lum bir sobit qiymat bilan oshirish yoki kamaytirish deb hisoblaymiz
. "Fortranopodobnom" shaklida yozishni eng oson yo'li
2010 Yil, T. 2, № 3, P. 231-272
254
Va Karpov
do i = b, e, s
. . .
enddo
Bu erda
i-iteratsiya o'zgaruvchisi, b-uning boshlang'ich qiymati, e-yakuniy qiymat,
s-iterativ o'zgaruvchining o'zgarishi bosqichi. Shuni esda tutingki, hisoblagich qabul qilinmasligi mumkinbir
tsiklni amalga oshirishda aniq yakuniy qiymat.
Iterativ o'zgaruvchining barcha qabul qilingan qiymatlarining to'plami bir o'lchovli tsiklning iteratsion maydoni deb ataladi.
Tsiklning tanasi "do" va "enddo"operatorlari orasida yotadi.
Iterativ o'zgaruvchini oddiy almashtirish orqali bunday tsiklni normaga olib kelishi mumkin-
lizlangan ko'rinish
do j = 1, jfin, 1
. . .
enddo
Normalangan tsikldagi yozuvning qisqacha mazmuni uchun biz pastga tushamizshag hisoblagich
do j = 1, jfin
. . .
enddo
Bo'sh tsikl ikki operatordan iborat
S
1
va
S
2
,
bir xil o'lchovli ma'lumotlar majmuasining elementlariga kirishni o'z ichiga olgan kirish va/yoki chiqish to'plamlari
A.
do j = 1, jfin
S
1
:
. . .
A[f(j)]
. . .
S
2
:
. . .
A[g(j)]
. . .
enddo
Bu erda
f
(j)va g — j) - butun o'zgaruvchan ba'zi integer vazifalari. Oddiylik uchun
biz faraz qilaylik, qator indeksi a har qanday butun qiymatini olishi mumkin.
Bizning asosiy vazifamiz-bu mumkin yoki yo'qligini aniqlashdir-
bunday tsiklning yurishi-tamsayı segment
[1, jfin] -
parallel bajarish uchun javobgarlik zonalarida. Eslatib o'tamiz, aslida, tsikl operatori
dasturning asl matnini qisqartirish shaklidir. Agar uni olib tashlasangiz, bu qisqarish va tarqatish,
biz olamiz:
S
1
1
:
. . .
A[f(1)]
. . .
S
1
2
:
. . .
A[g(1)]
. . .
S
2
1
:
. . .
A[f(2)]
. . .
S
2
2
:
. . .
A[g(2)]
. . .
. . .
S
jfin
1
: . . .
A[f(jfin)]
. . .
S
jfin
2
: . . .
A[g(jfin)]
. . .
Do'stlaringiz bilan baham: |