Boshqaruv hamda pedagog kadrlarni qayta tayyorlash va ularni malakasini oshirish instituti



Download 1,57 Mb.
Pdf ko'rish
bet66/74
Sana14.04.2022
Hajmi1,57 Mb.
#550628
1   ...   62   63   64   65   66   67   68   69   ...   74
Bog'liq
Ж.НематовШахсий компютр архитектураси(ўқув амалиёти) Уқитиш мат туп

Nazorat savollari 
1. C++ kompilyatoriga OpenMP ni qo’shish
2. OpenMP direktivalarini ishlatish
3. OpenMP texnologiyasidan foydalanish


163 
27-Ma’ruza. 
CUDA texnologiyasi 
Reja:
1.
CUDA texnologiyasi
 
2.
CUDA texnologiyasini imkoniyatlari
 
 
Tayanch iboralar:
CUDA texnologiyasi, Nvidia.
 
 
CUDA texnologiyasi Nvidia kompaniyasining C tilining kengaytmasiga 
asoslangan dasturiy va apparatli hisoblash arxitekturasi bo’lib, u grafik 
tezlatgichning ko’rsatmalar to’plamiga kirish va parallel hisoblashda uning 
xotirasini boshqarish imkonini beradi. CUDA Geforce video tezlatkichlarining 
sakkizinchi avlodi va eski grafik protsessorlarida (Geforce 8, Geforce 9, Geforce 
200 seriyali), shuningdek Quadro va Tesla’da amalga oshirilishi mumkin bo‘lgan 
algoritmlarni amalga oshirishga yordam beradi. 
CUDA bilan GPU dasturlashning murakkabligi ancha yuqori bo'lsa-da, u 
dastlabki GPGPU yechimlariga qaraganda pastroq. Bunday dasturlar dasturni MPI 
dasturlashiga o'xshash bir nechta multiprotsessorlar bo'ylab taqsimlashni talab 
qiladi, lekin umumiy video xotirada saqlanadigan ma'lumotlarni almashishsiz. Va 
har bir ko'p protsessor uchun CUDA dasturlash OpenMP dasturlashiga o'xshash 
bo'lganligi sababli, u xotirani tashkil qilishni yaxshi tushunishni talab qiladi. Lekin, 
albatta, CUDA-ni ishlab chiqish va o'tkazishning murakkabligi dasturga juda 
bog'liq. 
Ishlab chiquvchilar to'plamida ko'plab kod misollari mavjud va yaxshi 
hujjatlashtirilgan. OpenMP va MPI bilan tanish bo'lganlar uchun o'quv jarayoni 
tAHMinan ikki-to'rt hafta davom etadi. API kengaytirilgan C tiliga asoslangan va 
ushbu tildan kodni tarjima qilish uchun CUDA SDK ochiq Open64 kompilyatoriga 
asoslangan nvcc buyruq qatori kompilyatorini o'z ichiga oladi. 
Biz CUDA ning asosiy xususiyatlarini sanab o'tamiz: 
• Nvidia video chiplarida parallel hisoblash uchun yagona dasturiy va 
apparat yechimi; 


164 
• qo'llab-quvvatlanadigan echimlarning keng doirasi, mobildan ko'p 
chipligacha 
• standart dasturlash tili C; 
• raqamli tahlil FFT (Fast Furier Transform) va BLAS (Linear Algebra) 
uchun standart kutubxonalar; 
• CPU va GPU o'rtasida optimallashtirilgan ma'lumotlar almashinuvi; 
• grafik API OpenGL va DirectX bilan o'zaro aloqa; 
• 32 va 64 bitli operatsion tizimlarni qo'llab-quvvatlash: Windows XP, 
Windows Vista, Linux va MacOS X; 
• past darajada rivojlanish qobiliyati. 
Operatsion tizimni qo'llab-quvvatlashga kelsak, shuni qo'shimcha qilish 
kerakki, barcha asosiy Linux distributivlari rasmiy ravishda qo'llab-quvvatlanadi 
(Red Hat Enterprise Linux 3.x/4.x/5.x, SUSE Linux 10.x), ammo ishqibozlarning 
fikriga ko'ra, CUDA yaxshi ishlaydi. boshqa tuzilmalarda: Fedora Core, Ubuntu, 
Gentoo va boshqalar. 
CUDA Development Environment (CUDA Toolkit) quyidagilarni o'z ichiga 
oladi: 
• nvcc kompilyatori; 
• FFT va BLAS kutubxonalari; 
• profil yaratuvchi; 
• GPU uchun gdb tuzatuvchisi; 
• CUDA ish vaqti drayveri standart Nvidia drayverlariga kiritilgan 
• dasturlash bo'yicha qo'llanma; 
• CUDA Developer SDK (manba kodi, yordamchi dasturlar va hujjatlar). 
Manba kodi misollarida: parallel bitonik saralash (bitonik tartiblash), 
matritsa transpozitsiyasi, katta massivlarning parallel prefiks yig'indisi, tasvir 
konvolyutsiyasi, diskret to'lqinli konvertatsiya, OpenGL va Direct3D bilan o'zaro 
ta'sir qilish misoli, CUBLAS va CUFFT kutubxonalaridan foydalanish, optsion 
narxini hisoblash ( Blek-Skoulz, binomial model, Monte-Karlo usuli), Mersenne 


