D
= (0, 1) va yo'nalish vektori d = ("=", "<").
Array elementlarining qiymatlari birinchi bo'lib hisoblab chiqiladi va undan keyin ishlatiladi-bu haqiqiy
qaramlikdir. Agar ichki tsiklni bitta katta operator deb hisoblasak, unda barcha bog'liqliklar
bu katta operator ichida yashiriladi va shuning uchun tashqi tsikl
cheklovlarsiz iteratsiya orqali parallel bo'lishi mumkin. Ichki tsikl va ikki
tsiklda parallel ravishda parallelizatsiya qilish bir vaqtning o'zida mumkin emas.
2010 Yil, T. 2, № 3, P. 231-272
264
Va Karpov
Bunday ketma-ket misolda hisoblash natijalarini o'zgartirmasdan tashqi va ichki
tsiklni almashtirish mumkin. Bunday konversiyadan keyin masofa vektori
bo'ladi
D
= (1, 0) va yo'nalish vektori d = ("<", "="). Qaramlik turi o'zgarmaydi. Bu erda
muammolar parallelelivattolko ichki aylanishi mumkin.
P
Rimer
9. Tsiklni ko'rib chiqing
do i = 1,
u
1
do j = 1,
u
2
S:
a[i, j] = a[i-1, j-1] * 2
enddo
enddo
Biz masofa vektorini, yo'nalish vektorini hisoblaymiz, qaramlik turini va mumkinligini aniqlaymiz-
nostarallelivaniya aylanishi.
Biz tsiklning bajarilishini ochib beramiz.
(1, 1)
a[1, 1] = a[0, 0] * 2
(1, 2)
a[1, 2] = a[0, 1] * 2
. . .
(2, 1)
a[2, 1] = a[1 ,0] * 2
(2, 2)
a[2, 2] = a[1, 1] * 2
. . .
Shubhasiz, masofa vektori mohiyatdir
D
= (1, 1) va yo'nalish vektori d = ("<", "<").
Array elementlarining qiymatlari birinchi bo'lib hisoblab chiqiladi va undan keyin ishlatiladi-bu haqiqiy
qaramlikdir. Shu bilan birga, ichki tsiklda bog'liqliklar mavjud emas va cheklovlarsiz
parallel bo'lishi mumkin. Biroq, ichki tsiklni
parallelizatsiyalashda, boshqa tashqi yinelemeyi tugatgan barcha ijrochilar yangi tashqi yinelemeyi boshlashlari kerakinxronno!
Va shuning uchun. Aytaylik, har bir ijrochi qat'iy ichki
yinelemeyi to'ldiradi. Keyin ikkinchi ijrochi qiymatni hisoblab chiqdi
a
[1, 2], boshlash mumkin emasmaqolani yozish-
nia
a
[2, 2] birinchi ijrochi a qiymatini hisoblab chiqqunga qadar[1, 1], va hokazo.
Tashqi
tsikl va ikki tsiklda parallelizatsiya qilish mumkin emas. Va bu erda ketma-ket misol
hisob-kitob natijalarini o'zgartirmasdan tashqi va ichki tsiklni almashtirishi mumkin.
Haqida
UMUMIY TASDIQLASH
6. Pustmnogomer aylanishi yo'nalish vektoriga ega
D, bilan birga-
faqat elementlarni o'z ichiga olgan "
< "va"=". Bunday tsikl bo'lishi mumkinparallensiz
komponentlarga mos keladigan indekslarning har qanday soni bo'yicha har qanday cheklovlar "
= "asrda-
Tavrot yo'nalishlari. Komponentlarga mos keladigan indekslarni parallellashtirish "
< "yo'nalish
vektorida muammoli (to'siq sinxronizatsiyasi talab qilinishi mumkin va/yoki
shuningdek, ijobiy qaramlik masofasi uchun oldingi ma'ruzaga qarang).
Dastlabki strukturaning turli qatlamlariga mos keladigan aylanishlarni parallellashtirishdan oldin xavfsiz tarzda o'zgartirilishi
mumkin.
P
Rimer
10. Kodning bir qismini oling
do i = 1,
u
1
do j = 1,
u
2
S:
a[i, j] = a[i+1, j-1] * 2
enddo
enddo
Do'stlaringiz bilan baham: |