U SM kompyuter resursi. Cuda qayerga olib boradi: gpgpu texnologiyasini amaliy qo'llash - eng yaxshi uskunalar Cuda-da ishlaydigan ilovalar

O'nlab yillar davomida Mur qonuni amalda bo'lib, har ikki yilda bir chipdagi tranzistorlar soni ikki baravar ko'payadi. Biroq, bu 1965 yilda bo'lgan va so'nggi 5 yil ichida iste'molchi protsessorlarida jismoniy ko'p yadroli g'oya jadal rivojlana boshladi: 2005 yilda Intel Pentium D ni, AMD esa Athlon X2 ni taqdim etdi. O'sha paytda 2 yadroli ilovalarni bir qo'lning barmoqlari bilan sanash mumkin edi. Biroq, inqilobni amalga oshirgan Intel protsessorlarining keyingi avlodi aynan 2 ta jismoniy yadroga ega edi. Bundan tashqari, Quad seriyasi 2007 yil yanvar oyida paydo bo'lgan, o'sha paytda Murning o'zi uning qonuni tez orada amal qilishni to'xtatishini tan oldi.

Endi nima? Ikki yadroli protsessorlar hatto byudjet ofis tizimlarida va 4 ta jismoniy yadro odatiy holga aylandi va bu atigi 2-3 yil ichida. Protsessorlarning chastotasi oshirilmaydi, lekin arxitektura yaxshilandi, jismoniy va virtual yadrolar soni ko'paydi. Biroq, o'nlab yoki hatto yuzlab hisoblash "birliklari" bilan jihozlangan video adapterlardan foydalanish g'oyasi uzoq vaqtdan beri mavjud.

Va GPU hisoblash istiqbollari juda katta bo'lsa-da, eng mashhur yechim Nvidia CUDA bo'lib, u bepul, juda ko'p hujjatlarga ega va umuman amalga oshirish juda oson, bu texnologiyadan foydalanadigan ilovalar ko'p emas. Asosan, bu har xil turdagi ixtisoslashtirilgan hisob-kitoblar bo'lib, o'rtacha foydalanuvchi ko'p hollarda ularga ahamiyat bermaydi. Ammo ommaviy foydalanuvchi uchun mo'ljallangan dasturlar ham mavjud va biz ular haqida ushbu maqolada gaplashamiz.

Birinchidan, texnologiyaning o'zi va u nima bilan ishlatilishi haqida bir oz. Chunki Maqola yozayotganda men o'quvchilarning keng doirasiga e'tibor qarataman, shuning uchun uni tushunarli tilda murakkab atamalarsiz va biroz qisqacha tushuntirishga harakat qilaman.

CUDA(inglizcha: Compute Unified Device Architecture) — GPGPU texnologiyasini qoʻllab-quvvatlaydigan NVIDIA grafik protsessorlari yordamida hisob-kitoblarni amalga oshirish imkonini beruvchi dasturiy va apparat arxitekturasi (video kartalarda tasodifiy hisoblash). CUDA arxitekturasi birinchi marta bozorda sakkizinchi avlod NVIDIA chipi - G80 chiqarilishi bilan paydo bo'ldi va GeForce, Quadro va Tesla tezlatkichlari oilalarida qo'llaniladigan keyingi barcha grafik chiplar seriyalarida mavjud. (c) Wikipedia.org

Kiruvchi oqimlar bir-biridan mustaqil ravishda qayta ishlanadi, ya'ni. parallel.

3 darajaga bo'linish mavjud:

To‘r- yadro. Bir/ikki/uch o'lchovli bloklar massivini o'z ichiga oladi.

Bloklash- ko'p iplarni o'z ichiga oladi. Turli bloklarning iplari bir-biri bilan o'zaro ta'sir qila olmaydi. Nima uchun bloklarni joriy qilish kerak edi? Har bir blok asosan o'zining pastki vazifasi uchun javobgardir. Masalan, katta rasm (bu matritsa) bir necha kichikroq qismlarga (matritsalarga) bo'linishi va tasvirning har bir qismi bilan parallel ravishda ishlanishi mumkin.

Ip- oqim. Bitta blok ichidagi mavzular umumiy xotira orqali o'zaro ta'sir qilishi mumkin, bu, aytmoqchi, global xotiraga qaraganda tezroq yoki ipni sinxronlashtirish vositalari orqali.

Buzilish bir-biri bilan o'zaro ta'sir qiluvchi iplar birlashmasi bo'lib, barcha zamonaviy GPUlar uchun Warp hajmi 32 ga teng. yarim burma, bu çözgü yarmi, chunki Xotiraga kirish odatda burilishning birinchi va ikkinchi yarmi uchun alohida sodir bo'ladi.

Ko'rib turganingizdek, bu arxitektura vazifalarni parallellashtirish uchun juda yaxshi. Garchi dasturlash ba'zi cheklovlar bilan C tilida amalga oshirilsa ham, aslida hamma narsa unchalik oddiy emas, chunki... hamma narsani parallel qilib bo'lmaydi. Tasodifiy raqamlarni yaratish (yoki ishga tushirish) uchun standart funktsiyalar ham mavjud emas; bularning barchasi alohida amalga oshirilishi kerak. Va juda ko'p tayyor variantlar mavjud bo'lsa-da, bularning hech biri quvonch keltirmaydi. Rekursiyadan foydalanish qobiliyati nisbatan yaqinda paydo bo'ldi.