165 
Twister parallel tasodifiy sonlar generatori, katta massiv gistogrammasini 
hisoblash, shovqinni kamaytirish, Sobel filtri (bog'langan aniqlash). 
CUDA ning afzalliklari va cheklovlari 
Dasturchi nuqtai nazaridan, grafik quvur liniyasi qayta ishlash bosqichlari 
to'plamidir. Geometriya bloki uchburchaklarni, rasterlash bloki esa monitorda aks 
ettiriladigan piksellarni hosil qiladi. An'anaviy GPGPU dasturlash modeli 
quyidagicha: 
27.1-rasm. GPGPU dasturlash modeli 
Bunday model doirasida hisob-kitoblarni GPU-ga o'tkazish uchun alohida 
yondashuv zarur. Hatto ikkita vektorni elementma-element qo'shish uchun shaklni 
ekranga yoki ekrandan tashqari buferga chizish kerak bo'ladi. Rasm rasterlangan, 
har bir pikselning rangi berilgan dastur (piksel shader) bo'yicha hisoblanadi. Dastur 
har bir piksel uchun teksturalardan kiritilgan ma'lumotlarni o'qiydi, ularni qo'shadi 
va chiqish buferiga yozadi. Va bu ko'p sonli operatsiyalarning barchasi oddiy 
dasturlash tilida bitta operatorda yozilgan narsalar uchun kerak! 
Shuning uchun, umumiy maqsadli hisoblash uchun GPGPU-dan foydalanish 
ishlab chiquvchilarni o'qitishda juda ko'p qiyinchilik shaklida cheklovga ega. Va 
boshqa cheklovlar ham etarli, chunki piksel shaderi pikselning oxirgi rangining 
uning koordinatalariga bog'liqligi uchun formuladir va piksel shader tili bu 
formulalarni C-ga o'xshash sintaksis bilan yozish uchun tildir. Dastlabki GPGPU 
texnikasi GPU quvvatidan foydalanishning qiyin hiylasidir, lekin hech qanday 
qulayliksiz. U yerdagi ma'lumotlar tasvirlar (teksturalar) bilan, algoritm esa 


166 
rasterlashtirish jarayoni bilan ifodalanadi. Juda o'ziga xos xotira va ijro modelini 
ham ta'kidlash kerak. 
Nvidia-dan GPU-larda hisoblash uchun Nvidia-ning apparat va dasturiy 
ta'minot arxitekturasi oldingi GPGPU modellaridan farq qiladi, chunki u standart 
sintaksis, ko'rsatkichlar va video chiplarning hisoblash resurslariga kirish uchun 
minimal kengaytmalarga bo'lgan ehtiyoj bilan haqiqiy C-da GPUlar uchun 
dasturlar yozish imkonini beradi. CUDA grafik API-larga bog'liq emas va umumiy 
maqsadli hisoblash uchun maxsus ishlab chiqilgan ba'zi xususiyatlarga ega. 
GPGPU hisoblashda an'anaviy yondashuvdan CUDA ning afzalliklari: 
• CUDA amaliy dasturlash interfeysi kengaytmali standart C dasturlash tiliga 
asoslangan bo‘lib, CUDA arxitekturasini o‘rganish va joriy etish jarayonini 
soddalashtiradi; 
• CUDA har bir multiprotsessorga 16 KB umumiy xotiradan foydalanish 
imkoniyatini beradi, bu esa teksturalarni olishdan ko'ra yuqori o'tkazish 
qobiliyatiga ega keshni tashkil qilish uchun ishlatilishi mumkin; 
• tizim va video xotira o'rtasida ma'lumotlarni yanada samarali uzatish 
• ortiqcha va qo'shimcha xarajatlar bilan grafik API-larga ehtiyoj yo'q; 
• chiziqli xotira manzillash, yig'ish va tarqatish, ixtiyoriy manzillarga yozish 
imkoniyati; 
• butun va bit operatsiyalari uchun apparat ta'minoti. 
CUDA ning asosiy cheklovlari: 
• bajariladigan funksiyalar uchun rekursion yordamning yo‘qligi; 
• blokning minimal kengligi 32 ta ipdan iborat; 
• Nvidia xususiy CUDA arxitekturasi. 
Oldingi GPGPU usullaridan foydalangan holda dasturlashning zaif 
tomonlari shundaki, bu usullar oldingi birlashtirilmagan arxitekturalarda vertex 
shader bajarish birliklaridan foydalanmaydi, ma'lumotlar teksturalarda saqlanadi, 
lekin ekrandan tashqari buferga chiqariladi va ko'p o'tishli algoritmlar piksel 
shaderidan foydalanadi. birliklar. GPGPU cheklovlari quyidagilarni o'z ichiga 
olishi mumkin: apparat imkoniyatlaridan etarli darajada foydalanmaslik, xotira 


167 
o'tkazish qobiliyatini cheklash, tarqalishning yo'qligi (faqat yig'ish), grafik API-
dan majburiy foydalanish. 
CUDA ning oldingi GPGPU usullariga nisbatan asosiy afzalliklari shundan 
iboratki, bu arxitektura GPUda grafik bo‘lmagan hisoblashlardan samarali 
foydalanish uchun mo‘ljallangan va algoritmlarni kontseptsiya uchun qulay 
shaklga o‘tkazishni talab qilmasdan C dasturlash tilidan foydalanadi. grafik quvur 
liniyasi. CUDA grafik API-lardan foydalanmaydigan, xotiraga tasodifiy kirishni 
(tarqatish yoki yig'ish) taklif qiluvchi GPU hisoblashning yangi usulini taklif etadi. 
Ushbu arxitektura GPGPU ning kamchiliklaridan mahrum va barcha ijro 
birliklaridan foydalanadi, shuningdek, butun matematik va bitni almashtirish 
operatsiyalari tufayli imkoniyatlarni kengaytiradi. 
CUDA va xotiraga kirishda qulayroq. Grafik API-dagi kod ma'lumotlarni 32 
ta bitta aniqlikdagi suzuvchi nuqta qiymatlari (bir vaqtning o'zida sakkizta 
ko'rsatish maqsadlarida RGBA qiymatlari) ko'rinishida oldindan belgilangan 
hududlarga chiqaradi va CUDA tarqoq yozuvni qo'llab-quvvatlaydi - istalgan 
joyda cheksiz miqdordagi yozuvlar. manzil. Ushbu afzalliklar GPU-da grafik API-
larga asoslangan GPGPU usullari yordamida samarali amalga oshirib bo'lmaydigan 
ba'zi algoritmlarni bajarishga imkon beradi. 
Bundan tashqari, grafik API-lar, albatta, ma'lumotlarni teksturalarda 
saqlaydi, bu esa katta massivlarni teksturalarga oldindan o'rashni talab qiladi, bu 
algoritmni murakkablashtiradi va maxsus manzillashdan foydalanishga majbur 
qiladi. Va CUDA har qanday manzilda ma'lumotlarni o'qish imkonini beradi. 
CUDA ning yana bir afzalligi CPU va GPU o'rtasida optimallashtirilgan 
ma'lumotlar almashinuvidir. Va past darajadagi kirishni xohlaydigan ishlab 
chiquvchilar uchun (masalan, boshqa dasturlash tilini yozishda) CUDA past 
darajadagi assembler tilini dasturlash imkoniyatini taklif qiladi. 
CUDA ishlab chiqilishi 2006 yil noyabr oyida G80 chipi bilan e'lon qilindi 
va CUDA SDK ning ommaviy beta versiyasi 2007 yil fevral oyida chiqarildi. 1.0 
versiyasi 2007 yil iyun oyida yuqori unumdorlikdagi hisoblash bozori uchun G80 
chipiga asoslangan Tesla yechimlarini ishga tushirish uchun chiqarildi. Keyin, yil 


168 
oxirida, CUDA 1.1 beta-versiyasi chiqarildi, u versiya sonining biroz ko'payishiga 
qaramay, juda ko'p yangi narsalarni taqdim etdi. 
CUDA 1.1 da paydo bo'lganidan biz CUDA funksiyasining oddiy Nvidia 
video drayverlariga kiritilganligini ta'kidlashimiz mumkin. Bu shuni anglatadiki, 
har qanday CUDA dasturiga qo'yiladigan talablarda Geforce 8 va undan yuqori 
seriyali video kartani, shuningdek, 169.xx drayverning minimal versiyasini 
ko'rsatish kifoya edi. Bu ishlab chiquvchilar uchun juda muhim, agar bu shartlar 
bajarilsa, CUDA dasturlari har qanday foydalanuvchi uchun ishlaydi. Shuningdek, 
ma'lumotlarni nusxalash (faqat G84, G86, G92 va undan yuqori chiplar uchun), 
ma'lumotlarni video xotiraga asinxron uzatish, atomik xotiraga kirish 
operatsiyalari, Windowsning 64-bitli versiyalarini qo'llab-quvvatlash va ko'p 
nusxalash imkoniyati bilan birga asinxron bajarish qo'shildi.
CUDA-ni qo'llab-quvvatlaydigan barcha grafik kartalar audio va videolarni 
qayta ishlashdan tortib, tibbiy va ilmiy tadqiqotlargacha bo'lgan eng qiyin 
vazifalarni tezlashtirishga yordam beradi. Yagona haqiqiy cheklov shundaki, 
ko'plab CUDA dasturlari kamida 256 megabayt video xotirani talab qiladi va bu 
CUDA ilovalari uchun eng muhim texnik xususiyatlardan biridir. 

Download 1,57 Mb.

Do'stlaringiz bilan baham:
1   ...   62   63   64   65   66   67   68   69   ...   74




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish