CPU VA GPU DA KUBIK SPLAYNNI HISOBLASH JARAYONLARINI
PARALLELLASHTIRISH
O.U. Mallayev
(
dotsent, Muhammad al-Xorazmiy nomidagi TATU
)
A.H.Madrahimov (assistant, Muhammad al-Xorazmiy nomidagi TATU)
Kengaytirilgan to‘rga berilgan:
.
...
...
...
:
3
1
0
2
3
n
n
n
x
x
x
x
x
x
Normallashtirilgan asosiy funksiyalar
,
1
,
,...,
0
,
1
),
(
n
n
i
x
B
i
bu yerda
i
x
-
tashuvchining markazi hisoblanadi. Ushbu funksiyalar defekti 1 ga teng bo‘lgan
splaynni yartishni hisobga olib, ushbu to‘plamdagi S(x) splaynni quyidagicha
ko‘rsatish mumkin:
23
,
)
(
)
(
1
1
n
i
i
i
x
B
b
x
S
(1)
bu yerda B
i
- aniqlanilishi kerak bo‘lgan koeffitsiyentlardir. Masalan, qo‘shimcha
shartlar uchun (1) interpolyatsion splayn koeffitsiyentlarini aniqlash uchun
tenglamalar tizimi quyidagi shaklga ega bo‘ladi:
.
1
1
1
1
1
1
1
1
0
0
1
1
0
0
0
0
1
1
)
(
)
(
)
(
,
,
0
,
)
(
)
(
)
(
,
)
(
)
(
)
(
n
n
n
n
n
n
n
n
n
n
i
i
i
i
i
i
i
i
i
i
f
x
B
b
x
B
b
x
B
b
n
i
f
x
B
b
x
B
b
x
B
b
f
x
B
b
x
B
b
x
B
b
(2)
1
i
b
va
1
n
b
istisno qilinganidan keyin, bunday sistema progonka usuliga ruxsat beradi.
Agar
,
3
.
2
2
/
)
13
1
(
max
1
j
i
j
i
h
h
bo‘lsa bu matritsaning diagonal ustunli holatiga mos
keladi.
)
,
(
1
i
i
x
x
x
uchun
)
(
x
B
i
ni hisoblashda quyida formuladan foydalaniladi:
.
/
)
(
],
1
,
0
[
,
,
6
1
)
(
,
)
1
(
3
3
1
6
1
)
(
,
)
1
(
3
)
1
(
3
1
6
1
)
(
,
)
1
(
6
1
)
(
3
2
2
1
2
3
1
n
a
b
h
t
h
x
x
t
t
x
B
t
t
t
x
B
t
t
t
x
B
t
x
B
i
i
i
i
i
E’tibor bering, B-funksiya (2) orqali splaynni tasvirlash n ning katta qiymatlari
uchun qulay. Uni hisoblash uchun ma’lumotlar ikkita massivda saqlanishini talab
qiladi (x
i
tugun va b
i
koeffitsiyetnlar). Boshqa tomondan, (2) da koeffitsiyentlardan
birining o‘zgarishi S(x) ning o‘zgarishini faqat mos keladigan B-funksiyani qo‘llab-
quvvatlanilishini anglatadi. Bu esa splaynni lokal ravishda o‘zgartirish uchun
ishlatilishi mumkin.
Vujudga
kelayotgan
muammolarning katta qismi katta o‘lchamdagi
matritsalarning xususiy qiymatlarini topish bilan bog‘liq.
]
[
ij
A
a
n
i
- haqiqiy
nosimmetrik matritsa bo‘lsin. Keyin, Gershgorin teoremasidan foydalanib, ushbu
matritsaning barcha haqiqiy elementlari λi bo‘lgan [a,b] oraliqni aniqlash mumkin.
Agar biz [a,b] ga bitta ω to‘r kiritilsa va unga to‘r vazifasi beriladi.
,
,
0
,
/
)
(
,
),
det(
n
i
n
a
b
h
h
i
a
E
A
f
i
i
i
So‘ngra spalyn usuli bilan koeffitsiyentlarni aniqlash muammosi, ω to‘rning har
bir intervalida kubik spalynni ildizlarni topishgacha kamayadi. Protsessor elementlari
soni bo‘yicha tarmoq domenining dekompozitsiyasidan foydalanib, M
i
va f
i
mos
keladigan qiymatlarini yuklanganidan so‘ng kubik tenglamalarning ildizlarini tahlil
qilish parallel rejimda bajarilishi mumkin. Hisob-kitoblarni boshqarish uchun siz
ma’lum munosabatlardan foydalanishingiz mumkin.
.
)
det(
,
)
(
1
1
1
n
i
i
n
i
i
n
i
j
i
A
a
A
Sp
24
Shuni esda tutingki, kubik splayndan foydalanib, tenglamaning haqiqiy
ildizlarini aniqlashda h har bir oraliqda uchta ildizdan ko‘p bo‘lmasligi uchun h
to‘rning qadamini tanlash kerak. Kubik splayn koeffitsiyentlarini hisoblash
jarayonlarini bosqichlarga ajratib olinganidan keyin parallellashtirish shartlariga
to‘g‘ri keladigan bosqichlarni ko‘p protsessorli tizimlarda amalga oshiriladi.
Hisoblash jarayonlarini GPU da dasturlash uchun NVIDIA video chiplarining
asosiy tashkil topuvchilari xususiyatlarini o’rganish talab etiladi. Videokartadagi
barcha ko'rsatmalar SIMD printsipiga binoan bajariladi, agar bitta yo'riqnomaning
barcha oqimlariga bitta qo'llanma qo'llanilsa (CUDA-da bu 32 ta oqimdan iborat
guruh - ko'p protsessorlar tomonidan qayta ishlangan ma'lumotlarning minimal
miqdori).
Dasturni bajarishda markaziy protsessor kodning qismlarini, GPU esa eng og'ir
parallel hisoblashlar bilan CUDA kodini bajaradi. GPUga ajratilgan ushbu qism
yadro deb nomlanadi. Yadro ma'lumotlar ustida bajariladigan operatsiyalarni
belgilaydi. CUDA parallel hisoblash modelidan foydalanadi, bu yerda har bir SIMD
protsessor parallel ravishda har xil ma'lumotlar elementlari bo'yicha bir xil
ko'rsatmalarni bajaradi. GPU - bu o'z xotirasiga ega bo'lgan va ko'p sonli oqimlarni
parallel ravishda qayta ishlaydigan markaziy protsessor uchun hisoblash qurilmasidir.
Yadro GPU uchun funktsiya bo'lib, u oqimlar tomonidan bajariladi. Video chip
protsessordan farq qiladi, chunki u bir vaqtning o'zida yuz minglab oqimlarni qayta
ishlay oladi, bu odatda yaxshi parallel bo'lgan grafikalar uchun mo'ljallangan. CUDA
dasturlash modeli oqimlarni guruhlashni o'z ichiga oladi. Oqimlar oqim bloklariga
birlashtiriladi - umumiy xotira va sinxronizatsiya nuqtalari yordamida o'zaro ta'sir
o'tkazadigan oqimlarning bir o'lchovli yoki ikki o'lchovli katakchalaridir. Dastur
(yadro) oqim bloklarida ishlaydi. Bir vaqtning o'zida bitta mashina bajariladi. Har bir
blok bir, ikki yoki uch o'lchovli shaklda bo'lishi mumkin va joriy apparatda 512 ta
oqim bo'lishi mumkin.
Video chip tomonidan bajariladigan funktsiyalar quyidagi cheklovlarga ega:
rekursiya yo'q, funktsiyalar ichida statik o'zgaruvchilar va o'zgaruvchan sonli
argumentlar mavjud emas. Xotirani boshqarishning ikkita turi qo'llab-quvvatlanadi:
32-bitli ko'rsatgichlar bilan kiradigan chiziqli xotira va faqat fakturalarni olish
funktsiyalari orqali kirish huquqiga ega CUDA-massivlari.
CUDA dasturlari grafik API bilan o'zaro aloqada bo'lishi mumkin: dasturda
hosil bo'lgan ma'lumotlarni ko'rsatish, natijalarni o'qish va ularni CUDA vositalari
yordamida qayta ishlash uchun (masalan, keyingi ishlov berish filtrlarini amalga
oshirishda). Buning uchun grafik API resurslarini CUDA global xotira maydoniga
(resurs manzilini olish bilan) solishtirish mumkin.
Nvidia tomonidan CUDA video chiplarini hisoblash uchun taqdim etilgan
apparat va dasturiy ta'minot arxitekturasi yuqori parallellik bilan juda ko'p vazifalarni
hal qilish uchun juda mos keladi. CUDA juda ko'p sonli Nvidia GPU-larida ishlaydi
va GPU dasturlash modelini ancha soddalashtirish va umumiy xotira, oqimlarni
sinxronizatsiya qilish va butun sonli operatsiyalar kabi qo'shimcha funktsiyalarni
qo'shish orqali yaxshilaydi. CUDA har bir dasturiy ta'minot ishlab chiqaruvchisi
25
uchun mavjud bo'lgan texnologiyadir va uni har qanday C dasturchisi ishlatishi
mumkin. Parallel hisoblashga xos bo'lgan boshqa dasturlash paradigmasiga o'rganish
zarur. Ammo agar algoritm, asosan, yaxshi parallellashtirilgan bo'lsa, u holda CUDA-
da dasturlash uchun sarflangan vaqt va o'rganish ko'p marta qaytib keladi.
Ehtimol, dunyoda videokartalardan keng foydalanilganligi sababli, GPU-da
parallel hisoblash rivojlanishi yuqori samarali hisoblash sanoatiga katta ta'sir
ko'rsatishi mumkin. Ushbu imkoniyatlar allaqachon emas, balki ilmiy doiralarda ham
katta qiziqish uyg'otdi. Umumjahon protsessorlar juda sekin rivojlanmoqda, ular
bunday ishlash pog'onalariga ega emaslar.
Ko'plab hisoblashlarning kelajagi parallel algoritmlarda aniq; deyarli barcha
yangi yechimlar va tashabbuslar shu yo'nalishga yo'naltirilgan. Ammo hozircha yangi
paradigmalarning rivojlanishi dastlabki bosqichda, siz qo'lda ish zarrachalarini
yaratishingiz va xotiraga kirishni rejalashtirishingiz kerak, bu odatiy dasturlash bilan
taqqoslaganda vazifalarni murakkablashtiradi. Ammo CUDA texnologiyasi to'g'ri
yo'nalishda qadam tashladi va unda muvaffaqiyatli yechim aniq ko'rinib turibdi.
Ammo, albatta, GPU protsessorlarning o'rnini bosa olmaydi.
Hozirgi shaklida ular bunga mo'ljallanmagan. Endi video-mikrosxemalar asta-
sekin protsessor tomon siljiydi va tobora ko'proq universal (bir va ikki aniqlikdagi
suzuvchi nuqta hisob-kitoblari, butun sonli hisob-kitoblar), shuning uchun
protsessorlar tobora ko'proq "parallel" bo'lib, ko'p sonli yadrolarni, multithread
texnologiyalarini, bloklar SIMD va heterojen protsessor loyihalari ko'rinishi haqida
gapirmasa ham bo'ladi. Ehtimol, GPU va protsessor kelajakda shunchaki birlashadi.
Ma'lumki, ko'plab kompaniyalar, shu jumladan Intel va AMD ham shu kabi
loyihalar ustida ishlamoqda.
CUDA ning bir nechta kamchiliklaridan biri bu portativlikdir. Ushbu arxitektura
faqat ushbu kompaniyaning video chiplarida balki Geforce 8 va 9 seriyalari va
tegishli Quadro va Tesla-dan boshlab foydalaniladi.
Texnologiyalarning qaysi biri g'olib chiqadi, boshqalarga qaraganda keng
tarqaladi va uzoqroq umr ko'radi - buni vaqt ko'rsatadi. Ammo CUDA yaxshi
imkoniyatlarga ega, chunki, masalan, Stream Computing bilan taqqoslaganda, u
odatdagi C tilida yanada rivojlangan va foydalanishda qulay dasturlash muhitini aks
ettiradi. Ehtimol, uchinchi tomon ba'zi bir umumiy yechimlarni berish orqali ta'rifga
yordam berishi mumkin. CUDA va GPU da hisoblash jarayonlarini parallellashtirish
natijalari 1- jadvalda keltirilgan.
Hisoblash jarayonlarini parallellellashtirish natijalari 1- jadval
Kirish signali
namunalari soni - N
CUDA
(sek.)
GPU
(sek.)
8192 = 2
10
0,2 x10
-3
0, 1 x10
-3
32768 = 2
15
0,4 x10
-3
0,082 x10
-3
1048576 = 2
20
4,4 x10
-3
2,5 x10
-3
33554432 = 2
25
7,48 x10
-3
2, 2 x10
-3
1- jadvalda keltirilgan natijalariga asosan kiruvchi signal qiymatlar soni 2
10
da
hisoblash jarayonlarini CPU da amalga oshirishsh uchun 0.2x10
-3
sekund, GPU da
26
parallel hisoblash uchun 0.1x10
-3
sekund sarflandi. Natijada CPU dan GPU ni
hisoblash teligi 1.5 barabar tez bo’ldi. Kirish signali namunalarining soni ko‘payishi
bilan, CPU ga nisbatan GPU da tez bajarildi.
Demak defekti 1 ga teng bo‘lgan kubik splaynni hisoblash jarayonlarini parallel-
lashtirish CPU va GPU uchun
to‘rning har bir o‘ralig‘ida lokal kubik spalyn
qurishga olib keladi. Agar standart shartlar bajarilmasa, splayn koeffitsiyentlarini
boshqa parallellashtirish usullari bilan yechish ham mumkin.
Foydalanilgan adabiyotlar
1.
H.N. Zaynidinov, O.U. Mallayev. Definition of synchronization processes during parallel signal processing in
multicore processors // International Conference on Information Science and Communications Technologies:
Applications, Trends and Opportunities, ICISCT 2019 (2019).
2.
H.N. Zaynidinov, O.U Mallaev and B.B. Anvarjonov. A parallel algorithm for finding the human face in the
image // IOP Conf. Series: Materials Science and Engineering, 862 Volume-5, May 2020, 052004,
3.
H.N. Zaynidinov, O.U. Mallayev, I. Yusupov. Cubic Basic Splines and Parallel Algorithms // Intern ational
Journal of Advanced Trends in Computer Science and Engineering (IJATCSE), (Indexed by SCOPUS), ISSN: 2278-
3091, 9(3), May – June 2020, 3957-3960 Available Online at
4.
Исраилов М.И., Бахромов С.А. Об одном локальном интерполяционном кубическом сплайне и
некоторые его приложения // Тезисы докладов III семинара - совещания Кубатурные формулы и их
приложения. Уфа - Красноярск, 1995 г. - С.17. (9-13 октябрь, 1995 г.)
5.
Hakimjon Zaynidinov, Madhusudan Singh, Dhananjay Singh Polynomial Splines for Digital Signal and
Systems (Монография на англиском языке). LAMBERT Academic publishing, Germany, 2016 year, 208 p.
6.
Bouaziz R. et al. Efficient parallel multi-objective optimization for real-time systems software design
exploration /Proceedings of the 27th International Symposium on Rapid System Prototyping - RSP’16.2016.P. 58–64.
7.
Бурцев А.П. Параллельная обработка данных сейсморазведки с использованием расширенной модели
Master-Slave // Суперкомпьютерные дни в России: Труды международной конференции (26-27 сентября 2016
г., г. Москва). М.: Изд-во МГУ, 2016. С. 887-895.
8.
Kostenetskiy P.S., Safonov A.Y. SUSU Supercomputer Resources // Proceedings of the 10th Annual
International Scientific Conference on Parallel Computing Technologies (PCT 2016). CEUR Workshop Proceedings.
Vol. 1576. 2016. P. 561–573.
Do'stlaringiz bilan baham: |