Aniqlik uchun, float tipidagi ikkita massiv bilan operatsiyalarni bajaradigan kichik konsol dasturi (kodni minimallashtirish uchun) yozildi, ya'ni. butun son bo'lmagan qiymatlar bilan. Yuqorida aytib o'tilgan sabablarga ko'ra, ishga tushirish (massivni turli xil ixtiyoriy qiymatlar bilan to'ldirish) CPU tomonidan amalga oshirildi. Keyin har bir massivdan mos keladigan elementlar bilan 25 ta turli amallar bajarildi, oraliq natijalar uchinchi massivga yozildi. Massivning o'lchami o'zgartirildi, natijalar quyidagicha:

Hammasi bo'lib 4 ta sinov o'tkazildi:

Har bir massivda 1024 ta element:

Ko'rinib turibdiki, bunday kam sonli elementlar bilan parallel hisoblash juda kam foyda keltiradi, chunki Hisob-kitoblarning o'zi ularni tayyorlashdan ancha tezroq.

Har bir massivda 4096 ta element:

Va endi siz video karta massivlar bo'yicha operatsiyalarni protsessorga qaraganda 3 barobar tezroq bajarishini ko'rishingiz mumkin. Bundan tashqari, ushbu testni video kartada bajarish vaqti oshmadi (vaqtning biroz qisqarishi xato bilan bog'liq bo'lishi mumkin).

Endi har bir massivda 12288 ta element mavjud:

Video kartani ajratish 2 barobar oshdi. Yana shuni ta'kidlash joizki, video kartada bajarilish vaqti oshdi
ahamiyatsiz, lekin protsessorda 3 martadan ortiq, ya'ni. vazifaning murakkabligiga mutanosib.

Va oxirgi sinov har bir massivda 36864 ta elementdan iborat:

Bunday holda, tezlashuv ta'sirchan qiymatlarga etadi - video kartada deyarli 22 baravar tezroq. Va yana, video kartada bajarish vaqti biroz oshdi, lekin protsessorda - talab qilinadigan 3 marta, bu yana vazifaning murakkabligi bilan mutanosib.

Agar siz hisob-kitoblarni murakkablashtirishda davom etsangiz, video karta ko'proq va ko'proq g'alaba qozonadi. Garchi misol biroz bo'rttirilgan bo'lsa-da, umumiy vaziyat aniq ko'rinadi. Lekin yuqorida aytib o'tilganidek, hamma narsani parallel qilib bo'lmaydi. Masalan, Pi ni hisoblash. Faqat Monte-Karlo usuli yordamida yozilgan misollar mavjud, ammo hisob-kitoblarning aniqligi 7 kasrdan iborat, ya'ni. muntazam suzuvchi. Hisob-kitoblarning aniqligini oshirish uchun uzoq arifmetika talab qilinadi va bu erda muammolar paydo bo'ladi, chunki Buni samarali amalga oshirish juda va juda qiyin. Internetda CUDA ishlatadigan va Pi ni 1 million kasrgacha hisoblaydigan misollarni topa olmadim. Bunday dasturni yozishga urinishlar qilingan, ammo Pi ni hisoblashning eng oddiy va samarali usuli Brent-Salamin algoritmi yoki Gauss formulasi hisoblanadi. Mashhur SuperPI, ehtimol, (ishlash tezligi va iteratsiyalar soniga qarab) Gauss formulasidan foydalanadi. Va hukmga ko'ra
SuperPI bir torli bo'lganligi, CUDA bo'yicha misollar yo'qligi va mening urinishlarim muvaffaqiyatsizligi tufayli Pi hisobini samarali parallellashtirish mumkin emas.

Aytgancha, siz hisob-kitoblar paytida GPUdagi yuk qanday ortib borayotganini va xotira ham ajratilganini ko'rishingiz mumkin.

Endi CUDA ning ko'proq amaliy afzalliklariga, ya'ni ushbu texnologiyadan foydalanadigan hozirda mavjud dasturlarga o'tamiz. Ko'pincha, bu barcha turdagi audio / video konvertorlar va muharrirlar.

Sinovda 3 xil videofayl ishlatilgan:

      *Avatar filmining yaratilish tarixi - 1920x1080, MPEG4, h.264.
      *"Menga yolg'on" seriyasi - 1280x720, MPEG4, h.264.
      *"Filadelfiyada har doim quyoshli" seriyasi - 624x464, xvid.

Birinchi ikkita faylning konteyneri va hajmi .mkv va 1,55 GB, oxirgisi esa .avi va 272 MB edi.

Keling, juda shov-shuvli va mashhur mahsulotdan boshlaylik - Badaboom. Ishlatilgan versiya - 1.2.1.74 . Dasturning narxi $29.90 .

Dastur interfeysi sodda va intuitivdir - chap tomonda biz manba fayl yoki diskni tanlaymiz, o'ngda esa - kodlashimiz kerak bo'lgan qurilma. Parametrlar qo'lda o'rnatiladigan foydalanuvchi rejimi ham mavjud, biz foydalanganimiz.

Birinchidan, videoning qanchalik tez va samarali tarzda "o'ziga" kodlanganligini ko'rib chiqaylik, ya'ni. bir xil o'lcham va taxminan bir xil o'lchamda. Biz tezlikni o'tgan vaqt ichida emas, balki fps bilan o'lchaymiz - shu tarzda ixtiyoriy uzunlikdagi video qanchalik siqilishini solishtirish va hisoblash qulayroqdir. Chunki Bugun biz "yashil" texnologiyani ko'rib chiqmoqdamiz, keyin grafiklar mos keladi -)

Kodlash tezligi bevosita sifatga bog'liq, bu aniq. Shuni ta'kidlash joizki, yorug'lik o'lchamlari (an'anaviy ravishda SD deb ataymiz) Badaboom uchun muammo emas - kodlash tezligi original (24 kadr / s) video kadrlar tezligidan 5,5 baravar yuqori. Va hatto og'ir 1080p video dastur tomonidan real vaqtda o'zgartiriladi. Shunisi e'tiborga loyiqki, yakuniy videoning sifati asl video materialga juda yaqin, ya'ni. Badaboom juda va juda samarali kodlaydi.

Ammo odatda ular videoni pastroq piksellar soniga o'tkazadilar, keling, ushbu rejimda narsalar qanday ekanligini ko'rib chiqaylik. Ruxsat kamayganligi sababli, video bit tezligi ham kamaydi. 1080p chiqish fayli uchun 9500 kbps, 720p uchun 4100 kbps va 720x404 uchun 2400 kbps edi. Tanlov oqilona o'lcham / sifat nisbati asosida amalga oshirildi.

Hech qanday izoh kerak emas. Agar siz 720p dan oddiy SD sifatiga yirtib tashlasangiz, 2 soat davom etadigan filmni transkodlash taxminan 30 daqiqa davom etadi. Va shu bilan birga, protsessor yuki ahamiyatsiz bo'ladi, siz o'z biznesingizni noqulay his qilmasdan davom ettirishingiz mumkin.

Videoni mobil qurilma uchun formatga aylantirsangiz nima bo'ladi? Buning uchun iPhone profilini tanlang (bit tezligi 1 Mbit/s, 480x320) va kodlash tezligiga qarang:

Biror narsa aytishim kerakmi? Oddiy iPhone sifatidagi ikki soatlik film 15 daqiqadan kamroq vaqt ichida transkodlanadi. HD sifati bilan bu qiyinroq, lekin baribir juda tez. Asosiysi, chiquvchi videoning sifati telefon displeyida ko'rilganda ancha yuqori darajada qoladi.

Umuman olganda, Badaboom taassurotlari ijobiy, ishlash tezligi yoqimli, interfeysi sodda va tushunarli. Oldingi versiyalardagi barcha turdagi xatolar (men beta-versiyasini 2008 yilda ishlatganman) tuzatildi. Bitta narsadan tashqari - manba faylga, shuningdek, tayyor video saqlanadigan papkaga yo'lda ruscha harflar bo'lmasligi kerak. Ammo dasturning afzalliklari bilan taqqoslaganda, bu kamchilik ahamiyatsiz.

Keyingi qatorda bizda bo'ladi Super LoiLoScope. Oddiy versiya uchun ular so'rashadi 3280 rubl, va Windows 7 da sensorli boshqaruvni qo'llab-quvvatlaydigan sensorli versiya uchun ular shunchalik so'rashadi 4440 rubl. Keling, nima uchun ishlab chiquvchi bunday pulni xohlashini va nima uchun video muharriri multitouch yordamiga muhtojligini aniqlashga harakat qilaylik. Ishlatilgan oxirgi versiya - 1.8.3.3 .

Dastur interfeysini so'z bilan ta'riflash juda qiyin, shuning uchun men qisqa video suratga olishga qaror qildim. Men darhol aytamanki, CUDA uchun barcha video konvertorlar kabi, GPU tezlashuvi faqat h.264 kodek bilan MPEG4 video chiqishi uchun qo'llab-quvvatlanadi.

Kodlash paytida protsessor yuki 100% ni tashkil qiladi, ammo bu noqulaylik tug'dirmaydi. Brauzer va boshqa engil ilovalar sekinlashmaydi.

Endi ishlashga o'tamiz. Boshlash uchun hamma narsa Badaboom bilan bir xil - videoni sifat jihatidan o'xshash videoga aylantirish.

Natijalar Badaboomga qaraganda ancha yaxshi. Sifat ham a'lo darajada, asl nusxadan farqni faqat lupa ostidagi ramkalarni juft bo'lib solishtirish orqali sezish mumkin.

Voy, bu erda LoiloScope Badaboom-dan 2,5 baravar yuqori. Shu bilan birga, siz boshqa videoni parallel ravishda osongina kesib olishingiz va kodlashingiz, yangiliklarni o'qishingiz va hatto filmlarni tomosha qilishingiz mumkin, hatto protsessor yuki maksimal bo'lsa ham, FullHD muammosiz o'ynaladi.

Endi mobil qurilma uchun video suratga olishga harakat qilaylik, profilni Badaboom - iPhone (480x320, 1 Mbit/s) da qanday chaqirilgan bo'lsa, shunday deb ataymiz:

Hech qanday xatolik yo'q. Har bir narsa bir necha marta qayta tekshirildi, har safar natija bir xil edi. Ehtimol, bu oddiy sababga ko'ra sodir bo'ladi, chunki SD fayl boshqa kodek bilan va boshqa konteynerda yozilgan. Transkodlashda video avval dekodlanadi, ma'lum o'lchamdagi matritsalarga bo'linadi va siqiladi. Xvid holatida ishlatiladigan ASP dekoderi parallel ravishda dekodlashda AVC dan (h.264 uchun) sekinroq. Biroq, 192 kadr / s asl video tezligidan 8 baravar tezroq; 23 daqiqali seriya 4 daqiqadan kamroq vaqt ichida siqiladi. Vaziyat xvid/DivX-ga siqilgan boshqa fayllar bilan takrorlandi.

LoiloScope Men faqat yoqimli taassurotlar qoldirdim - interfeys, o'zining g'ayrioddiyligiga qaramay, qulay va funktsional va ishlash tezligi maqtovga sazovor emas. Nisbatan zaif funksionallik biroz asabiylashadi, lekin ko'pincha oddiy o'rnatish bilan siz ranglarni biroz sozlashingiz, silliq o'tishlarni amalga oshirishingiz va matn qo'shishingiz kerak bo'ladi va LoiloScope bu bilan juda yaxshi ishlaydi. Narx ham biroz qo'rqinchli - oddiy versiya uchun 100 dollardan ko'proq xorijiy mamlakatlar uchun odatiy hol, ammo bunday ko'rsatkichlar hali ham biz uchun biroz vahshiy ko'rinadi. Garchi, tan olaman, agar men, masalan, uy videolarini tez-tez suratga oladigan va tahrir qilsam, uni sotib olish haqida o'ylagan bo'lardim. Aytgancha, men HD (aniqrog'i AVCHD) kontentini boshqa formatga o'tkazmasdan to'g'ridan-to'g'ri videokameradan tahrirlash imkoniyatini tekshirdim; LoiloScope .mts kabi fayllar bilan bog'liq hech qanday muammolarni aniqlamadi.

Yangi texnologiya yangi paydo bo'lgan evolyutsion turga o'xshaydi. Ko'p eski odamlardan farqli o'laroq, g'alati mavjudot. Ba'zan noqulay, ba'zida kulgili. Va dastlab uning yangi fazilatlari bu turg'un va barqaror dunyoga mos kelmaydigan ko'rinadi.

Biroq, biroz vaqt o'tadi va yangi boshlovchi tezroq yuguradi, balandroq sakraydi va umuman kuchliroq bo'ladi. Va u retrograd qo'shnilariga qaraganda ko'proq chivinlarni eydi. Va keyin o'sha qo'shnilar bu qo'pol sobiq bilan janjallashishning ma'nosi yo'qligini tushunishni boshlaydilar. U bilan do'st bo'lish va simbiozni tashkil qilish yaxshiroqdir. Ko'rasiz, pashshalar ko'payadi.

GPGPU texnologiyasi (General-Purpose Graphics Processing Units - umumiy maqsadli grafik protsessor) uzoq vaqt davomida faqat aqlli akademiklarning nazariy hisob-kitoblarida mavjud edi. Yana qanday qilib? O'nlab yillar davomida ishlab chiqilgan hisoblash jarayonini uning parallel tarmoqlarini hisoblashni video kartaga topshirish orqali tubdan o'zgartirishni taklif qilish - bunga faqat nazariyotchilar qodir.

CUDA texnologiyasining logotipi bizga uning chuqurlikda o'sganligini eslatadi
3D grafika.

Ammo GPGPU texnologiyasi universitet jurnallari sahifalarida uzoq vaqt chang to'plamoqchi emas edi. O'zining eng yaxshi fazilatlari patlarini to'kib tashlab, u ishlab chiqaruvchilarning e'tiborini tortdi. CUDA shunday tug'ildi - nVidia tomonidan ishlab chiqarilgan GeForce grafik protsessorlarida GPGPU-ning amalga oshirilishi.

CUDA tufayli GPGPU texnologiyalari asosiy oqimga aylandi. Va endi faqat eng uzoqni ko'ra bilmaydigan va qalin dangasalik qatlami bilan qoplangan dasturlash tizimlarini ishlab chiquvchisi o'z mahsuloti bilan CUDA-ni qo'llab-quvvatlashni e'lon qilmaydi. IT-nashrlari texnologiya tafsilotlarini ko'plab mashhur ilmiy maqolalarda taqdim etishni sharaf deb bilishdi va raqobatchilar darhol shunga o'xshash narsalarni ishlab chiqish uchun naqshlar va o'zaro kompilyatorlar bilan o'tirishdi.

Jamoatchilik tomonidan tan olinish nafaqat intiluvchan yulduzlar, balki yangi tug'ilgan texnologiyalar uchun ham orzudir. Va CUDAga omad kulib boqdi. Uni hamma biladi, u haqida gapirishadi va yozishadi.

Ular xuddi qalin ilmiy jurnallarda GPGPUni muhokama qilishda davom etayotgandek yozishadi. Ular o'quvchini "grid", "SIMD", "warp", "host", "tekstura va doimiy xotira" kabi atamalar to'plami bilan bombardimon qilishadi. Ular uni nVidia GPU-larining tashkiliy diagrammalarida eng yuqori darajaga ko'taradilar, uni parallel algoritmlarning aylanma yo'llari bo'ylab olib boradilar va (eng kuchli harakat) C tilida uzoq kodli ro'yxatlarni ko'rsatadilar. Natijada, ma'lum bo'lishicha, maqolaning kiritilishida bizda CUDA-ni tushunish istagi yonayotgan yangi o'quvchi bor va chiqishda bizda xuddi shunday o'quvchi bor, lekin boshi shishib ketgan faktlar, diagrammalar bilan to'la. , kod, algoritmlar va atamalar.

Shu bilan birga, har qanday texnologiyaning maqsadi hayotimizni osonlashtirishdir. Va CUDA bu bilan ajoyib ish qiladi. Uning ishining natijalari har qanday skeptikni yuzlab sxemalar va algoritmlardan ko'ra yaxshiroq ishontiradi.

Hamma joyda emas

CUDA yuqori unumdor superkompyuterlar tomonidan quvvatlanadi
nVidia Tesla.

Va shunga qaramay, o'rtacha foydalanuvchining hayotini osonlashtirish sohasidagi CUDA ishining natijalarini ko'rib chiqishdan oldin, uning barcha cheklovlarini tushunishga arziydi. Xuddi jin bilan bo'lgani kabi: har qanday istak, lekin bitta. CUDA shuningdek, Axilles to'pig'iga ega. Ulardan biri - u ishlashi mumkin bo'lgan platformalarning cheklovlari.

CUDA-ni qo'llab-quvvatlaydigan nVidia video kartalari ro'yxati CUDA Enabled Products deb nomlangan maxsus ro'yxatda keltirilgan. Ro'yxat juda ta'sirli, ammo tasniflash oson. CUDA qo'llab-quvvatlashi rad etilmaydi:

    Bortda kamida 256 megabayt video xotiraga ega nVidia GeForce 8, 9, 100, 200 va 400 seriyali modellari. Qo'llab-quvvatlash ham ish stoli, ham mobil kartalarga taalluqlidir.

    Ish stoli va mobil video kartalarning katta qismi nVidia Quadro hisoblanadi.

    Nvidia ION netbuklari seriyasining barcha yechimlari.

    Yuqori samarali HPC (High Performance Computing) va nVidia Tesla superkompyuter yechimlari shaxsiy hisob-kitoblar uchun ham, kengaytiriladigan klaster tizimlarini tashkil qilish uchun ham qo'llaniladi.

Shuning uchun, CUDA-ga asoslangan dasturiy mahsulotlarni ishlatishdan oldin, ushbu sevimlilar ro'yxatini tekshirishga arziydi.

Video kartaning o'ziga qo'shimcha ravishda, CUDA-ni qo'llab-quvvatlash uchun tegishli drayver talab qilinadi. Bu markaziy va grafik protsessorlar o'rtasidagi bog'liqlik bo'lib, GPU ko'p yadroli xazinasiga dastur kodlari va ma'lumotlarga kirish uchun o'ziga xos dasturiy interfeys vazifasini bajaradi. Xatoga yo'l qo'ymaslik uchun nVidia drayverlar sahifasiga tashrif buyurishni va eng so'nggi versiyasini olishni tavsiya qiladi.

... lekin jarayonning o'zi

CUDA qanday ishlaydi? O'quvchini o'ziga xos atamalar tubiga tushirmasdan, maxsus GPU apparat arxitekturasida parallel hisoblashning murakkab jarayonini qanday tushuntirish mumkin?

Buni markaziy protsessor dasturni grafik protsessor bilan simbiozda qanday bajarishini tasavvur qilish orqali amalga oshirishga harakat qilishingiz mumkin.

Arxitektura jihatidan markaziy protsessor (CPU) va uning grafik hamkasbi (GPU) boshqacha tarzda yaratilgan. Agar biz avtomobil sanoati dunyosi bilan o'xshashlik qilsak, protsessor stansiya vagonidir, ulardan biri "ombor" deb ataladi. Bu yengil avtomobilga o'xshaydi, lekin ayni paytda (ishlab chiquvchilar nuqtai nazaridan) "bu shveytsariyalik, o'roqchi va quvur ustidagi o'yinchi". Bir vaqtning o'zida kichik yuk mashinasi, avtobus va gipertrofiyalangan xetchbek rolini bajaradi. Vagon, qisqasi. U bir nechta silindrli yadrolarga ega, ammo ular deyarli har qanday vazifani bajaradi va ta'sirchan kesh xotirasi ko'plab ma'lumotlarni saqlashga qodir.

Ammo GPU - bu sport avtomobili. Faqat bitta funktsiya mavjud: uchuvchini imkon qadar tezroq marraga etkazish. Shuning uchun, katta magistral xotirasi, qo'shimcha o'rindiqlar yo'q. Ammo silindr yadrolari protsessorga qaraganda yuzlab marta ko'p.

CUDA tufayli GPGPU dasturini ishlab chiquvchilar dasturlashning murakkabliklarini o'rganishlari shart emas
DirectX va OpenGL kabi grafik dvigatellar uchun ishlab chiqish

Har qanday vazifani, shu jumladan grafikani ham hal qila oladigan, lekin o'rtacha ishlashga ega bo'lgan markaziy protsessordan farqli o'laroq, grafik protsessor bitta vazifani yuqori tezlikda hal qilishga moslashtirilgan: kirishdagi ko'pburchaklar to'plamini piksellar to'plamiga aylantirish. chiqish. Bundan tashqari, bu muammoni GPUdagi yuzlab nisbatan oddiy hisoblash yadrolari yordamida parallel ravishda hal qilish mumkin.

Xo'sh, stansiya vagonidan va sport avtomobilidan qanday tandem bo'lishi mumkin? CUDA shunday ishlaydi: dastur protsessorda parallel ravishda bajarilishi mumkin bo'lgan kod bo'limi mavjud bo'lmaguncha ishlaydi. Keyin, u eng zo'r protsessorning ikkita (hatto sakkiz) yadrosida asta-sekin bajarilishi o'rniga, u yuzlab GPU yadrolariga o'tkaziladi. Shu bilan birga, ushbu bo'limning bajarilish vaqti sezilarli darajada kamayadi, ya'ni butun dasturni bajarish vaqti ham qisqaradi.

Texnologik jihatdan dasturchi uchun hech narsa o'zgarmaydi. CUDA dasturlari kodi C tilida yozilgan. Aniqrog'i, o'zining maxsus dialektida "C with streams" (S with streams). Stenfordda ishlab chiqilgan C tilining bu kengaytmasi Bruk deb ataladi. Brook kodini GPUga o'tkazadigan interfeys CUDA-ni qo'llab-quvvatlaydigan video kartaning drayveri. U dasturning ushbu bo'limining butun qayta ishlash jarayonini tashkil qiladi, shunda dasturchi uchun GPU CPU protsessoriga o'xshaydi. Shaxsiy hisoblashning dastlabki kunlarida matematik protsessordan foydalanishga juda o'xshash. Brook, CUDA qo'llab-quvvatlovchi video kartalar va ular uchun drayverlarning paydo bo'lishi bilan har qanday dasturchi o'z dasturlarida GPUga kirish imkoniyatiga ega bo'ldi. Ammo bundan oldin, bu shamanizm DirectX yoki OpenGL grafik dvigatellari uchun dasturlash texnikasini yillar davomida o'rgangan tanlangan odamlarning tor doirasiga tegishli edi.

Bu dabdabali asalning bochkasida - CUDA maqtovlari - malhamga chivin, ya'ni cheklovlar qo'yishga arziydi. Dasturlash kerak bo'lgan har bir muammoni CUDA yordamida hal qilib bo'lmaydi. Oddiy ofis vazifalarini hal qilishni tezlashtirishning iloji bo'lmaydi, lekin World of Warcraft-da minglab bir xil turdagi jangchilarning xatti-harakatlarini hisoblash uchun CUDA-ga ishonishingiz mumkin. Ammo bu o'ylab topilgan vazifa. Keling, CUDA allaqachon juda samarali hal qiladigan misollarni ko'rib chiqaylik.

Solih ishlar

CUDA juda pragmatik texnologiya. O'zining video kartalarida o'z qo'llab-quvvatlashini amalga oshirgan nVidia CUDA bannerini universitet muhitida ham, tijoratda ham ko'plab ishqibozlar tomonidan qabul qilinishini to'g'ri kutgan edi. Va shunday bo'ldi. CUDA asosidagi loyihalar yashaydi va foyda keltiradi.

NVIDIA PhysX

Keyingi o'yin asarini reklama qilishda ishlab chiqaruvchilar ko'pincha uning 3D realizmiga urg'u berishadi. Ammo 3D o‘yin dunyosi qanchalik real bo‘lmasin, fizikaning gravitatsiya, ishqalanish va gidrodinamika kabi elementar qonunlari noto‘g‘ri amalga oshirilsa, yolg‘on bir zumda seziladi.

NVIDIA PhysX fizika dvigatelining imkoniyatlaridan biri bu to'qimalar bilan real ishlashdir.

Asosiy fizik qonunlarni kompyuterda simulyatsiya qilish algoritmlarini amalga oshirish juda ko'p mehnat talab qiladigan ishdir. Bu sohadagi eng mashhur kompaniyalar Irlandiyaning Havok kompaniyasi bo'lib, uning o'zaro platformali jismoniy Havok Physics va Kaliforniyalik Ageia - dunyodagi birinchi jismoniy protsessor (PPU - Physics Processing Unit) va tegishli PhysX fizika dvigatelining avlodi. Ulardan birinchisi, garchi Intel tomonidan sotib olingan bo'lsa-da, hozirda ATI video kartalari va AMD protsessorlari uchun Havok dvigatelini optimallashtirish sohasida faol ishlamoqda. Ammo Ageia o'zining PhysX dvigateli bilan nVidia tarkibiga kirdi. Shu bilan birga, nVidia PhysX-ni CUDA texnologiyasiga moslashtirish bo'yicha juda qiyin muammoni hal qildi.

Bu statistika tufayli mumkin bo'ldi. Statistik ma'lumotlarga ko'ra, GPU qanchalik murakkab renderlash amalga oshirilmasin, uning ba'zi yadrolari hali ham ishlamaydi. Aynan shu yadrolarda PhysX dvigateli ishlaydi.

CUDA tufayli o'yin dunyosi fizikasi bilan bog'liq hisob-kitoblarning asosiy ulushi video kartada amalga oshirila boshlandi. Markaziy protsessorning bo'shatilgan quvvati boshqa o'yin muammolarini hal qilish uchun ishlatilgan. Natija uzoq kutilmadi. Mutaxassislarning fikriga ko'ra, CUDA-da ishlaydigan PhysX bilan o'yinda samaradorlik kamida bir darajaga oshdi. Jismoniy qonunlarni amalga oshirish ehtimoli ham oshdi. CUDA ko'p o'lchovli ob'ektlar uchun ishqalanish, tortishish va bizga tanish bo'lgan boshqa narsalarni amalga oshirishning muntazam hisob-kitoblari bilan shug'ullanadi. Endi nafaqat qahramonlar va ularning jihozlari bizga tanish bo'lgan jismoniy dunyo qonunlariga juda mos keladi, balki chang, tuman, portlash to'lqini, olov va suv ham.

NVIDIA Texture Tools 2 teksturasini siqish paketining CUDA versiyasi

Zamonaviy o'yinlarda real narsalarni yoqtirasizmi? To'qimalarni ishlab chiquvchilarga rahmat aytishga arziydi. Ammo to'qimalarda qanchalik ko'p haqiqat bo'lsa, uning hajmi shunchalik katta bo'ladi. Qanchalik qimmatli xotirani egallaydi. Bunga yo'l qo'ymaslik uchun teksturalar oldindan siqiladi va kerak bo'lganda dinamik ravishda ochiladi. Va siqish va dekompressiya sof hisob-kitoblardir. Teksturalar bilan ishlash uchun nVidia NVIDIA Texture Tools paketini chiqardi. Bu DirectX teksturalarini (HF formati deb ataladigan) samarali siqish va dekompressiyani qo'llab-quvvatlaydi. Ushbu paketning ikkinchi versiyasi DirectX 11 texnologiyasida amalga oshirilgan BC4 va BC5 siqish algoritmlarini qo'llab-quvvatlaydi, lekin asosiysi NVIDIA Texture Tools 2 CUDA qo'llab-quvvatlashini o'z ichiga oladi. nVidia ma'lumotlariga ko'ra, bu teksturani siqish va dekompressiya vazifalarida ishlashni 12 baravar oshiradi. Bu shuni anglatadiki, o'yin ramkalari tezroq yuklanadi va o'yinchini realizmi bilan quvontiradi.

NVIDIA Texture Tools 2 to'plami CUDA bilan ishlash uchun mo'ljallangan. To'qimalarni siqish va ochishda ishlashning oshishi aniq.

CUDA dan foydalanish video kuzatuv samaradorligini sezilarli darajada oshirishi mumkin.

Haqiqiy vaqtda video oqimini qayta ishlash

Kim nima deyishidan qat'iy nazar, hozirgi dunyo, josuslik nuqtai nazaridan, Oruellning Katta akasining dunyosiga ko'rinadiganidan ko'ra ancha yaqinroq. Avtomobil haydovchilari ham, jamoat joylariga tashrif buyuruvchilar ham videokameralar nigohini his qilishadi.

Videoaxborotning to‘la-to‘kis daryolari uni qayta ishlash markazlariga oqib o‘tadi va... tor bo‘g‘in – shaxsga oqib tushadi. Aksariyat hollarda u video dunyosini kuzatuvchi so'nggi hokimiyat hisoblanadi. Bundan tashqari, hokimiyat eng samarali emas. Miltillaydi, chalg'itadi va uxlab qolishga harakat qiladi.

CUDA tufayli video oqimidagi bir nechta ob'ektlarni bir vaqtning o'zida kuzatish uchun algoritmlarni amalga oshirish mumkin bo'ldi. Bunday holda, jarayon real vaqtda sodir bo'ladi va video to'liq 30 kadr / sek. Zamonaviy ko'p yadroli protsessorlarda bunday algoritmni amalga oshirish bilan solishtirganda, CUDA ishlashni ikki yoki uch baravar oshiradi va bu juda ko'p.

Video konvertatsiya, audio filtrlash

Badaboom video konvertori konvertatsiyani tezlashtirish uchun CUDA-dan birinchi bo'lib foydalanadi.

Yangi video prokat mahsulotini FullHD sifati va katta ekranda tomosha qilish yoqimli. Ammo yo'lda siz bilan katta ekranni olib bo'lmaydi va FullHD video kodek mobil gadjetning kam quvvatli protsessorida hiqichoq bo'ladi. Konvertatsiya yordamga keladi. Ammo amalda duch kelganlarning ko'pchiligi konvertatsiya qilish muddati haqida shikoyat qiladilar. Bu tushunarli, jarayon muntazam, parallellashtirish uchun mos va uning protsessorda bajarilishi juda maqbul emas.

Ammo CUDA bu bilan portlash bilan kurashadi. Birinchi belgi - Elevental-dan Badaboom konvertori. Badaboom ishlab chiquvchilari CUDA ni tanlashda to'g'ri qaror qabul qilishdi. Sinovlar shuni ko'rsatadiki, u bir yarim soatlik standart filmni yigirma daqiqadan kamroq vaqt ichida iPhone/iPod Touch formatiga o'zgartiradi. Va bu faqat protsessordan foydalanganda, bu jarayon bir soatdan ko'proq vaqt talab qilsa ham.

CUDA va professional musiqa ixlosmandlariga yordam beradi. Ularning har biri samarali FIR krossoveri uchun yarim shohlikni beradi - tovush spektrini bir nechta diapazonlarga ajratadigan filtrlar to'plami. Bu jarayon juda ko'p mehnat talab qiladi va katta hajmdagi audio material bilan ovoz muhandisini bir necha soat davomida "tutun" qilishga majbur qiladi. CUDA asosidagi FIR krossoverini amalga oshirish uning ishlashini yuzlab marta tezlashtiradi.

CUDA kelajagi

GPGPU texnologiyasini haqiqatga aylantirgan CUDA o'z yutuqlariga tayanmaydi. Hamma joyda bo'lgani kabi, CUDA da aks ettirish printsipi ishlaydi: endi nafaqat nVidia video protsessorlari arxitekturasi CUDA SDK versiyalarining rivojlanishiga ta'sir qiladi, balki CUDA texnologiyasining o'zi nVidia-ni chiplari arxitekturasini qayta ko'rib chiqishga majbur qiladi. Bunday aks ettirishga misol nVidia ION platformasi. Uning ikkinchi versiyasi CUDA muammolarini hal qilish uchun maxsus optimallashtirilgan. Bu shuni anglatadiki, hatto nisbatan arzon apparat echimlarida ham iste'molchilar CUDA ning barcha kuchi va ajoyib imkoniyatlarini oladi.

Va u xost kodini (asosiy, boshqaruv kodi) va qurilma kodini (apparat kodi) (.cu kengaytmali fayllar) har qanday dasturlash muhitida yakuniy dastur yoki kutubxonani yig'ish jarayoniga mos keladigan ob'ekt fayllariga tarjima qilish uchun mo'ljallangan. NetBeans-da.

CUDA arxitekturasi tarmoq xotirasi modeli, klaster iplarini modellashtirish va SIMD ko'rsatmalaridan foydalanadi. U nafaqat yuqori unumdorlikdagi grafik hisoblash uchun, balki nVidia video kartalari yordamida turli ilmiy hisoblashlar uchun ham amal qiladi. Olimlar va tadqiqotchilar CUDA dan astrofizika, hisoblash biologiyasi va kimyo, suyuqliklar dinamikasini modellashtirish, elektromagnit o‘zaro ta’sirlar, kompyuter tomografiyasi, seysmik tahlil va boshqalarni o‘z ichiga olgan turli sohalarda keng qo‘llashadi. CUDA OpenGL va Direct3D yordamida ilovalarga ulanish imkoniyatiga ega. CUDA Linux, Mac OS X va Windows kabi operatsion tizimlar uchun oʻzaro platformali dasturiy taʼminotdir.

2010 yil 22 martda nVidia CUDA Toolkit 3.0 ni chiqardi, unda OpenCL qo'llab-quvvatlanadi.

Uskunalar

CUDA platformasi birinchi marta bozorda sakkizinchi avlod NVIDIA G80 chipining chiqarilishi bilan paydo bo'ldi va GeForce, Quadro va NVidia Tesla tezlatgichlari oilalarida qo'llaniladigan keyingi barcha grafik chiplar seriyalarida mavjud bo'ldi.

CUDA SDK-ni qo'llab-quvvatlaydigan birinchi apparat seriyasi, G8x, API sifatida CUDA SDK-dan foydalangan holda 32-bitli bir aniqlikdagi vektor protsessoriga ega edi (CUDA C ikki turini qo'llab-quvvatlaydi, ammo uning aniqligi endi 32-bitga qisqartirildi. suzuvchi nuqta). Keyinchalik GT200 protsessorlari 64 bitli aniqlikni qo'llab-quvvatlaydi (faqat SFU), lekin unumdorligi 32 bitli aniqlikka qaraganda sezilarli darajada yomonroq (har bir oqim multiprotsessorida faqat ikkita SFU borligi sababli, sakkizta skalyar protsessor mavjud). GPU barcha GPU resurslaridan foydalanishga imkon beruvchi apparat multithreadingni tashkil qiladi. Shunday qilib, jismoniy tezlatgichning funktsiyalarini grafik tezlatkichga o'tkazish istiqbollari ochiladi (amalga oshirish misoli nVidia PhysX). Bu, shuningdek, murakkab nografik hisob-kitoblarni bajarish uchun kompyuter grafikasi uskunasidan foydalanish uchun keng imkoniyatlar ochadi: masalan, hisoblash biologiyasi va fanning boshqa sohalarida.

Afzalliklar

Grafik API orqali umumiy maqsadli hisoblashni tashkil qilishning an'anaviy yondashuvi bilan solishtirganda, CUDA arxitekturasi ushbu sohada quyidagi afzalliklarga ega:

Cheklovlar

  • Qurilmada bajariladigan barcha funktsiyalar rekursiyani qo'llab-quvvatlamaydi (CUDA Toolkit 3.1 ko'rsatkichlar va rekursiyani qo'llab-quvvatlaydi) va boshqa cheklovlarga ega.

Qo'llab-quvvatlanadigan GPU va grafik tezlatgichlar

CUDA texnologiyasini to'liq qo'llab-quvvatlashi e'lon qilingan uskunalar ishlab chiqaruvchi Nvidia qurilmalari ro'yxati Nvidia rasmiy veb-saytida keltirilgan: CUDA-Enabled GPU Products (inglizcha).

Aslida, quyidagi tashqi qurilmalar hozirda shaxsiy kompyuter uskunalari bozorida CUDA texnologiyasini qo'llab-quvvatlaydi:

Spetsifikatsiya versiyasi GPU Video kartalar
1.0 G80, G92, G92b, G94, G94b GeForce 8800GTX/Ultra, 9400GT, 9600GT, 9800GT, Tesla C/D/S870, FX4/5600, 360M, GT 420
1.1 G86, G84, G98, G96, G96b, G94, G94b, G92, G92b GeForce 8400GS/GT, 8600GT/GTS, 8800GT/GTS, 9600 GSO, 9800GTX/GX2, GTS 250, GT 120/30/40, FX 4/570, 3/580, 17/18, 3/580, 17/18, 30, 20, 30, 30 /370M, 3/5/770M, 16/17/27/28/36/37/3800M, NVS420/50
1.2 GT218, GT216, GT215 GeForce 210, GT 220/40, FX380 LP, 1800M, 370/380M, NVS 2/3100M
1.3 GT200, GT200b GeForce GTX 260, GTX 275, GTX 280, GTX 285, GTX 295, Tesla C/M1060, S1070, Quadro CX, FX 3/4/5800
2.0 GF100, GF110 GeForce (GF100) GTX 465, GTX 470, GTX 480, Tesla C2050, C2070, S/M2050/70, Quadro Plex 7000, Quadro 4000, 5000, 6000, GeForce (GTX5 GTX5, GTX5 GTX80) , GTX590
2.1 GF104, GF114, GF116, GF108, GF106 GeForce 610M, GT 430, GT 440, GTS 450, GTX 460, GTX 550 Ti, GTX 560, GTX 560 Ti, 500M, Quadro 600, 2000
3.0 GK104, GK106, GK107 GeForce GTX 690, GTX 680, GTX 670, GTX 660 Ti, GTX 660, GTX 650 Ti, GTX 650, GT 640, GeForce GTX 680MX, GeForce GTX 680M, GeForce GTX 680M, GeForce GTX6 GTX6, GeGT6 GTX6, GeGTMTce 0M, GeForce GT 645M, GeForce GT 640M
3.5 GK110
Statsionar kompyuterlar uchun Nvidia GeForce
GeForce GTX 590
GeForce GTX 580
GeForce GTX 570
GeForce GTX 560 Ti
GeForce GTX 560
GeForce GTX 550 Ti
GeForce GTX 520
GeForce GTX 480
GeForce GTX 470
GeForce GTX 465
GeForce GTX 460
GeForce GTS 450
GeForce GTX 295
GeForce GTX 285
GeForce GTX 280
GeForce GTX 275
GeForce GTX 260
GeForce GTS 250
GeForce GT 240
GeForce GT 220
GeForce 210
GeForce GTS 150
GeForce GT 130
GeForce GT 120
GeForce G100
GeForce 9800 GX2
GeForce 9800 GTX+
GeForce 9800 GTX
GeForce 9800 GT
GeForce 9600 GSO
GeForce 9600 GT
GeForce 9500 GT
GeForce 9400 GT
GeForce 9400 mGPU
GeForce 9300 mGPU
GeForce 8800 GTS 512
GeForce 8800 GT
GeForce 8600 GTS
GeForce 8600 GT
GeForce 8500 GT
GeForce 8400GS
Mobil kompyuterlar uchun Nvidia GeForce
GeForce GTX 580M
GeForce GTX 570M
GeForce GTX 560M
GeForce GT 555M
GeForce GT 540M
GeForce GT 525M
GeForce GT 520M
GeForce GTX 485M
GeForce GTX 480M
GeForce GTX 470M
GeForce GTX 460M
GeForce GT 445M
GeForce GT 435M
GeForce GT 425M
GeForce GT 420M
GeForce GT 415M
GeForce GTX 285M
GeForce GTX 280M
GeForce GTX 260M
GeForce GTS 360M
GeForce GTS 350M
GeForce GTS 160M
GeForce GTS 150M
GeForce GT 335M
GeForce GT 330M
GeForce GT 325M
GeForce GT 240M
GeForce GT 130M
GeForce G210M
GeForce G110M
GeForce G105M
GeForce 310M
GeForce 305M
GeForce 9800M GTX
GeForce 9800M GT
GeForce 9800M GTS
GeForce 9700M GTS
GeForce 9700M GT
GeForce 9650MGS
GeForce 9600M GT
GeForce 9600MGS
GeForce 9500MGS
GeForce 9500M G
GeForce 9300MGS
GeForce 9300M G
GeForce 9200MGS
GeForce 9100M G
GeForce 8800M GTS
GeForce 8700M GT
GeForce 8600M GT
GeForce 8600MGS
GeForce 8400M GT
GeForce 8400MGS
Nvidia Tesla *
Tesla C2050/C2070
Tesla M2050/M2070/M2090
Tesla S2050
Tesla S1070
Tesla M1060
Tesla C1060
Tesla C870
Tesla D870
Tesla S870
Ish stoli kompyuterlar uchun Nvidia Quadro
Quadro 6000
Quadro 5000
Quadro 4000
Quadro 2000
Quadro 600
Quadro FX 5800
Quadro FX 5600
Quadro FX 4800
Quadro FX 4700 X2
Quadro FX 4600
Quadro FX 3700
Quadro FX 1700
Quadro FX 570
Quadro FX 470
Quadro FX 380 past profilli
Quadro FX 370
Quadro FX 370 past profilli
Quadro CX
Quadro NVS 450
Quadro NVS 420
Quadro NVS 290
Quadro Plex 2100 D4
Quadro Plex 2200 D2
Quadro Plex 2100 S4
Quadro Plex 1000 Model IV
Mobil kompyuterlar uchun Nvidia Quadro
Quadro 5010M
Quadro 5000M
Quadro 4000M
Quadro 3000M
Quadro 2000M
Quadro 1000M
Quadro FX 3800M
Quadro FX 3700M
Quadro FX 3600M
Quadro FX 2800M
Quadro FX 2700M
Quadro FX 1800M
Quadro FX 1700M
Quadro FX 1600M
Quadro FX 880M
Quadro FX 770M
Quadro FX 570M
Quadro FX 380M
Quadro FX 370M
Quadro FX 360M
Quadro NVS 5100M
Quadro NVS 4200M
Quadro NVS 3100M
Quadro NVS 2100M
Quadro NVS 320M
Quadro NVS 160M
Quadro NVS 150M
Quadro NVS 140M
Quadro NVS 135M
Quadro NVS 130M
  • Tesla C1060, Tesla S1070, Tesla C2050/C2070, Tesla M2050/M2070, Tesla S2050 modellari GPU hisoblarini ikki baravar aniqlik bilan amalga oshirish imkonini beradi.

Turli versiyalarning xususiyatlari va texnik xususiyatlari

Xususiyatlarni qo'llab-quvvatlash (ro'yxatga kiritilmagan xususiyatlar
barcha hisoblash qobiliyatlari uchun qo'llab-quvvatlanadi)
Hisoblash qobiliyati (versiya)
1.0 1.1 1.2 1.3 2.x

Global xotirada 32 bitli so'zlar
Yo'q Ha

global xotirada suzuvchi nuqta qiymatlari
Ishlaydigan butun sonli atom funksiyalari
Umumiy xotirada 32 bitli so'zlar
Yo'q Ha
atomicExch() 32-bitda ishlaydi
umumiy xotiradagi suzuvchi nuqta qiymatlari
Ishlaydigan butun sonli atom funksiyalari
Global xotirada 64 bitli so'zlar
Ovoz berish funksiyalari
Ikki marta aniqlikdagi suzuvchi nuqta operatsiyalari Yo'q Ha
64-bitda ishlaydigan atom funktsiyalari
umumiy xotiradagi butun son qiymatlari
Yo'q Ha
Suzuvchi nuqtali atom qo'shilishi ishlaydi
Global va umumiy xotiradagi 32 bitli so'zlar
_ovoz berish()
_threadfence_system()
_syncthreads_count(),
_syncthreads_and(),
_syncthreads_or()
Yuzaki funktsiyalar
Ip bloklari 3D panjara
Texnik spetsifikatsiyalar Hisoblash qobiliyati (versiya)
1.0 1.1 1.2 1.3 2.x
Ip bloklari panjarasining maksimal o'lchami 2 3
Ip bloklari panjarasining maksimal x-, y- yoki z-o'lchami 65535
Ip blokining maksimal o'lchami 3
Blokning maksimal x yoki y o'lchami 512 1024
Blokning maksimal z o'lchami 64
Har bir blok uchun maksimal iplar soni 512 1024
Burilish hajmi 32
Ko'p protsessor uchun rezident bloklarning maksimal soni 8
Ko'p protsessor uchun rezident burmalarning maksimal soni 24 32 48
Ko'p protsessor uchun rezident iplarning maksimal soni 768 1024 1536
Ko'p protsessor uchun 32 bitli registrlar soni 8K 16K 32 ming
Ko'p protsessor uchun umumiy xotiraning maksimal miqdori 16 KB 48 KB
Umumiy xotira banklari soni 16 32
Har bir mavzu uchun mahalliy xotira miqdori 16 KB 512 KB
Doimiy xotira hajmi 64 KB
Doimiy xotira uchun ko'p protsessor uchun kesh ish to'plami 8 KB
Teksturali xotira uchun ko'p protsessor uchun kesh ish to'plami Qurilmaga bog'liq, 6 KB va 8 KB orasida
1D tekstura uchun maksimal kenglik
8192 32768
1D tekstura uchun maksimal kenglik
chiziqli xotiraga bog'langan mos yozuvlar
2 27
Qatlamlarning maksimal kengligi va soni
1D qatlamli tekstura ma'lumotnomasi uchun
8192 x 512 16384 x 2048
2D uchun maksimal kenglik va balandlik
bog'langan tekstura havolasi
chiziqli xotira yoki CUDA massivi
65536 x 32768 65536 x 65535
Maksimal kenglik, balandlik va raqam
2D qatlamli tekstura ma'lumoti uchun qatlamlar
8192 x 8192 x 512 16384 x 16384 x 2048
Maksimal kenglik, balandlik va chuqurlik
chiziqli bilan bog'langan 3D tekstura ma'lumotnomasi uchun
xotira yoki CUDA massivi
2048 x 2048 x 2048
To'qimalarning maksimal soni
yadroga bog'lanishi mumkin
128
1D sirt uchun maksimal kenglik
CUDA massiviga bog'langan havola
Yo'q
qo'llab-quvvatlanadi
8192
2D uchun maksimal kenglik va balandlik
CUDA massiviga bog'langan sirt mos yozuvi
8192 x 8192
Bu yuzalarning maksimal soni
yadroga bog'lanishi mumkin
8
Ko'rsatmalarning maksimal soni
yadro
2 million

Misol

CudaArray* cu_array; tekstura< float , 2 >teks; // cudaMalloc( & cu_array, cudaCreateChannelDesc) massivini ajratish< float>(), kenglik, balandlik); // cudaMemcpy (cu_array, image, width* height, cudaMemcpyHostToDevice) massivga rasm ma'lumotlarini nusxalash; // Massivni teksturaga bog'lash cudaBindTexture (tex, cu_array) ; // Yadro dim3 blockDim(16, 16, 1) ni ishga tushiring; dim3 gridDim(kenglik / blockDim.x, balandlik / blockDim.y, 1); yadro<<< gridDim, blockDim, 0 >>> (d_ma'lumotlar, kenglik, balandlik); cudaUnbindTexture(tex) ; __global__ bekor yadro(float * odata, int balandligi, int kengligi) ( unsigned int x = blockIdx.x * blockDim.x + threadIdx.x ; unsigned int y = blockIdx.y * blockDim.y + threadIdx.y ; float c = texfetch(tex, x, y) ; odata[ y* width+ x] = c; )

pycuda.driverni drv import numpy drv.init() dev = drv.Device(0) ctx = dev.make_context() mod = drv.SourceModule() sifatida import qilish """ __global__ void multiply_them(float *dest, float *a, float *b) ( const int i = threadIdx.x; dest[i] = a[i] * b[i]; ) """) multiply_them = mod.get_function ("multiply_them" ) a = numpy.random .randn (400 ) .astype (numpy.float32 ) b = numpy.random .randn (400 ) .astype (numpy.floatzer = numpy.float32 . (a) ularni ko'paytirish ( drv.Out (dest) , drv.In (a) , drv.In (b) , blok= (400 , 1 , 1 ) ) chop etish dest-a*b

CUDA universitetlarda fan sifatida

2009 yil dekabr holatiga ko'ra, CUDA dasturiy ta'minot modeli butun dunyo bo'ylab 269 ta universitetda o'qitiladi. Rossiyada CUDA bo'yicha o'quv kurslari Sankt-Peterburg politexnika universiteti, Yaroslavl davlat universitetida o'tkaziladi. P. G. Demidov, Moskva, Nijniy Novgorod, Sankt-Peterburg, Tver, Qozon, Novosibirsk, Novosibirsk davlat texnika universiteti, Omsk va Perm davlat universitetlari, “Dubna jamiyati va inson tabiati xalqaro universiteti”, Ivanovo davlat energetika universiteti, Belgorod davlat universiteti , MSTU ularni. Bauman nomidagi Rossiya kimyo-texnika universiteti. Mendeleev, RAS mintaqalararo superkompyuter markazi, . Bundan tashqari, 2009 yil dekabr oyida Dubna shahrida joylashgan birinchi Rossiya ilmiy va o'quv markazi "Parallel hisoblash" ish boshlaganligi e'lon qilindi, uning vazifalari GPU-larda murakkab hisoblash muammolarini hal qilish bo'yicha treninglar va maslahatlarni o'z ichiga oladi.

Ukrainada CUDA bo'yicha kurslar Kiev tizim tahlili institutida o'qitiladi.

Havolalar

Rasmiy manbalar

  • CUDA zonasi (ruscha) - CUDA rasmiy veb-sayti
  • CUDA GPU Computing (inglizcha) - CUDA hisoblashlariga bag'ishlangan rasmiy veb-forumlar

Norasmiy manbalar

Tomning apparati
  • Dmitriy Chekanov. nVidia CUDA: video kartada hisoblash yoki protsessorning o'limi? . Tom's Hardware (2008 yil 22 iyun). Arxivlangan
  • Dmitriy Chekanov. nVidia CUDA: Ommaviy bozor uchun GPU ilovalarini taqqoslash. Tom's Hardware (2009-yil 19-may). Asl nusxadan 2012-yil 4-martda arxivlangan. Olingan. 2009-yil 19-may.
iXBT.com
  • Aleksey Berillo. NVIDIA CUDA - GPU-larda grafik bo'lmagan hisoblash. 1-qism . iXBT.com (2008 yil 23 sentyabr). 2012-yil 4-martda asl nusxadan arxivlangan. Olingan. 2009-yil 20-yanvar.
  • Aleksey Berillo. NVIDIA CUDA - GPU-larda grafik bo'lmagan hisoblash. 2-qism. iXBT.com (2008 yil 22 oktyabr). - NVIDIA CUDA dasturini amalga oshirish misollari. 2012-yil 4-martda asl nusxadan arxivlangan. Olingan. 2009-yil 20-yanvar.
Boshqa manbalar
  • Boreskov Aleksey Viktorovich. CUDA asoslari (2009 yil 20 yanvar). 2012-yil 4-martda asl nusxadan arxivlangan. Olingan. 2009-yil 20-yanvar.
  • Vladimir Frolov. CUDA texnologiyasiga kirish. "Kompyuter grafikasi va multimedia" onlayn jurnali (2008 yil 19 dekabr). 2012-yil 4-martda asl nusxadan arxivlangan. 2009-yil 28-oktabrda olingan.
  • Igor Oskolkov. NVIDIA CUDA - bu katta kompyuterlar olamiga arzon chipta. Computerra (2009 yil 30 aprel). 2009-yil 3-mayda olindi.
  • Vladimir Frolov. CUDA texnologiyasiga kirish (2009 yil 1 avgust). 2012-yil 4-martda asl nusxadan arxivlangan. 2010-yil 3-aprelda olingan.
  • GPGPU.ru. Hisoblash uchun video kartalardan foydalanish
  • . Parallel hisoblash markazi

Eslatmalar

Shuningdek qarang

Zamonaviy protsessorlarning rivojlanishida yadrolar sonini bosqichma-bosqich oshirish tendentsiyasi mavjud bo'lib, bu ularning parallel hisoblashda imkoniyatlarini oshiradi. Biroq, bu borada protsessorlardan sezilarli darajada ustun bo'lgan GPUlar uzoq vaqtdan beri mavjud. Va GPU-larning bu imkoniyatlari allaqachon ba'zi kompaniyalar tomonidan hisobga olingan. Maqsadli bo'lmagan hisoblash uchun grafik tezlatgichlardan foydalanishga birinchi urinishlar 90-yillarning oxiridan boshlab qilingan. Ammo faqat shaderlarning paydo bo'lishi mutlaqo yangi texnologiyaning rivojlanishiga turtki bo'ldi va 2003 yilda GPGPU (Umumiy maqsadli grafik ishlov berish bloklari) kontseptsiyasi paydo bo'ldi. Bu tashabbusning rivojlanishida C tili uchun maxsus kengaytma bo'lgan BrookGPU muhim rol o'ynadi.BrukGPU paydo bo'lgunga qadar dasturchilar GPUlar bilan faqat Direct3D yoki OpenGL API orqali ishlay olishgan. Bruk ishlab chiquvchilarga tanish muhit bilan ishlashga imkon berdi va kompilyatorning o'zi maxsus kutubxonalardan foydalangan holda GPU bilan o'zaro aloqani past darajada amalga oshirdi.

Bunday taraqqiyot ushbu soha yetakchilari - AMD va NVIDIA e'tiborini tortmay qolmadi, ular o'zlarining video kartalarida grafik bo'lmagan hisoblashlar uchun o'zlarining dasturiy platformalarini ishlab chiqishni boshladilar. Hech kim GPU ishlab chiquvchilardan ko'ra o'z mahsulotlarining barcha nuanslari va xususiyatlarini bilmaydi, bu esa xuddi shu kompaniyalarga aniq apparat echimlari uchun dasturiy ta'minot paketini iloji boricha samarali optimallashtirish imkonini beradi. Hozirda NVIDIA CUDA (Compute Unified Device Architecture) platformasini ishlab chiqmoqda; AMD shunga o'xshash texnologiyani CTM (Metalga yaqin) yoki AMD Stream Computing deb ataydi. Biz CUDA ning ba'zi imkoniyatlarini ko'rib chiqamiz va GeForce 8800 GT video kartasining G92 grafik chipining hisoblash imkoniyatlarini amalda baholaymiz.

Lekin birinchi navbatda, GPU yordamida hisob-kitoblarni amalga oshirishning ba'zi nuanslarini ko'rib chiqaylik. Ularning asosiy afzalligi shundaki, grafik chip dastlab bir nechta iplarni bajarish uchun mo'ljallangan, an'anaviy protsessorning har bir yadrosi ketma-ket ko'rsatmalar oqimini bajaradi. Har qanday zamonaviy GPU bir nechta hisoblash klasterlaridan tashkil topgan multiprotsessor bo'lib, ularning har birida ko'plab ALU mavjud. Eng kuchli zamonaviy GT200 chipi 10 ta shunday klasterdan iborat bo'lib, ularning har birida 24 ta oqim protsessorlari mavjud. G92 chipiga asoslangan sinovdan o‘tgan GeForce 8800 GT video kartasi har birida 16 ta oqim protsessoriga ega yettita yirik hisoblash blokiga ega. Protsessorlar vektorli hisob-kitoblar uchun SIMD SSE bloklaridan foydalanadi (bitta ko'rsatma bir nechta ma'lumotlar - bitta ko'rsatma bir nechta ma'lumotlarda bajariladi), bu ma'lumotlarni 4 vektorga aylantirishni talab qiladi. GPU iplarni skalar tarzda qayta ishlaydi, ya'ni. bir ko'rsatma bir nechta iplar ustida qo'llaniladi (SIMT - bitta ko'rsatma bir nechta iplar). Bu ishlab chiquvchilarni ma'lumotlarni vektorlarga aylantirishdan qutqaradi va oqimlarda o'zboshimchalik bilan tarmoqlanish imkonini beradi. Har bir GPU hisoblash bloki bevosita xotiraga kirish huquqiga ega. Va video xotiraning o'tkazish qobiliyati bir nechta alohida xotira kontrollerlaridan foydalanish (yuqori G200-da 8 ta 64-bitli kanallar mavjud) va yuqori ish chastotalari tufayli yuqoriroq.

Umuman olganda, katta hajmdagi ma'lumotlar bilan ishlashda ma'lum vazifalarda GPUlar protsessorlarga qaraganda ancha tezroq. Quyida ushbu bayonotning rasmini ko'rasiz:


Grafik 2003 yildan beri CPU va GPU ishlashining o'sish dinamikasini ko'rsatadi. NVIDIA ushbu ma'lumotlarni o'z hujjatlarida reklama sifatida keltirishni yaxshi ko'radi, lekin ular faqat nazariy hisob-kitoblar va aslida bo'shliq, albatta, ancha kichikroq bo'lishi mumkin.

Qanday bo'lmasin, foydalanish mumkin bo'lgan va dasturiy ta'minotni ishlab chiqishga o'ziga xos yondashuvni talab qiladigan GPU-larning katta salohiyati mavjud. Bularning barchasi bir nechta dasturiy ta'minot darajalaridan iborat - yuqori darajadagi CUDA Runtime API va past darajadagi CUDA Driver API-dan iborat CUDA apparat va dasturiy ta'minot muhitida amalga oshiriladi.


CUDA dasturlash uchun standart C tilidan foydalanadi, bu esa dasturchilar uchun uning asosiy afzalliklaridan biridir. Dastlab, CUDA BLAS (asosiy chiziqli algebra to'plami) va FFT (Fourier transform) kutubxonalarini o'z ichiga oladi. CUDA shuningdek, OpenGL yoki DirectX grafik API-lari bilan o'zaro aloqada bo'lish qobiliyatiga ega, past darajada rivojlanish qobiliyatiga ega va CPU va GPU o'rtasida ma'lumotlar oqimlarining optimallashtirilgan taqsimlanishi bilan tavsiflanadi. CUDA hisob-kitoblari grafiklar bilan bir vaqtda amalga oshiriladi, shunga o'xshash AMD platformasidan farqli o'laroq, GPU-da hisob-kitoblar uchun maxsus virtual mashina ishga tushiriladi. Ammo, agar CUDA bir vaqtning o'zida ishlayotgan bo'lsa, grafik API tomonidan katta yuk yaratilsa, bunday "birgalikda yashash" xatolarga olib keladi - axir, grafik operatsiyalar hali ham yuqoriroq ustuvorlikka ega. Platforma 32 va 64 bitli operatsion tizimlar Windows XP, Windows Vista, MacOS X va Linuxning turli versiyalari bilan mos keladi. Platforma ochiq va veb-saytda video karta uchun maxsus drayverlarga qo'shimcha ravishda siz CUDA Toolkit, CUDA Developer SDK dasturiy paketlarini, jumladan kompilyator, tuzatuvchi, standart kutubxonalar va hujjatlarni yuklab olishingiz mumkin.

CUDA ning amaliy tatbiq etilishiga kelsak, uzoq vaqt davomida ushbu texnologiya faqat zarrachalar fizikasi, astrofizika, tibbiyot yoki moliya bozoridagi o'zgarishlarni prognozlash va boshqalar sohasida yuqori ixtisoslashtirilgan matematik hisob-kitoblar uchun ishlatilgan. Ammo bu texnologiya asta-sekin oddiy foydalanuvchilarga yaqinlashib bormoqda, xususan, Photoshop uchun grafik protsessorning hisoblash quvvatidan foydalanishi mumkin bo'lgan maxsus plaginlar paydo bo'ladi. Maxsus sahifada siz NVIDIA CUDA imkoniyatlaridan foydalanadigan dasturlarning to'liq ro'yxatini o'rganishingiz mumkin.

MSI NX8800GT-T2D256E-OC video kartasida yangi texnologiyaning amaliy sinovi sifatida biz TMPGEnc dasturidan foydalanamiz. Bu mahsulot tijorat (toʻliq versiyasi 100 dollar turadi), lekin MSI video kartalari uchun u 30 kunlik sinov versiyasida bonus sifatida taqdim etiladi. Siz ushbu versiyani ishlab chiquvchining veb-saytidan yuklab olishingiz mumkin, ammo TMPGEnc 4.0 XPress MSI Special Edition-ni o'rnatish uchun sizga MSI kartasidan drayverlarga ega original disk kerak - busiz dastur o'rnatilmaydi.

CUDA-da hisoblash qobiliyatlari haqida eng to'liq ma'lumotni ko'rsatish va ularni boshqa video adapterlar bilan solishtirish uchun siz maxsus CUDA-Z yordam dasturidan foydalanishingiz mumkin. Bu bizning GeForce 8800GT video kartamiz haqida ma'lumot beradi:




Malumot modellari bilan taqqoslaganda, bizning nusxamiz yuqori chastotalarda ishlaydi: rastr domeni nominaldan 63 MGts yuqori va shader birliklari 174 MGts ga, xotira esa 100 MGts ga tezroq.

Biz faqat protsessor yordamida hisoblashda va TMPGEnc dasturida CUDA-ni quyidagi konfiguratsiyada qo'shimcha faollashtirish bilan bir xil HD videoning o'tkazish tezligini taqqoslaymiz:

  • Protsessor: Pentium Dual-Core E5200 2,5 gigagertsli;
  • Ana plata: Gigabyte P35-S3;
  • Xotira: 2x1GB GoodRam PC6400 (5-5-5-18-2T)
  • Video karta: MSI NX8800GT-T2D256E-OC;
  • Qattiq disk: 320 GB WD3200AAKS;
  • Quvvat manbai: CoolerMaster eXtreme Power 500-PCAP;
  • Operatsion tizim: Windows XP SP2;
  • TMPGEnc 4.0 XPress 4.6.3.268;
  • Video karta drayverlari: ForceWare 180.60.
Sinovlar uchun protsessor 3 gigagertsli (11,5x261 MGts konfiguratsiyada) va birinchi va ikkinchi hollarda 835 MGts operativ xotira chastotasi bilan 4 gigagertsli (11,5x348 MGts) ga haddan tashqari oshirildi. Video Full HD 1920x1080 piksellar sonida, bir daqiqayu yigirma soniya davom etadi. Qo'shimcha yuk yaratish uchun shovqinni kamaytirish filtri yoqildi, uning sozlamalari sukut bo'yicha qoldirildi.


Kodlash DivX 6.8.4 kodek yordamida amalga oshirildi. Ushbu kodekning sifat sozlamalarida barcha qiymatlar sukut bo'yicha qoldiriladi, multithreading yoqilgan.


TMPGEnc-da multithreading qo'llab-quvvatlash dastlab CPU/GPU sozlamalari yorlig'ida yoqilgan. CUDA ham xuddi shu bo'limda faollashtirilgan.


Yuqoridagi skrinshotdan ko'rinib turibdiki, CUDA yordamida filtrni qayta ishlash yoqilgan, ammo apparat video dekoderi yoqilmagan. Dastur hujjatlari oxirgi parametrni faollashtirish faylni qayta ishlash vaqtini oshirishi haqida ogohlantiradi.

Sinov natijalariga ko'ra quyidagi ma'lumotlar olindi:


CUDA yoqilgan holda 4 gigagertsli tezlikda biz bir necha soniya (yoki 2%) oldik, bu unchalik ta'sirli emas. Ammo past chastotada ushbu texnologiyani faollashtirishning o'sishi sizga taxminan 13% vaqtni tejash imkonini beradi, bu katta hajmdagi fayllarni qayta ishlashda sezilarli bo'ladi. Lekin baribir natijalar kutilgandek ta'sirchan emas.

TMPGEnc dasturida protsessor va CUDA yuk ko'rsatkichi mavjud; ushbu test konfiguratsiyasida u taxminan 20% protsessor yukini va qolgan 80% grafik yadrosini ko'rsatdi. Natijada, biz CUDAsiz konvertatsiya qilishda bo'lgani kabi 100% ga egamiz va umuman vaqt farqi bo'lmasligi mumkin (lekin u hali ham mavjud). 256 MB hajmdagi kichik xotira hajmi ham cheklovchi omil emas. RivaTuner o'qishlariga ko'ra, ish paytida 154 MB dan ortiq video xotira ishlatilmagan.



xulosalar

TMPGEnc dasturi CUDA texnologiyasini ommaga taqdim etuvchi dasturlardan biridir. Ushbu dasturda GPU-dan foydalanish videoni qayta ishlash jarayonini tezlashtirish va markaziy protsessorni sezilarli darajada engillashtirish imkonini beradi, bu esa foydalanuvchiga bir vaqtning o'zida boshqa vazifalarni qulay bajarish imkonini beradi. Bizning maxsus misolimizda, GeForce 8800GT 256MB video karta overclock qilingan Pentium Dual-Core E5200 protsessoriga asoslangan videoni konvertatsiya qilishda vaqt ko'rsatkichlarini biroz yaxshiladi. Ammo aniq ko'rinib turibdiki, chastota pasayganda, CUDA-ni faollashtirishdan olinadigan daromad oshadi; zaif protsessorlarda undan foydalanishdan olinadigan daromad ancha katta bo'ladi. Ushbu qaramlik fonida, hatto yuk ortishi bilan (masalan, juda ko'p miqdordagi qo'shimcha video filtrlardan foydalanish) CUDA bilan tizimning natijalari ko'proq farqlanadi deb taxmin qilish mantiqan to'g'ri. kodlash jarayoniga sarflangan vaqtdagi farqning sezilarli deltasi. Shuni ham unutmangki, G92 hozirda eng kuchli chip emas va zamonaviyroq video kartalar bunday ilovalarda sezilarli darajada yuqori ishlashni ta'minlaydi. Biroq, dastur ishlayotgan paytda, GPU to'liq yuklanmagan va, ehtimol, yuk taqsimoti har bir konfiguratsiyaga, ya'ni protsessor/video karta kombinatsiyasiga bog'liq bo'lib, natijada foiz sifatida kattaroq (yoki kichikroq) o'sishga olib kelishi mumkin. CUDA faollashtirish. Qanday bo'lmasin, katta hajmdagi video ma'lumotlar bilan ishlaydiganlar uchun bu texnologiya hali ham vaqtlarini sezilarli darajada tejash imkonini beradi.

To'g'ri, CUDA hali keng tarqalgan mashhurlikka erishmagan, bu texnologiya bilan ishlaydigan dasturiy ta'minot sifati yaxshilashni talab qiladi. Biz ko'rib chiqqan TMPGEnc 4.0 XPress dasturida bu texnologiya har doim ham ishlamadi. Xuddi shu videoni bir necha marta qayta kodlash mumkin edi, keyin to'satdan, keyingi safar ishga tushirilganda, CUDA yuki allaqachon 0% edi. Va bu hodisa butunlay boshqa operatsion tizimlarda mutlaqo tasodifiy edi. Shuningdek, ushbu dastur XviD formatida kodlashda CUDA-dan foydalanishni rad etdi, ammo mashhur DivX kodek bilan bog'liq muammolar yo'q edi.

Natijada, hozirgacha CUDA texnologiyasi shaxsiy kompyuterlarning ish faoliyatini faqat ma'lum vazifalarda sezilarli darajada oshirishi mumkin. Ammo bunday texnologiyani qo'llash doirasi kengayadi va oddiy protsessorlarda yadrolar sonini ko'paytirish jarayoni zamonaviy dasturiy ta'minot ilovalarida parallel ko'p tarmoqli hisoblashlarga talab ortib borayotganidan dalolat beradi. So'nggi paytlarda barcha sanoat rahbarlari CPU va GPUni yagona arxitektura doirasida birlashtirish g'oyasiga berilib ketgani bejiz emas (ko'p reklama qilingan AMD Fusion-ni eslang). Ehtimol, CUDA bu birlashish jarayonidagi bosqichlardan biridir.


Sinov uskunalarini taqdim etgani uchun quyidagi kompaniyalarga minnatdorchilik bildiramiz:

- past darajadagi dasturiy interfeyslar to'plami ( API) o'yinlar va boshqa yuqori samarali multimedia ilovalarini yaratish uchun. Yuqori samarali qo'llab-quvvatlashni o'z ichiga oladi 2D- Va 3D-grafik, tovush va kiritish qurilmalari.

Direct3D (D3D) - uch o'lchovli ko'rsatish uchun interfeys ibtidoiylar(geometrik jismlar). Kiritilgan .

OpenGL(ingliz tilidan Grafik kutubxonasini oching, so'zma-so'z - ochiq grafik kutubxona) - bu ikki o'lchovli va uch o'lchovli kompyuter grafikasidan foydalangan holda ilovalarni yozish uchun dasturlash tilidan mustaqil o'zaro faoliyat platformali dasturlash interfeysini belgilaydigan spetsifikatsiya. Oddiy primitivlardan murakkab 3D sahnalarni chizish uchun 250 dan ortiq funksiyalarni o'z ichiga oladi. Ilmiy tadqiqotlarda video o'yinlar, virtual haqiqat va vizualizatsiya yaratish uchun foydalaniladi. Platformada Windows bilan raqobatlashadi .

OpenCL(ingliz tilidan Hisoblash tilini oching, so'zma-so'z - ochiq hisoblar tili) - ramka(dasturiy ta'minot tizimi ramkasi) turli xil grafiklarda parallel hisoblash bilan bog'liq kompyuter dasturlarini yozish uchun ( GPU) va ( ). Ramkaga OpenCL dasturlash tili va amaliy dasturlash interfeysini o'z ichiga oladi ( API). OpenCL ko'rsatmalar darajasida va ma'lumotlar darajasida parallellikni ta'minlaydi va texnikaning amalga oshirilishi hisoblanadi GPGPU.

GPGPU(ingliz tilidan qisqartirilgan) Umumiy-P maqsadli G grafikalarni qayta ishlash, tom ma'noda - GPU umumiy maqsad) - bu odatda kompyuter tomonidan bajariladigan umumiy hisoblash uchun grafik ishlov berish bloki (GPU) yoki video kartadan foydalanish texnikasi.

Shader(inglizcha) shader) - ob'ekt yoki tasvirning yakuniy parametrlarini aniqlash uchun uch o'lchovli grafikada qo'llaniladigan sintezlangan tasvirlar ustida soyalar qurish dasturi. Odatda yorug'likning yutilishi va tarqalishi, to'qimalarni xaritalash, aks ettirish va sinishi, soyalash, sirt siljishi va qayta ishlashdan keyingi effektlarning o'zboshimchalik bilan murakkab tavsiflarini o'z ichiga oladi. Murakkab sirtlarni oddiy geometrik shakllar yordamida ingl.

Renderlash(inglizcha) ko'rsatish) – vizualizatsiya, kompyuter grafikasida dasturiy ta’minot yordamida modeldan tasvir olish jarayoni.

SDK(ingliz tilidan qisqartirilgan) Dasturiy ta'minot ishlab chiqish to'plami) – dasturiy ta’minot ishlab chiqish vositalari to‘plami.

Markaziy protsessor(ingliz tilidan qisqartirilgan) Markaziy ishlov berish birligi, so‘zma-so‘z – markaziy/asosiy/asosiy hisoblash qurilmasi) – markaziy (mikro);mashina ko‘rsatmalarini bajaradigan qurilma; hisoblash operatsiyalarini bajarish (operatsion tizim va amaliy dasturlar tomonidan ko'rsatilgan) va barcha qurilmalarning ishlashini muvofiqlashtirish uchun mas'ul bo'lgan apparat qismi.

GPU(ingliz tilidan qisqartirilgan) Grafik ishlov berish birligi, so'zma-so'z – grafik hisoblash qurilmasi) – grafik protsessor; grafik tasvirni (vizualizatsiya) amalga oshiradigan alohida qurilma yoki o'yin konsoli. Zamonaviy GPU'lar kompyuter grafikalarini real tarzda qayta ishlash va ko'rsatishda juda samarali. Zamonaviy video adapterlardagi grafik protsessor 3D grafik tezlatgich sifatida ishlatiladi, lekin ba'zi hollarda u hisob-kitoblar uchun ham ishlatilishi mumkin ( GPGPU).

Muammolar Markaziy protsessor

Uzoq vaqt davomida an'anaviy bo'lganlarning ishlashining oshishi, asosan, bir chipdagi tranzistorlar sonining bir vaqtning o'zida ko'payishi bilan soat chastotasining izchil o'sishi (taxminan 80% ishlash soat chastotasi bilan aniqlangan) tufayli sodir bo'ldi. . Biroq, soat chastotasining yanada oshishi (3,8 gigagertsdan ortiq soat chastotasida, chiplar shunchaki qizib ketadi!) bir qator fundamental jismoniy to'siqlarga duch keladi (chunki texnologik jarayon deyarli atom hajmiga yaqinlashdi: , va kremniy atomining o'lchami taxminan 0,543 nm):

Birinchidan, kristall hajmining pasayishi va soat chastotasining oshishi bilan tranzistorlarning oqish oqimi ortadi. Bu energiya sarfini oshirishga va issiqlik emissiyasini oshirishga olib keladi;

Ikkinchidan, yuqori soat tezligining afzalliklari xotiraga kirishning kechikishi bilan qisman inkor etiladi, chunki xotiraga kirish vaqtlari ortib borayotgan soat tezligiga mos kelmaydi;

Uchinchidan, ba'zi ilovalar uchun an'anaviy ketma-ket arxitekturalar samarasiz bo'lib qoladi, chunki "von Neumann bo'g'ozi" deb ataladigan, ketma-ket hisoblash oqimidan kelib chiqadigan ishlash cheklovi tufayli soat tezligi oshadi. Shu bilan birga, rezistiv-kapasitiv signal uzatish kechikishlari ortadi, bu soat chastotasining oshishi bilan bog'liq qo'shimcha to'siqdir.

Rivojlanish GPU

Bunga parallel ravishda rivojlanish ham bor edi (va bor!). GPU:

2008 yil noyabr - Intel 4 yadroli qatorni joriy qildi Intel Core i7, ular yangi avlod mikroarxitekturasiga asoslangan Nehalem. Protsessorlar 2,6-3,2 gigagertsli chastotada ishlaydi. 45 nm texnologik texnologiyadan foydalangan holda ishlab chiqarilgan.

2008 yil dekabr - 4 yadroli yetkazib berish boshlandi AMD Phenom II 940(kod nomi - Deneb). 45 nm texnologik texnologiya yordamida ishlab chiqarilgan 3 gigagertsli chastotada ishlaydi.

2009 yil may - kompaniya AMD GPU versiyasini taqdim etdi ATI Radeon HD 4890 yadro soat tezligi bilan 850 MGts dan 1 GGts gacha ko'tarildi. Bu birinchi grafik 1 gigagertsli chastotada ishlaydigan protsessor. Chipning hisoblash quvvati chastotaning oshishi tufayli 1,36 dan 1,6 teraflopsgacha oshdi. Protsessor 800 (!) hisoblash yadrolarini o'z ichiga oladi va video xotirani qo'llab-quvvatlaydi GDDR5, DirectX 10.1, ATI CrossFireX va zamonaviy video karta modellariga xos bo'lgan boshqa barcha texnologiyalar. Chip 55 nm texnologiyasi asosida ishlab chiqarilgan.

Asosiy farqlar GPU

O'ziga xos xususiyatlar GPU(bilan solishtirganda ) quyidagilardir:

- to'qimalar va murakkab grafik ob'ektlarni hisoblash tezligini maksimal darajada oshirishga qaratilgan arxitektura;

- eng yuqori quvvat tipik GPU bundan ancha yuqori ;

- maxsus konveyer arxitekturasi tufayli, GPU ga nisbatan grafik axborotni qayta ishlashda ancha samarali.

"Janr inqirozi"

"Janr inqirozi" uchun 2005 yilga kelib, ular paydo bo'ldi. Ammo, texnologiya rivojlanishiga qaramay, an'anaviy ishlab chiqarish unumdorligi ortib bormoqda sezilarli darajada kamaydi. Bir vaqtning o'zida ishlash GPU o'sishda davom etmoqda. Shunday qilib, 2003 yilga kelib, bu inqilobiy g'oya kristallandi - grafiklarning hisoblash quvvatidan ehtiyojlaringiz uchun foydalaning. GPUlar "grafik bo'lmagan" hisoblash uchun tobora ko'proq foydalanilmoqda (fizika simulyatsiyasi, signallarni qayta ishlash, hisoblash matematikasi/geometriya, ma'lumotlar bazasi operatsiyalari, hisoblash biologiyasi, hisoblash iqtisodiyoti, kompyuterni ko'rish va boshqalar).

Asosiy muammo shundaki, standart dasturlash interfeysi yo'q edi GPU. Ishlab chiquvchilar foydalandilar OpenGL yoki Direct3D, lekin bu juda qulay edi. Korporatsiya NVIDIA(Grafik, media va aloqa protsessorlari, shuningdek, simsiz media protsessorlari eng yirik ishlab chiqaruvchilardan biri; 1993 yilda tashkil etilgan) yagona va qulay standartni ishlab chiqishni boshladi - va texnologiyani joriy qildi. CUDA.

Qanday boshlandi

2006 yil - NVIDIA namoyish etadi CUDA™; hisoblashda inqilobning boshlanishi GPU.

2007 - NVIDIA arxitekturani chiqaradi CUDA(original versiya CUDA SDK 2007 yil 15 fevralda taqdim etilgan); jurnalining "Eng yaxshi yangi mahsulot" nominatsiyasi Ommaviy fan va nashrdan "O'quvchilar tanlovi" HPCWire.

2008 yil - texnologiya NVIDIA CUDA dan “Texnik mukammallik” nominatsiyasida g‘olib bo‘ldi Kompyuter jurnali.

Nima bo'ldi CUDA

CUDA(ingliz tilidan qisqartirilgan) Birlashtirilgan qurilma arxitekturasini hisoblash, so'zma-so'z - qurilmalarning yagona hisoblash arxitekturasi) - arxitektura (dasturiy ta'minot va apparat vositalari to'plami) ishlab chiqarishga imkon beradi. GPU umumiy maqsadli hisob-kitoblar, esa GPU aslida kuchli protsessor vazifasini bajaradi.

Texnologiya NVIDIA CUDA™ dasturlash tilidagi yagona ishlab chiqish muhitidir C, bu esa ishlab chiquvchilarga GPU larning ishlov berish quvvati tufayli murakkab hisoblash muammolarini kamroq vaqt ichida hal qiluvchi dasturiy ta'minot yaratish imkonini beradi. Dunyoda millionlab odamlar allaqachon ishlamoqda GPU qo'llab-quvvatlash bilan CUDA, va minglab dasturchilar allaqachon (bepul!) vositalardan foydalanmoqda CUDA ilovalarni tezlashtirish va eng murakkab, resurs talab qiladigan vazifalarni - video va audio kodlashdan neft va gazni qidirish, mahsulotni modellashtirish, tibbiy tasvirlash va ilmiy tadqiqotlarni hal qilish.

CUDA ishlab chiquvchiga o'z xohishiga ko'ra grafik tezlatgichning ko'rsatmalar to'plamiga kirishni tashkil qilish va uning xotirasini boshqarish va u bo'yicha murakkab parallel hisoblarni tashkil qilish imkoniyatini beradi. Grafik tezlatgichni qo'llab-quvvatlash CUDA bugungi kunga o'xshash kuchli dasturlashtiriladigan ochiq arxitekturaga aylanadi. Bularning barchasi ishlab chiquvchiga apparat vositalariga past darajadagi, taqsimlangan va yuqori tezlikda kirishni ta'minlaydi CUDA kompilyatorlar, tuzatuvchilar, matematik kutubxonalar va dasturiy platformalar kabi jiddiy yuqori darajadagi vositalarni yaratish uchun zarur asos.

Uralskiy, yetakchi texnologiya mutaxassisi NVIDIA, solishtirish GPU Va , shunday deydi: " - Bu SUV. U har doim va hamma joyda haydaydi, lekin juda tez emas. A GPU- Bu sport mashinasi. Yomon yo'lda u hech qaerga ketmaydi, balki unga yaxshi sirt beradi va u o'zining barcha tezligini ko'rsatadi, bu SUV xayoliga ham keltirmagan!.."

Texnologiya imkoniyatlari CUDA