Nazorat savollari - Kafedrasi kompyuter arxitekturasi moduli bo‘yicha

|
Kafedrasi kompyuter arxitekturasi moduli bo‘yicha
|
bet | 62/80 | Sana | 06.07.2024 | Hajmi | 13,43 Mb. | | #266748 |
Bog'liq Kafedrasi kompyuter arxitekturasi moduli bo‘yichaNazorat savollari
1. C++ kompilyatoriga OpenMP ni qo’shish
2. OpenMP direktivalarini ishlatish
3. OpenMP texnologiyasidan foydalanish
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;
• qo'llab-quvvatlanadigan yechimlarning 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 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 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 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 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.
Nazorat savollari
1. CUDA texnologiyasidan foydalanish
2. CUDA ning afzalliklari
3. CUDA texnologiyasining asosiy xususiyatlarini
|
| |