Burim kompjuterik U SM. Ku çon cuda: aplikimi praktik i teknologjisë gpgpu - pajisja më e mirë Aplikacionet që funksionojnë në cuda

Për dekada, Ligji i Moores ka qenë në fuqi, i cili thotë se çdo dy vjet numri i transistorëve në një çip do të dyfishohet. Sidoqoftë, kjo ndodhi në vitin 1965, dhe gjatë 5 viteve të fundit ideja e shumë bërthamave fizike në procesorët e klasës së konsumatorit ka filluar të zhvillohet me shpejtësi: në 2005, Intel prezantoi Pentium D dhe AMD prezantoi Athlon X2. Në atë kohë, aplikacionet që përdornin 2 bërthama mund të numëroheshin në gishtat e njërës dorë. Sidoqoftë, gjenerata e ardhshme e procesorëve Intel, e cila bëri një revolucion, kishte saktësisht 2 bërthama fizike. Për më tepër, seriali Quad u shfaq në janar 2007, kohë në të cilën Moore vetë pranoi se ligji i tij së shpejti do të pushonte së zbatuari.

Po tani? Procesorët me dy bërthama edhe në sistemet e zyrave buxhetore, dhe 4 bërthama fizike janë bërë normë, dhe kjo është në vetëm 2-3 vjet. Frekuenca e procesorëve nuk është rritur, por arkitektura është përmirësuar, numri i bërthamave fizike dhe virtuale është rritur. Sidoqoftë, ideja e përdorimit të përshtatësve video të pajisur me dhjetëra apo edhe qindra "njësi" kompjuterike ka ekzistuar për një kohë të gjatë.

Dhe megjithëse perspektivat për llogaritjen GPU janë të mëdha, zgjidhja më e njohur është Nvidia CUDA, e cila është falas, ka shumë dokumentacion dhe në përgjithësi është shumë e lehtë për t'u zbatuar, nuk ka shumë aplikacione që përdorin këtë teknologji. Në thelb, këto janë të gjitha llojet e llogaritjeve të specializuara, për të cilat përdoruesi mesatar në shumicën e rasteve nuk kujdeset. Por ka edhe programe të dizajnuara për përdoruesin masiv, dhe ne do të flasim për to në këtë artikull.

Së pari, pak për vetë teknologjinë dhe me çfarë përdoret. Sepse Kur shkruaj një artikull, fokusohem në një gamë të gjerë lexuesish, ndaj do të përpiqem ta shpjegoj në një gjuhë të arritshme pa terma komplekse dhe disi shkurt.

CUDA(Anglisht: Compute Unified Device Architecture) është një arkitekturë softuerësh dhe harduerësh që ju lejon të kryeni llogaritjet duke përdorur përpunuesit grafikë NVIDIA që mbështesin teknologjinë GPGPU (llogaritje të rastësishme në kartat video). Arkitektura CUDA u shfaq për herë të parë në treg me lëshimin e çipit të gjeneratës së tetë NVIDIA - G80 dhe është e pranishme në të gjitha seritë pasuese të çipave grafikë që përdoren në familjet e përshpejtuesve GeForce, Quadro dhe Tesla. (c) Wikipedia.org

Rrjedhat hyrëse përpunohen në mënyrë të pavarur nga njëra-tjetra, d.m.th. paralele.

Ka një ndarje në 3 nivele:

Rrjeti- bërthamë. Përmban një grup blloqesh një/dy/tre-dimensionale.

Blloko– përmban shumë fije. Fijet e blloqeve të ndryshme nuk mund të ndërveprojnë me njëra-tjetrën. Pse ishte e nevojshme të futeshin blloqe? Çdo bllok është në thelb përgjegjës për nëndetyrën e tij. Për shembull, një imazh i madh (i cili është një matricë) mund të ndahet në disa pjesë më të vogla (matrica) dhe të punohet me secilën pjesë të figurës paralelisht.

Fije– rrjedhje. Fijet brenda një blloku mund të ndërveprojnë ose përmes memories së përbashkët, e cila, nga rruga, është shumë më e shpejtë se kujtesa globale, ose përmes mjeteve të sinkronizimit të fijeve.

Deformojështë një bashkim thread-sh që ndërveprojnë me njëri-tjetrin, për të gjitha GPU-të moderne, madhësia e Warp është 32. Më pas vjen gjysmë deformoj, e cila është gjysma e deformimit, sepse Qasja në kujtesë zakonisht ndodh veçmas për gjysmën e parë dhe të dytë të deformimit.

Siç mund ta shihni, kjo arkitekturë është e shkëlqyer për paralelizimin e detyrave. Dhe megjithëse programimi kryhet në gjuhën C me disa kufizime, në realitet jo gjithçka është kaq e thjeshtë, sepse ... jo gjithçka mund të paralelizohet. Nuk ka gjithashtu funksione standarde për gjenerimin e numrave të rastësishëm (ose inicializimin); e gjithë kjo duhet të zbatohet veçmas. Dhe megjithëse ka shumë opsione të gatshme, asnjë nga këto nuk sjell gëzim. Aftësia për të përdorur rekursion u shfaq relativisht kohët e fundit.

Për qartësi, u shkrua një program i vogël konsol (për të minimizuar kodin) që kryen operacione me dy vargje të tipit float, d.m.th. me vlera jo të plota. Për arsyet e përmendura më sipër, inicializimi (mbushja e grupit me vlera të ndryshme arbitrare) u krye nga CPU. Më pas, u kryen 25 operacione të ndryshme me elementët përkatës nga çdo grup, rezultatet e ndërmjetme u shkruan në grupin e tretë. Madhësia e grupit ndryshoi, rezultatet janë si më poshtë:

Janë kryer gjithsej 4 teste:

1024 elemente në çdo grup:

Shihet qartë se me një numër kaq të vogël elementësh, llogaritja paralele ka pak përdorim, sepse Llogaritjet në vetvete janë shumë më të shpejta se përgatitja e tyre.

4096 elemente në çdo grup:

Dhe tani mund të shihni që karta video kryen operacione në vargje 3 herë më shpejt se procesori. Për më tepër, koha e ekzekutimit të këtij testi në kartën video nuk u rrit (një rënie e lehtë në kohë mund t'i atribuohet një gabimi).

Tani ka 12288 elemente në çdo grup:

Ndarja e kartës video është rritur me 2 herë. Përsëri, vlen të përmendet se koha e ekzekutimit në kartën video është rritur
në mënyrë të parëndësishme, por në procesor më shumë se 3 herë, d.m.th. proporcionale me kompleksitetin e detyrës.

Dhe testi i fundit është 36864 elementë në çdo grup:

Në këtë rast, përshpejtimi arrin vlera mbresëlënëse - pothuajse 22 herë më shpejt në një kartë video. Dhe përsëri, koha e ekzekutimit në kartën video u rrit pak, por në procesor - 3 herë të kërkuara, e cila është përsëri proporcionale me kompleksitetin e detyrës.

Nëse vazhdoni të ndërlikoni llogaritjet, karta video fiton gjithnjë e më shumë. Edhe pse shembulli është disi i ekzagjeruar, situata e përgjithshme tregon qartë. Por siç u përmend më lart, jo gjithçka mund të paralelizohet. Për shembull, llogaritja e Pi. Ka vetëm shembuj të shkruar duke përdorur metodën Monte Carlo, por saktësia e llogaritjeve është 7 shifra dhjetore, d.m.th. noton e rregullt. Për të rritur saktësinë e llogaritjeve, kërkohet aritmetikë e gjatë dhe këtu lindin probleme, sepse Është shumë, shumë e vështirë për ta zbatuar këtë në mënyrë efektive. Nuk mund të gjeja shembuj në internet që përdorin CUDA dhe llogarisin Pi në 1 milion vende dhjetore. Janë bërë përpjekje për të shkruar një aplikacion të tillë, por metoda më e thjeshtë dhe më efikase për llogaritjen e Pi është algoritmi Brent-Salamin ose formula e Gausit. SuperPI i njohur ka shumë të ngjarë (duke gjykuar nga shpejtësia e funksionimit dhe numri i përsëritjeve) përdor formulën Gaussian. Dhe, duke gjykuar nga
Për shkak të faktit se SuperPI është me një fije, mungesa e shembujve nën CUDA dhe dështimi i përpjekjeve të mia, është e pamundur të paralelizohet efektivisht numërimi Pi.

Nga rruga, mund të vëreni se si rritet ngarkesa në GPU gjatë llogaritjeve, dhe memoria ndahet gjithashtu.

Tani le të kalojmë te përfitimet më praktike të CUDA, përkatësisht programet ekzistuese aktualisht që përdorin këtë teknologji. Në pjesën më të madhe, këto janë të gjitha llojet e konvertuesve dhe redaktuesve audio/video.

3 skedarë të ndryshëm video janë përdorur në testim:

      *Historia e realizimit të filmit Avatar - 1920x1080, MPEG4, h.264.
      *Seria "Më gënje" - 1280x720, MPEG4, h.264.
      *Seria "Është gjithmonë me diell në Filadelfia" - 624x464, xvid.

Kontejneri dhe madhësia e dy skedarëve të parë ishte .mkv dhe 1.55 GB, dhe i fundit ishte .avi dhe 272 MB.

Le të fillojmë me një produkt shumë sensacional dhe popullor - Badaboom. Versioni i përdorur - 1.2.1.74 . Kostoja e programit është $29.90 .

Ndërfaqja e programit është e thjeshtë dhe intuitive - në të majtë zgjedhim skedarin ose diskun burimor, dhe në të djathtë - pajisjen e kërkuar për të cilën do të kodojmë. Ekziston gjithashtu një modalitet përdoruesi në të cilin parametrat vendosen manualisht, gjë që kemi përdorur.

Së pari, le të shohim se sa shpejt dhe me efikasitet është koduar videoja "në vetvete", d.m.th. të njëjtën rezolucion dhe afërsisht të njëjtën madhësi. Ne do ta masim shpejtësinë në fps, dhe jo në kohën e kaluar - në këtë mënyrë është më e përshtatshme të krahasohet dhe llogaritet se sa do të kompresohet një video me gjatësi arbitrare. Sepse Sot ne po shqyrtojmë teknologjinë "e gjelbër", atëherë grafikët do të jenë përkatës -)

Shpejtësia e kodimit varet drejtpërdrejt nga cilësia, kjo është e qartë. Vlen të përmendet se rezolucioni i dritës (le ta quajmë atë tradicionalisht SD) nuk është problem për Badaboom - shpejtësia e kodimit është 5.5 herë më e lartë se shpejtësia origjinale e videove (24 fps). Dhe madje edhe video e rëndë 1080p konvertohet nga programi në kohë reale. Vlen të theksohet se cilësia e videos finale është shumë afër materialit origjinal video, d.m.th. Badaboom kodon me shumë, shumë efikasitet.

Por zakonisht ata transferojnë video në një rezolucion më të ulët, le të shohim se si janë gjërat në këtë mënyrë. Me zvogëlimin e rezolucionit, shpejtësia e biteve të videos gjithashtu u ul. Ishte 9500 kbps për skedarin dalës 1080p, 4100 kbps për 720p dhe 2400 kbps për 720x404. Zgjedhja është bërë në bazë të një raporti të arsyeshëm madhësi/cilësi.

Nuk nevojiten komente. Nëse bëni një ripjesë nga 720p në cilësi të rregullt SD, atëherë transkodimi i një filmi që zgjat 2 orë do të zgjasë rreth 30 minuta. Dhe në të njëjtën kohë, ngarkesa e procesorit do të jetë e parëndësishme, ju mund të bëni biznesin tuaj pa ndjerë siklet.

Po sikur ta konvertoni videon në një format për një pajisje celulare? Për ta bërë këtë, zgjidhni profilin e iPhone (shpejtësia e biteve 1 Mbit/s, 480x320) dhe shikoni shpejtësinë e kodimit:

A duhet të them ndonjë gjë? Një film dy-orësh me cilësi normale iPhone transkodohet në më pak se 15 minuta. Me cilësi HD është më e vështirë, por gjithsesi shumë e shpejtë. Gjëja kryesore është që cilësia e videos dalëse të mbetet në një nivel mjaft të lartë kur shikohet në një ekran telefoni.

Në përgjithësi, përshtypjet nga Badaboom janë pozitive, shpejtësia e funksionimit është e këndshme dhe ndërfaqja është e thjeshtë dhe e qartë. Të gjitha llojet e gabimeve në versionet e mëparshme (kam përdorur beta në 2008) janë rregulluar. Me përjashtim të një gjëje - rruga për në skedarin burimor, si dhe në dosjen në të cilën ruhet video e përfunduar, nuk duhet të përmbajë shkronja ruse. Por krahasuar me avantazhet e programit, kjo pengesë është e parëndësishme.

Tjetra në radhë do të kemi Super LoiLoScope. Për versionin e rregullt ata pyesin 3280 rubla, dhe për versionin me prekje, i cili mbështet kontrollin me prekje në Windows 7, ata kërkojnë po aq 4440 rubla. Le të përpiqemi të kuptojmë pse zhvilluesi dëshiron atë lloj parash dhe pse redaktori i videos ka nevojë për mbështetje me shumë prekje. Versioni i fundit i përdorur - 1.8.3.3 .

Është mjaft e vështirë të përshkruhet ndërfaqja e programit me fjalë, kështu që vendosa të bëj një video të shkurtër. Do të them menjëherë se, si të gjithë konvertuesit e videove për CUDA, përshpejtimi i GPU-së mbështetet vetëm për daljen e videos në MPEG4 me kodekun h.264.

Gjatë kodimit, ngarkesa e procesorit është 100%, por kjo nuk shkakton shqetësim. Shfletuesi dhe aplikacionet e tjera të lehta nuk ngadalësohen.

Tani le të kalojmë te performanca. Për të filluar, gjithçka është e njëjtë si me Badaboom - duke transkoduar videon në një cilësi të ngjashme.

Rezultatet janë shumë më të mira se Badaboom. Cilësia është gjithashtu e shkëlqyer, ndryshimi me origjinalin mund të vërehet vetëm duke krahasuar kornizat në çift nën një xham zmadhues.

Wow, këtu LoiloScope tejkalon Badaboom me 2,5 herë. Në të njëjtën kohë, ju lehtë mund të prisni dhe kodoni një video tjetër paralelisht, të lexoni lajme dhe madje të shikoni filma, madje edhe FullHD luhet pa probleme, edhe pse ngarkesa e procesorit është maksimale.

Tani le të përpiqemi të bëjmë një video për një pajisje celulare, le ta quajmë profilin njësoj siç quhej në Badaboom - iPhone (480x320, 1 Mbit/s):

Nuk ka asnjë gabim. Gjithçka u rishikua disa herë, çdo herë rezultati ishte i njëjtë. Me shumë mundësi, kjo ndodh për arsyen e thjeshtë se skedari SD u regjistrua me një kodek tjetër dhe në një enë tjetër. Gjatë transkodimit, video së pari deshifrohet, ndahet në matrica të një madhësie të caktuar dhe kompresohet. Dekoderi ASP i përdorur në rastin e xvid është më i ngadalshëm se AVC (për h.264) kur deshifrohet paralelisht. Megjithatë, 192 fps është 8 herë më e shpejtë se shpejtësia e videos origjinale; një seri 23-minutëshe kompresohet në më pak se 4 minuta. Situata u përsërit me skedarë të tjerë të ngjeshur në xvid/DivX.

LoiloScope Kam lënë vetëm përshtypje të këndshme - ndërfaqja, megjithë pazakontësinë e saj, është e përshtatshme dhe funksionale, dhe shpejtësia e funksionimit është përtej lavdërimit. Funksionaliteti relativisht i dobët është disi zhgënjyes, por shpesh me instalim të thjeshtë ju duhet vetëm të rregulloni pak ngjyrat, të bëni tranzicion të qetë dhe të shtoni tekst, dhe LoiloScope bën një punë të shkëlqyer me këtë. Çmimi është gjithashtu disi i frikshëm - më shumë se 100 dollarë për versionin e rregullt është normale për vendet e huaja, por shifra të tilla ende na duken pak të egra. Edhe pse, e pranoj që nëse, për shembull, do të filmoja dhe modifikoja shpesh video në shtëpi, mund të kisha menduar ta blija. Në të njëjtën kohë, nga rruga, kontrollova mundësinë e redaktimit të përmbajtjes HD (ose më mirë AVCHD) drejtpërdrejt nga një video kamera pa u konvertuar më parë në një format tjetër; LoiloScope nuk zbuloi ndonjë problem me skedarë si .mts.

Teknologjia e re është si një specie evolucionare e sapo shfaqur. Një krijesë e çuditshme, ndryshe nga shumë të vjetër. Ndonjëherë e sikletshme, ndonjëherë qesharake. Dhe në fillim cilësitë e tij të reja nuk duken aspak të përshtatshme për këtë botë të vendosur dhe të qëndrueshme.

Sidoqoftë, kalon pak kohë dhe rezulton se fillestari vrapon më shpejt, kërcen më lart dhe në përgjithësi është më i fortë. Dhe ai ha më shumë miza se fqinjët e tij retrogradë. Dhe pastaj të njëjtët fqinjë fillojnë të kuptojnë se nuk ka kuptim të grindemi me këtë ish të ngathët. Është më mirë të jesh miq me të, dhe akoma më mirë të organizosh një simbiozë. Do të shihni që do të ketë më shumë miza.

Teknologjia GPGPU (General-Purpose Graphics Processing Units - procesor grafik me qëllim të përgjithshëm) ekziston për një kohë të gjatë vetëm në llogaritjet teorike të akademikëve mendjemprehtë. Kush tjeter? Për të propozuar ndryshimin rrënjësor të procesit informatik që është zhvilluar gjatë dekadave duke i besuar llogaritjen e degëve të tij paralele në një kartë video - vetëm teoricienët janë të aftë për këtë.

Logoja e teknologjisë CUDA na kujton se ajo u rrit në thellësi të
grafika 3D.

Por teknologjia GPGPU nuk do të mblidhte pluhur për një kohë të gjatë në faqet e revistave universitare. Duke pushuar pendët e cilësive të saj më të mira, ajo tërhoqi vëmendjen e prodhuesve. Kështu lindi CUDA - një zbatim i GPGPU në procesorët grafikë GeForce të prodhuar nga nVidia.

Falë CUDA, teknologjitë GPGPU janë bërë të zakonshme. Dhe tani vetëm më dritëshkurtër dhe i mbuluar me një shtresë të trashë dembelizmi zhvilluesi i sistemeve të programimit nuk deklaron mbështetje për CUDA me produktin e tyre. Botimet e IT-së e konsideruan si një nder prezantimin e detajeve të teknologjisë në artikuj të shumtë të shëndoshë të shkencës popullore dhe konkurrentët u ulën menjëherë me modele dhe ndër-përpilues për të zhvilluar diçka të ngjashme.

Njohja publike është një ëndërr jo vetëm për yjet që aspirojnë, por edhe për teknologjitë e sapolindura. Dhe CUDA ishte me fat. Ajo është e njohur, flasin e shkruajnë për të.

Ata thjesht shkruajnë sikur vazhdojnë të diskutojnë GPGPU në revista të trasha shkencore. Ata e bombardojnë lexuesin me një sërë termash si "rrjet", "SIMD", "warp", "host", "teksturë dhe memorie e vazhdueshme". Ata e zhytin atë deri në krye në diagramet e organizimit të GPU-ve nVidia, e çojnë atë përgjatë shtigjeve dredha-dredha të algoritmeve paralele dhe (lëvizja më e fortë) tregojnë lista të gjata të kodeve në gjuhën C. Si rezultat, rezulton se në hyrje të artikullit kemi një lexues të freskët me një dëshirë të zjarrtë për të kuptuar CUDA, dhe në dalje kemi të njëjtin lexues, por me një kokë të fryrë të mbushur me një rrëmujë faktesh, diagramesh. , kodi, algoritmet dhe termat.

Ndërkohë, qëllimi i çdo teknologjie është të na lehtësojë jetën. Dhe CUDA bën një punë të shkëlqyer me këtë. Rezultatet e punës së saj janë ato që do të bindin çdo skeptik më mirë se qindra skema dhe algoritme.

Jo kudo

CUDA mbështetet nga superkompjuterë me performancë të lartë
nVidia Tesla.

E megjithatë, përpara se të shikoni rezultatet e punës së CUDA në fushën e lehtësimit të jetës së përdoruesit mesatar, ia vlen të kuptoni të gjitha kufizimet e saj. Ashtu si me një xhind: çdo dëshirë, por një. CUDA ka edhe takat e saj të Akilit. Një prej tyre janë kufizimet e platformave në të cilat mund të funksionojë.

Lista e kartave video nVidia që mbështesin CUDA paraqitet në një listë të veçantë të quajtur Produkte të aktivizuara CUDA. Lista është mjaft mbresëlënëse, por e lehtë për t'u klasifikuar. Mbështetja CUDA nuk mohohet:

    Modelet nVidia GeForce të serive 8, 9, 100, 200 dhe 400 me një minimum prej 256 megabajt memorie video në bord. Mbështetja shtrihet si për kartat e desktopit ashtu edhe për ato celulare.

    Shumica dërrmuese e kartave video të desktopit dhe celularit janë nVidia Quadro.

    Të gjitha zgjidhjet nga seria netbook nvidia ION.

    Zgjidhjet e superkompjuterëve HPC (High Performance Computing) me performancë të lartë dhe nVidia Tesla përdoren si për llogaritjen personale ashtu edhe për organizimin e sistemeve të shkallëzueshme të grupimeve.

Prandaj, përpara se të përdorni produkte softuerësh të bazuar në CUDA, ia vlen të kontrolloni këtë listë të të preferuarave.

Përveç vetë kartës video, kërkohet një drejtues i përshtatshëm për të mbështetur CUDA. Është lidhja midis procesorëve qendror dhe grafikë, duke vepruar si një lloj ndërfaqe softuerike për të hyrë në kodin e programit dhe të dhënat në thesarin me shumë bërthama të GPU-së. Për t'u siguruar që të mos bëni një gabim, nVidia rekomandon të vizitoni faqen e drejtuesve dhe të merrni versionin më të fundit.

...por vetë procesi

Si funksionon CUDA? Si të shpjegohet procesi kompleks i llogaritjes paralele në një arkitekturë të veçantë të harduerit GPU pa e zhytur lexuesin në humnerën e termave specifikë?

Ju mund të provoni ta bëni këtë duke imagjinuar se si procesori qendror e ekzekuton programin në simbiozë me procesorin grafik.

Arkitekturisht, njësia qendrore e përpunimit (CPU) dhe homologu i saj grafik (GPU) janë projektuar ndryshe. Nëse bëjmë një analogji me botën e industrisë së automobilave, atëherë CPU është një kamionçinë, një nga ato që quhet "hambar". Duket si një makinë pasagjerësh, por në të njëjtën kohë (nga këndvështrimi i zhvilluesve) "është një zviceran, një korrës dhe një lojtar në tub". Kryen rolin e një kamioni të vogël, autobusi dhe hatchback të hipertrofizuar në të njëjtën kohë. Station vagon, me pak fjalë. Ka pak bërthama cilindrash, por ato trajtojnë pothuajse çdo detyrë, dhe memoria mbresëlënëse e cache është e aftë të ruajë një mori të dhënash.

Por GPU është një makinë sportive. Ekziston vetëm një funksion: të dërgoni pilotin në vijën e finishit sa më shpejt të jetë e mundur. Prandaj, pa memorie të madhe të bagazhit, pa ndenjëse shtesë. Por ka qindra herë më shumë bërthama cilindrash sesa CPU.

Falë CUDA, zhvilluesit e programeve GPGPU nuk kanë nevojë të thellohen në kompleksitetin e programimit
zhvillim për motorët grafikë si DirectX dhe OpenGL

Ndryshe nga procesori qendror, i cili është i aftë të zgjidhë çdo detyrë, duke përfshirë grafikën, por me performancë mesatare, procesori grafik është përshtatur për një zgjidhje me shpejtësi të lartë të një detyre: shndërrimi i një grupi poligonesh në hyrje në një grup pikselësh në prodhimit. Për më tepër, ky problem mund të zgjidhet paralelisht duke përdorur qindra bërthama llogaritëse relativisht të thjeshta në GPU.

Pra, çfarë lloj tandemi mund të ketë nga një kamionçinë dhe një makinë sportive? CUDA funksionon diçka si kjo: programi funksionon në CPU derisa të ketë një seksion kodi që mund të ekzekutohet paralelisht. Më pas, në vend që të ekzekutohet ngadalë në dy (ose edhe tetë) bërthama të CPU-së më të lezetshme, ai transferohet në qindra bërthama GPU. Në të njëjtën kohë, koha e ekzekutimit të këtij seksioni zvogëlohet ndjeshëm, që do të thotë se koha e ekzekutimit të të gjithë programit gjithashtu zvogëlohet.

Teknologjikisht, asgjë nuk ndryshon për programuesin. Kodi i programeve CUDA është i shkruar në gjuhën C. Më saktësisht, në dialektin e saj të veçantë “C me përrenj” (C me përrenj). E zhvilluar në Stanford, kjo shtrirje e gjuhës C quhet Brook. Ndërfaqja që transferon kodin Brook në GPU është drejtuesi i një karte video që mbështet CUDA. Ai organizon të gjithë procesin e përpunimit të këtij seksioni të programit në mënyrë që për programuesin GPU të duket si një bashkëprocesor CPU. Shumë e ngjashme me përdorimin e një bashkëprocesori matematikor në ditët e para të llogaritjes personale. Me ardhjen e Brook, kartat video me mbështetje CUDA dhe drejtuesit për to, çdo programues është bërë në gjendje të aksesojë GPU-në në programet e tyre. Por më parë ky shamanizëm zotërohej nga një rreth i ngushtë njerëzish të zgjedhur që kaluan vite duke përmirësuar teknikat e programimit për motorët grafikë DirectX ose OpenGL.

Në fuçinë e këtij mjalti pretencioz - lavdërimet e CUDA-s - ia vlen të futet një mizë në vaj, domethënë kufizime. Jo çdo problem që duhet të programohet mund të zgjidhet duke përdorur CUDA. Nuk do të jetë e mundur të shpejtoni zgjidhjen e detyrave rutinë të zyrës, por mund t'i besoni CUDA për të llogaritur sjelljen e mijëra të të njëjtit lloj luftëtarësh në World of Warcraft. Por kjo është një detyrë e sajuar. Le të shohim shembuj të asaj që CUDA tashmë zgjidh në mënyrë shumë efektive.

Punë të drejta

CUDA është një teknologji shumë pragmatike. Duke zbatuar mbështetjen e saj në video-kartat e saj, nVidia me të drejtë priste që baneri CUDA të merrej nga shumë entuziastë si në mjedisin universitar ashtu edhe në tregti. Dhe kështu ndodhi. Projektet e bazuara në CUDA jetojnë dhe sjellin përfitime.

NVIDIA PhysX

Kur reklamojnë kryeveprën e tyre të ardhshme të lojërave, prodhuesit shpesh theksojnë realizmin e tij 3D. Por, pavarësisht se sa reale mund të jetë bota e lojës 3D, nëse ligjet elementare të fizikës, si graviteti, fërkimi dhe hidrodinamika, zbatohen gabimisht, gënjeshtësia do të ndihet menjëherë.

Një nga aftësitë e motorit fizik NVIDIA PhysX është puna realiste me indet.

Zbatimi i algoritmeve për simulimin kompjuterik të ligjeve themelore fizike është një detyrë shumë e vështirë. Kompanitë më të famshme në këtë fushë janë kompania irlandeze Havok me ndër-platformën e saj fizike Havok Physics dhe Ageia kaliforniane - paraardhësi i procesorit të parë fizik në botë (PPU - Physics Processing Unit) dhe motorit fizik përkatës PhysX. E para prej tyre, megjithëse e blerë nga Intel, tani po punon në mënyrë aktive në fushën e optimizimit të motorit Havok për kartat video ATI dhe procesorët AMD. Por Ageia me motorin e saj PhysX u bë pjesë e nVidia. Në të njëjtën kohë, nVidia zgjidhi problemin mjaft të vështirë të përshtatjes së PhysX me teknologjinë CUDA.

Kjo u bë e mundur falë statistikave. Është vërtetuar statistikisht se pa marrë parasysh se sa komplekse performon një GPU, disa nga bërthamat e tij janë ende të papunë. Pikërisht në këto bërthama funksionon motori PhysX.

Falë CUDA, pjesa më e madhe e llogaritjeve në lidhje me fizikën e botës së lojës filloi të kryhej në kartën video. Fuqia e çliruar e procesorit qendror u përdor për të zgjidhur probleme të tjera të lojës. Rezultati nuk vonoi. Sipas ekspertëve, fitimi i performancës në lojën me PhysX që funksionon në CUDA është rritur me të paktën një renditje të madhësisë. Mundësia e realizimit të ligjeve fizike është rritur gjithashtu. CUDA kujdeset për llogaritjen rutinë të zbatimit të fërkimit, gravitetit dhe gjërave të tjera të njohura për ne për objektet shumëdimensionale. Tani jo vetëm heronjtë dhe pajisjet e tyre përshtaten në mënyrë të përkryer me ligjet e botës fizike me të cilën jemi njohur, por edhe pluhuri, mjegulla, vala e shpërthimit, flaka dhe uji.

Versioni CUDA i paketës së kompresimit të teksturës NVIDIA Texture Tools 2

A ju pëlqejnë objektet realiste në lojërat moderne? Vlen të thuhet falë zhvilluesve të teksturës. Por sa më shumë realitet të jetë në teksturë, aq më i madh është vëllimi i saj. Sa më shumë që ajo merr një kujtesë të çmuar. Për të shmangur këtë, teksturat para-kompresohen dhe dekompresohen në mënyrë dinamike sipas nevojës. Dhe kompresimi dhe dekompresimi janë llogaritje të pastra. Për të punuar me teksturat, nVidia ka lëshuar paketën NVIDIA Texture Tools. Ai mbështet kompresimin dhe dekompresimin efikas të teksturave DirectX (i ashtuquajturi format HF). Versioni i dytë i kësaj pakete mburret me mbështetjen për algoritmet e kompresimit BC4 dhe BC5 të implementuara në teknologjinë DirectX 11. Por gjëja kryesore është se NVIDIA Texture Tools 2 përfshin mbështetjen CUDA. Sipas nVidia, kjo jep një rritje 12-fish të performancës në detyrat e kompresimit dhe dekompresimit të teksturës. Kjo do të thotë që kornizat e lojës do të ngarkohen më shpejt dhe do ta kënaqin lojtarin me realizmin e tyre.

Paketa NVIDIA Texture Tools 2 është krijuar për të punuar me CUDA. Përfitimi i performancës gjatë ngjeshjes dhe dekompresimit të teksturave është i dukshëm.

Përdorimi i CUDA mund të përmirësojë ndjeshëm efikasitetin e mbikëqyrjes video.

Përpunimi i transmetimit të videos në kohë reale

Çfarëdo që mund të thuhet, bota aktuale, nga pikëpamja e spiunazhit, është shumë më afër botës së Big Brother të Orwellit sesa duket. Si drejtuesit e makinave, ashtu edhe vizitorët në vendet publike ndjejnë shikimin e kamerave video.

Lumenjtë e plotë të informacionit video derdhen në qendrat e përpunimit të tij dhe... drejtohen në një lidhje të ngushtë - një person. Në shumicën e rasteve, ai është autoriteti i fundit që monitoron botën e videove. Për më tepër, autoriteti nuk është më efektivi. Vezullon, shpërqendrohet dhe përpiqet të bjerë në gjumë.

Falë CUDA, u bë i mundur zbatimi i algoritmeve për gjurmimin e njëkohshëm të objekteve të shumta në një transmetim video. Në këtë rast, procesi ndodh në kohë reale dhe video është plot 30 fps. Krahasuar me zbatimin e një algoritmi të tillë në CPU-të moderne me shumë bërthama, CUDA jep një rritje dy ose trefish të performancës, dhe kjo, siç e shihni, është shumë.

Konvertimi i videos, filtrimi i audios

Konvertuesi i videos Badaboom është i pari që përdor CUDA për të shpejtuar konvertimin.

Është mirë të shikosh një produkt të ri me qira video në cilësi FullHD dhe në një ekran të madh. Por ju nuk mund të merrni një ekran të madh me vete në rrugë dhe kodiku i videos FullHD do të pengojë procesorin me fuqi të ulët të një vegle celulare. Konvertimi vjen në shpëtim. Por shumica e atyre që e kanë hasur në praktikë ankohen për kohën e gjatë të konvertimit. Kjo është e kuptueshme, procesi është rutinë, i përshtatshëm për paralelizim dhe ekzekutimi i tij në CPU nuk është shumë optimal.

Por CUDA e përballon atë me një zhurmë. Shenja e parë është konverteri Badaboom nga Elevental. Zhvilluesit e Badaboom morën vendimin e duhur kur zgjodhën CUDA. Testet tregojnë se ai konverton një film standard një orë e gjysmë në formatin iPhone/iPod Touch në më pak se njëzet minuta. Dhe kjo përkundër faktit se kur përdorni vetëm CPU, ky proces zgjat më shumë se një orë.

Ndihmon CUDA dhe adhuruesit profesionistë të muzikës. Secili prej tyre do të jepte një gjysmë mbretërie për një kryqëzim efektiv FIR - një grup filtrash që ndajnë spektrin e zërit në disa breza. Ky proces kërkon shumë punë dhe, me një vëllim të madh materiali audio, e detyron inxhinierin e zërit të shkojë në "tym" për disa orë. Zbatimi i një kryqëzimi FIR të bazuar në CUDA përshpejton funksionimin e tij qindra herë.

CUDA Future

Duke e bërë realitet teknologjinë GPGPU, CUDA nuk po mbështetet në dafinat e saj. Siç ndodh kudo, parimi i reflektimit funksionon në CUDA: tani jo vetëm arkitektura e procesorëve video nVidia ndikon në zhvillimin e versioneve CUDA SDK, por vetë teknologjia CUDA e detyron nVidia të rishqyrtojë arkitekturën e çipave të saj. Një shembull i një reflektimi të tillë është platforma nVidia ION. Versioni i tij i dytë është optimizuar posaçërisht për zgjidhjen e problemeve CUDA. Kjo do të thotë që edhe në zgjidhjet harduerike relativisht të lira, konsumatorët do të marrin të gjithë fuqinë dhe aftësitë e shkëlqyera të CUDA.

Dhe është krijuar për të përkthyer kodin pritës (kodin kryesor, kodin e kontrollit) dhe kodin e pajisjes (kodin e harduerit) (skedarët me shtrirjen .cu) në skedarë objektesh të përshtatshëm për procesin e montimit të programit ose bibliotekës përfundimtare në çdo mjedis programimi, për shembull. në NetBeans.

Arkitektura CUDA përdor një model të memories së rrjetit, modelimin e fijeve të grupimit dhe udhëzimet SIMD. E aplikueshme jo vetëm për llogaritjet grafike me performancë të lartë, por edhe për llogaritje të ndryshme shkencore duke përdorur kartat video nVidia. Shkencëtarët dhe studiuesit përdorin gjerësisht CUDA në një sërë fushash, duke përfshirë astrofizikën, biologjinë dhe kiminë llogaritëse, modelimin e dinamikës së lëngjeve, ndërveprimet elektromagnetike, tomografinë e kompjuterizuar, analizën sizmike dhe më shumë. CUDA ka aftësinë për t'u lidhur me aplikacionet duke përdorur OpenGL dhe Direct3D. CUDA është softuer ndër-platformë për sisteme operative si Linux, Mac OS X dhe Windows.

Më 22 mars 2010, nVidia lëshoi ​​CUDA Toolkit 3.0, i cili përmbante mbështetje për OpenCL.

Pajisjet

Platforma CUDA u shfaq për herë të parë në treg me lëshimin e çipit të gjeneratës së tetë NVIDIA G80 dhe u bë e pranishme në të gjitha seritë pasuese të çipave grafikë, të cilët përdoren në familjet e përshpejtuesve GeForce, Quadro dhe NVidia Tesla.

Seria e parë e harduerit për të mbështetur CUDA SDK, G8x, kishte një procesor vektori me precizion të vetëm 32-bit duke përdorur CUDA SDK si një API (CUDA mbështet llojin e dyfishtë C, por saktësia e tij tani është reduktuar në 32-bit pikë lundruese). Procesorët e mëvonshëm GT200 kanë mbështetje për saktësinë 64-bit (vetëm SFU), por performanca është dukshëm më e keqe se sa për saktësinë 32-bit (për shkak të faktit se ka vetëm dy SFU për multiprocesor të rrjedhës, ndërsa ka tetë procesorë skalorë). GPU organizon multithreading harduer, i cili ju lejon të përdorni të gjitha burimet e GPU. Kështu, hapet perspektiva për të transferuar funksionet e përshpejtuesit fizik në përshpejtuesin grafik (një shembull i zbatimit është nVidia PhysX). Ai gjithashtu hap mundësi të gjera për përdorimin e pajisjeve grafike kompjuterike për të kryer llogaritjet komplekse jo grafike: për shembull, në biologjinë llogaritëse dhe degë të tjera të shkencës.

Përparësitë

Krahasuar me qasjen tradicionale për organizimin e llogaritjeve për qëllime të përgjithshme përmes API-ve grafike, arkitektura CUDA ka përparësitë e mëposhtme në këtë fushë:

Kufizimet

  • Të gjitha funksionet e ekzekutueshme në pajisje nuk mbështesin rekursionin (CUDA Toolkit 3.1 mbështet treguesit dhe rekursionin) dhe kanë disa kufizime të tjera

GPU të mbështetura dhe përshpejtuesit grafikë

Lista e pajisjeve nga prodhuesi i pajisjeve Nvidia me mbështetje të deklaruar të plotë për teknologjinë CUDA ofrohet në faqen zyrtare të internetit të Nvidia: Produktet GPU me CUDA-Enabled (anglisht).

Në fakt, pajisjet periferike të mëposhtme aktualisht mbështesin teknologjinë CUDA në tregun e pajisjeve kompjuterike:

Versioni i specifikimeve GPU Kartat video
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, 302,30, 170, 3/580, 30x2 /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, 15XT, 6000, GeForce 1500, 6000, 1500, 6000, GeForce 1500 TX580, 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 GTX 670M 60M, GeForce GT 650M, GeForce GT 645M, GeForce GT 640M
3.5 GK110
Nvidia GeForce për kompjuterë desktop
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
Nvidia GeForce për kompjuterë celularë
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
Nvidia Quadro për kompjuterë desktop
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 Profili i ulët
Quadro FX 370
Quadro FX 370 Profili i ulët
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
Nvidia Quadro për kompjuterin celular
Quadro 5010M
Quadro 5000M
Quadro 4000M
Quadro 3000M
Quadro 2000M
Quadro 1000 M
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
  • Modelet Tesla C1060, Tesla S1070, Tesla C2050/C2070, Tesla M2050/M2070, Tesla S2050 lejojnë llogaritjet e GPU-së me saktësi të dyfishtë.

Karakteristikat dhe Specifikimet e Versioneve të ndryshme

Mbështetja e veçorive (veçoritë e palistuara janë
mbështetet për të gjitha aftësitë llogaritëse)
Aftësia llogaritëse (versioni)
1.0 1.1 1.2 1.3 2.x

Fjalët 32-bit në kujtesën globale
Nr po

vlerat e pikës lundruese në kujtesën globale
Funksionet atomike numër të plotë që veprojnë në
Fjalët 32-bit në kujtesën e përbashkët
Nr po
atomicExch() që funksionon në 32-bit
vlerat e pikës lundruese në memorien e përbashkët
Funksionet atomike numër të plotë që veprojnë në
Fjalët 64-bit në kujtesën globale
Deformoni funksionet e votës
Operacione me pikë lundruese me saktësi të dyfishtë Nr po
Funksionet atomike që funksionojnë në 64-bit
vlerat e plota në kujtesën e përbashkët
Nr po
Shtimi atomik me pikë lundruese që vepron në
Fjalë 32-bitëshe në kujtesën globale dhe të përbashkët
_votim()
_threadfence_system()
_syncthreads_count(),
_syncthreads_and(),
_syncthreads_or()
Funksionet sipërfaqësore
Rrjeti 3D i blloqeve të fijeve
Specifikimet teknike Aftësia llogaritëse (versioni)
1.0 1.1 1.2 1.3 2.x
Dimensionaliteti maksimal i rrjetës së blloqeve të fijeve 2 3
Dimensioni maksimal x-, y- ose z i një rrjeti blloqesh fijesh 65535
Dimensioniteti maksimal i bllokut të fillit 3
Dimensioni maksimal x ose y i një blloku 512 1024
Z-dimensioni maksimal i një blloku 64
Numri maksimal i fijeve për bllok 512 1024
Madhësia e shtrembërimit 32
Numri maksimal i blloqeve rezidente për multiprocesor 8
Numri maksimal i deformimeve rezidente për multiprocesor 24 32 48
Numri maksimal i thread-ve rezidentë për multiprocesor 768 1024 1536
Numri i regjistrave 32-bit për multiprocesor 8K 16 mijë 32 mijë
Sasia maksimale e memories së përbashkët për multiprocesor 16 KB 48 KB
Numri i bankave të përbashkëta të memories 16 32
Sasia e memories lokale për thread 16 KB 512 KB
Madhësia konstante e kujtesës 64 KB
Seti i punës së cache për multiprocesor për memorie konstante 8 KB
Seti i punës së cache për multiprocesor për memorien e teksturës Në varësi të pajisjes, midis 6 KB dhe 8 KB
Gjerësia maksimale për teksturën 1D
8192 32768
Gjerësia maksimale për teksturën 1D
referencë e lidhur me memorien lineare
2 27
Gjerësia maksimale dhe numri i shtresave
për një referencë teksture me shtresa 1D
8192 x 512 16384 x 2048
Gjerësia dhe lartësia maksimale për 2D
referencë teksture e lidhur me
memorie lineare ose një grup CUDA
65536 x 32768 65536 x 65535
Gjerësia, lartësia dhe numri maksimal
e shtresave për një referencë teksture me shtresa 2D
8192 x 8192 x 512 16384 x 16384 x 2048
Gjerësia, lartësia dhe thellësia maksimale
për një referencë teksture 3D të lidhur me lineare
memorie ose një grup CUDA
2048 x 2048 x 2048
Numri maksimal i teksturave që
mund të lidhet me një kernel
128
Gjerësia maksimale për një sipërfaqe 1D
referencë e lidhur me një grup CUDA
Jo
mbështetur
8192
Gjerësia dhe lartësia maksimale për një 2D
referencë sipërfaqësore e lidhur me një grup CUDA
8192 x 8192
Numri maksimal i sipërfaqeve që
mund të lidhet me një kernel
8
Numri maksimal i udhëzimeve për
bërthama
2 milionë

Shembull

CudaArray* cu_array; teksturë< float , 2 >tex; // Alokoni grupin cudaMalloc( & cu_array, cudaCreateChannelDesc< float>(), gjerësia, lartësia); // Kopjo të dhënat e imazhit në grup cudaMemcpy( cu_array, imazh, gjerësi* lartësi, cudaMemcpyHostToDevice) ; // Lidhni grupin me teksturën cudaBindTexture(tex, cu_array); // Ekzekuto kernel dim3 blockDim(16, 16, 1); dim3 gridDim(width / blockDim.x, lartësia / blockDim.y, 1); bërthama<<< gridDim, blockDim, 0 >>> (d_data, gjerësia, lartësia); cudaUnbindTexture(tex) ; kernel __global__ void (float * odata, lartësia int, gjerësia int) ( e panënshkruar int x = blockIdx.x * blockDim.x + threadIdx.x ; e panënshkruar int y = blockIdx.y * blockDim.y + threadIdx.y ; float = texfetch(tex, x, y); odata[ y* gjerësia+ x] = c;)

Importoni pycuda.driver si drv importoni numpy drv.init() dev = drv.Device(0) ctx = dev.make_context() mod = drv.SourceModule( """ __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 ("shumezoj_them" ) a = numpy.random .randn (400 ) .atype (numpy.float32 ) b = numpy.random .randn (400 ) .atype (numpy.float32 . destin_like) (a) multiply_them( drv.Out (dest) , drv.In (a) , drv.In (b) , block= (400 , 1 , 1 ) ) print dest-a*b

CUDA si lëndë në universitete

Që nga dhjetori 2009, modeli i softuerit CUDA mësohet në 269 universitete në mbarë botën. Në Rusi, kurset e trajnimit mbi CUDA jepen në Universitetin Politeknik të Shën Petersburgut, Universiteti Shtetëror Yaroslavl. P. G. Demidov, Moskë, Nizhny Novgorod, St. , MSTU ato. Bauman, Universiteti Teknik Kimik Rus me emrin. Mendeleev, Qendra Ndërrajonale Superkompjuterike RAS,. Për më tepër, në dhjetor 2009, u njoftua se filloi të funksionojë qendra e parë shkencore dhe arsimore ruse "Parallel Computing", e vendosur në qytetin e Dubna, detyrat e së cilës përfshijnë trajnime dhe konsultime për zgjidhjen e problemeve komplekse kompjuterike në GPU.

Në Ukrainë, kurset mbi CUDA mësohen në Institutin e Analizës së Sistemit në Kiev.

Lidhjet

Burimet zyrtare

  • CUDA Zone (rusisht) - faqja zyrtare e CUDA
  • CUDA GPU Computing (Anglisht) - forume zyrtare në internet të dedikuara për informatikë CUDA

Burime jozyrtare

Pajisjet e Tomit
  • Dmitry Chekanov. nVidia CUDA: llogaritja në një kartë video apo vdekja e CPU? . Tom's Hardware (22 qershor 2008) Arkivuar
  • Dmitry Chekanov. nVidia CUDA: Krahasimi i aplikacioneve GPU për tregun masiv. Tom's Hardware (19 maj 2009). Arkivuar nga origjinali më 4 mars 2012. Marrë më 19 maj 2009.
iXBT.com
  • Alexey Berillo. NVIDIA CUDA - llogaritje jo grafike në GPU. Pjesa 1 . iXBT.com (23 shtator 2008). Arkivuar nga origjinali më 4 mars 2012. Marrë më 20 janar 2009.
  • Alexey Berillo. NVIDIA CUDA - llogaritje jo grafike në GPU. Pjesa 2 . iXBT.com (22 tetor 2008). - Shembuj të zbatimit të NVIDIA CUDA. Arkivuar nga origjinali më 4 mars 2012. Marrë më 20 janar 2009.
Burime të tjera
  • Boreskov Alexey Viktorovich. Bazat CUDA (20 janar 2009). Arkivuar nga origjinali më 4 mars 2012. Marrë më 20 janar 2009.
  • Vladimir Frolov. Hyrje në teknologjinë CUDA. Revista online “Computer Graphics and Multimedia” (19 dhjetor 2008). Arkivuar nga origjinali më 4 mars 2012. Marrë më 28 tetor 2009.
  • Igor Oskolkov. NVIDIA CUDA është një biletë e përballueshme për në botën e kompjuterëve të mëdhenj. Computerra (30 Prill 2009). Marrë më 3 maj 2009.
  • Vladimir Frolov. Hyrje në CUDA Technology (1 gusht 2009). Arkivuar nga origjinali më 4 mars 2012. Marrë më 3 prill 2010.
  • GPGPU.ru. Përdorimi i kartave video për llogaritjen
  • . Qendra Informatike Paralele

Shënime

Shiko gjithashtu

Në zhvillimin e procesorëve modernë, ka një tendencë drejt një rritje graduale të numrit të bërthamave, gjë që rrit aftësitë e tyre në llogaritjen paralele. Sidoqoftë, GPU-të kanë qenë prej kohësh të disponueshme që janë dukshëm më të larta se CPU-të në këtë drejtim. Dhe këto aftësi të GPU-ve tashmë janë marrë parasysh nga disa kompani. Përpjekjet e para për të përdorur përshpejtuesit grafikë për llogaritjen jo-caktuar janë bërë që nga fundi i viteve '90. Por vetëm shfaqja e shaderëve u bë shtysë për zhvillimin e një teknologjie krejtësisht të re, dhe në vitin 2003 u shfaq koncepti i GPGPU (njësitë e përpunimit grafik me qëllim të përgjithshëm). Një rol të rëndësishëm në zhvillimin e kësaj nisme ka luajtur BrookGPU, e cila është një zgjerim i veçantë për gjuhën C. Para ardhjes së BrookGPU, programuesit mund të punonin me GPU vetëm përmes Direct3D ose OpenGL API. Brook lejoi zhvilluesit të punonin me një mjedis të njohur, dhe vetë përpiluesi, duke përdorur biblioteka të veçanta, zbatoi ndërveprimin me GPU në një nivel të ulët.

Një përparim i tillë nuk mund të mos tërhiqte vëmendjen e drejtuesve të kësaj industrie - AMD dhe NVIDIA, të cilët filluan të zhvillojnë platformat e tyre softuerike për llogaritje jo grafike në kartat e tyre video. Askush nuk i di më mirë se zhvilluesit e GPU të gjitha nuancat dhe veçoritë e produkteve të tyre, gjë që u lejon të njëjtave kompani të optimizojnë paketën e softuerit për zgjidhje specifike harduerike sa më efikase të jetë e mundur. Aktualisht, NVIDIA po zhvillon platformën CUDA (Compute Unified Device Architecture); AMD quan një teknologji të ngjashme CTM (Close To Metal) ose AMD Stream Computing. Ne do të shikojmë disa nga aftësitë e CUDA dhe do të vlerësojmë në praktikë aftësitë kompjuterike të çipit grafik G92 të kartës video GeForce 8800 GT.

Por së pari, le të shohim disa nga nuancat e kryerjes së llogaritjeve duke përdorur GPU. Avantazhi i tyre kryesor është se çipi grafik fillimisht është projektuar për të ekzekutuar fije të shumta, ndërsa çdo bërthamë e një CPU konvencionale ekzekuton një rrymë udhëzimesh të njëpasnjëshme. Çdo GPU moderne është një multiprocesor i përbërë nga disa grupime kompjuterike, me shumë ALU në secilin. Çipi më i fuqishëm modern GT200 përbëhet nga 10 grupime të tilla, secila prej të cilave ka 24 procesorë të rrjedhës. Karta video e testuar GeForce 8800 GT e bazuar në çipin G92 ka shtatë njësi të mëdha kompjuterike me 16 procesorë transmetimi secila. CPU-të përdorin blloqe SIMD SSE për llogaritjet e vektorit (të dhëna të shumta me një instruksion të vetëm - një instruksion ekzekutohet në të dhëna të shumta), gjë që kërkon transformimin e të dhënave në 4 vektorë. GPU i përpunon thread-et në mënyrë skalare, d.m.th. një instruksion aplikohet mbi disa threads (SIMT - një instruksion i vetëm i shumëfishtë threads). Kjo i kursen zhvilluesit nga konvertimi i të dhënave në vektorë dhe lejon degëzimin arbitrar në rryma. Çdo njësi llogaritëse GPU ka akses të drejtpërdrejtë në memorie. Dhe gjerësia e brezit të memories video është më e lartë, falë përdorimit të disa kontrollorëve të veçantë të memories (në G200 të fundit ka 8 kanale 64-bit) dhe frekuencave të larta të funksionimit.

Në përgjithësi, në detyra të caktuara kur punoni me sasi të mëdha të dhënash, GPU-të janë shumë më të shpejtë se CPU-të. Më poshtë shihni një ilustrim të kësaj deklarate:


Grafiku tregon dinamikën e rritjes së performancës së CPU dhe GPU që nga viti 2003. NVIDIA pëlqen t'i citojë këto të dhëna si reklama në dokumentet e saj, por ato janë vetëm përllogaritje teorike dhe në realitet hendeku, natyrisht, mund të rezultojë shumë më i vogël.

Por sido që të jetë, ekziston një potencial i madh GPU që mund të përdoren dhe që kërkon një qasje specifike për zhvillimin e softuerit. E gjithë kjo zbatohet në mjedisin e harduerit dhe softuerit CUDA, i cili përbëhet nga disa nivele softuerike - CUDA Runtime API e nivelit të lartë dhe API CUDA Driver e nivelit të ulët.


CUDA përdor gjuhën standarde C për programim, e cila është një nga avantazhet e saj kryesore për zhvilluesit. Fillimisht, CUDA përfshin bibliotekat BLAS (paketë bazë algjebër lineare) dhe FFT (transformim Fourier). CUDA gjithashtu ka aftësinë për të bashkëvepruar me API-të grafike OpenGL ose DirectX, aftësinë për t'u zhvilluar në një nivel të ulët dhe karakterizohet nga një shpërndarje e optimizuar e rrjedhave të të dhënave midis CPU dhe GPU. Llogaritjet CUDA kryhen njëkohësisht me ato grafike, ndryshe nga platforma e ngjashme AMD, ku lëshohet një makinë virtuale speciale për llogaritjet në GPU. Por një "bashkëjetesë" e tillë është gjithashtu e mbushur me gabime nëse krijohet një ngarkesë e madhe nga API grafike ndërsa CUDA po funksionon njëkohësisht - në fund të fundit, operacionet grafike kanë ende një përparësi më të lartë. Platforma është e pajtueshme me sistemet operative 32 dhe 64-bit Windows XP, Windows Vista, MacOS X dhe versione të ndryshme të Linux. Platforma është e hapur dhe në faqen e internetit, përveç drejtuesve të veçantë për kartën video, mund të shkarkoni paketat softuerike CUDA Toolkit, CUDA Developer SDK, duke përfshirë një përpilues, korrigjues, biblioteka standarde dhe dokumentacion.

Për sa i përket zbatimit praktik të CUDA, për një kohë të gjatë kjo teknologji është përdorur vetëm për llogaritjet matematikore shumë të specializuara në fushën e fizikës së grimcave, astrofizikës, mjekësisë apo parashikimit të ndryshimeve në tregun financiar etj. Por kjo teknologji po afrohet gradualisht me përdoruesit e zakonshëm, në veçanti, po shfaqen shtojca speciale për Photoshop që mund të përdorin fuqinë llogaritëse të GPU. Në një faqe të veçantë mund të studioni të gjithë listën e programeve që përdorin aftësitë e NVIDIA CUDA.

Si një test praktik i teknologjisë së re në kartën video MSI NX8800GT-T2D256E-OC, ne do të përdorim programin TMPGEnc. Ky produkt është komercial (versioni i plotë kushton 100 dollarë), por për kartat video MSI vjen si bonus në një version provë për një periudhë prej 30 ditësh. Ju mund ta shkarkoni këtë version nga faqja e internetit e zhvilluesit, por për të instaluar TMPGEnc 4.0 XPress MSI Special Edition ju duhet disku origjinal me drejtues nga karta MSI - pa të programi nuk do të instalohet.

Për të shfaqur informacionin më të plotë rreth aftësive kompjuterike në CUDA dhe për t'i krahasuar ato me përshtatës të tjerë video, mund të përdorni mjetin special CUDA-Z. Ky është informacioni që ai jep për kartën tonë video GeForce 8800GT:




Krahasuar me modelet e referencës, kopja jonë funksionon në frekuenca më të larta: domeni raster është 63 MHz më i lartë se ai nominal, dhe njësitë shader janë më të shpejta me 174 MHz dhe memoria është 100 MHz më e shpejtë.

Ne do të krahasojmë shpejtësinë e konvertimit të së njëjtës video HD kur llogaritim vetëm duke përdorur CPU dhe me aktivizimin shtesë të CUDA në programin TMPGEnc në konfigurimin e mëposhtëm:

  • Procesori: Pentium Dual-Core E5200 2.5 GHz;
  • Motherboard: Gigabyte P35-S3;
  • Kujtesa: 2x1 GB GoodRam PC6400 (5-5-5-18-2T)
  • Karta video: MSI NX8800GT-T2D256E-OC;
  • Hard drive: 320 GB WD3200AAKS;
  • Furnizimi me energji elektrike: CoolerMaster eXtreme Power 500-PCAP;
  • Sistemi operativ: Windows XP SP2;
  • TMPGEnc 4.0 XPress 4.6.3.268;
  • Drejtuesit e kartës video: ForceWare 180.60.
Për teste, procesori u mbingarkua në 3 GHz (në konfigurimin 11.5x261 MHz) dhe në 4 GHz (11.5x348 MHz) me një frekuencë RAM prej 835 MHz në rastin e parë dhe të dytë. Video me rezolucion Full HD 1920x1080, një minutë e njëzet sekonda e gjatë. Për të krijuar ngarkesë shtesë, u aktivizua një filtër për zvogëlimin e zhurmës, cilësimet e të cilit u lanë në parazgjedhje.


Kodimi u krye duke përdorur kodekun DivX 6.8.4. Në cilësimet e cilësisë së këtij kodiku, të gjitha vlerat lihen në parazgjedhje, aktivizohet multithreading.


Mbështetja multithreading në TMPGEnc fillimisht aktivizohet në skedën e cilësimeve të CPU/GPU. Në të njëjtin seksion aktivizohet edhe CUDA.


Siç mund ta shihni nga pamja e mësipërme, përpunimi i filtrit duke përdorur CUDA është i aktivizuar, por dekoderi i videos harduerike nuk është i aktivizuar. Dokumentacioni i programit paralajmëron se aktivizimi i parametrit të fundit rrit kohën e përpunimit të skedarit.

Bazuar në rezultatet e testeve, u morën të dhënat e mëposhtme:


Në 4 GHz me CUDA të aktivizuar, fituam vetëm disa sekonda (ose 2%), gjë që nuk është veçanërisht mbresëlënëse. Por në një frekuencë më të ulët, rritja nga aktivizimi i kësaj teknologjie ju lejon të kurseni rreth 13% të kohës, gjë që do të jetë mjaft e dukshme kur përpunoni skedarë të mëdhenj. Por ende rezultatet nuk janë aq mbresëlënëse sa pritej.

Programi TMPGEnc ka një tregues të ngarkesës së CPU dhe CUDA; në këtë konfigurim provë, ai tregoi ngarkesën e CPU-së në rreth 20%, dhe bërthamën grafike në pjesën e mbetur prej 80%. Si rezultat, ne kemi të njëjtin 100% si kur konvertojmë pa CUDA, dhe mund të mos ketë fare diferencë kohore (por ende ekziston). Kapaciteti i vogël i memories prej 256 MB gjithashtu nuk është një faktor kufizues. Duke gjykuar nga leximet nga RivaTuner, gjatë funksionimit u përdor jo më shumë se 154 MB memorie video.



konkluzionet

Programi TMPGEnc është një nga ata që prezanton teknologjinë CUDA tek masat. Përdorimi i GPU-së në këtë program ju lejon të shpejtoni procesin e përpunimit të videos dhe të lehtësoni ndjeshëm procesorin qendror, i cili do t'i lejojë përdoruesit të kryejë me lehtësi detyra të tjera në të njëjtën kohë. Në shembullin tonë specifik, karta video GeForce 8800GT 256MB përmirësoi pak performancën e kohës kur konverton videon bazuar në një procesor Pentium Dual-Core E5200 të mbingarkuar. Por është qartë e dukshme se me zvogëlimin e frekuencës, fitimi nga aktivizimi i CUDA rritet; në procesorët e dobët, fitimi nga përdorimi i tij do të jetë shumë më i madh. Në sfondin e kësaj varësie, është mjaft logjike të supozohet se edhe me një rritje të ngarkesës (për shembull, përdorimi i një numri shumë të madh të filtrave shtesë video), rezultatet e një sistemi me CUDA do të dallohen nga një delta e rëndësishme e diferencës në kohën e kaluar në procesin e kodimit. Gjithashtu, mos harroni se G92 nuk është çipi më i fuqishëm për momentin, dhe kartat video më moderne do të ofrojnë performancë dukshëm më të lartë në aplikacione të tilla. Megjithatë, ndërsa aplikacioni është duke u ekzekutuar, GPU nuk është plotësisht i ngarkuar dhe, me siguri, shpërndarja e ngarkesës varet nga secili konfigurim veç e veç, përkatësisht nga kombinimi i procesorit/kartës video, i cili në fund mund të japë një rritje më të madhe (ose më të vogël) si përqindje i aktivizimit të CUDA. Në çdo rast, për ata që punojnë me vëllime të mëdha të të dhënave video, kjo teknologji do t'i lejojë ata të kursejnë ndjeshëm kohën e tyre.

Vërtetë, CUDA nuk ka fituar ende një popullaritet të gjerë; cilësia e softuerit që punon me këtë teknologji kërkon përmirësim. Në programin TMPGEnc 4.0 XPress që shqyrtuam, kjo teknologji nuk funksiononte gjithmonë. E njëjta video mund të rikodohej disa herë, dhe më pas papritur, herën tjetër kur u lëshua, ngarkesa CUDA ishte tashmë 0%. Dhe ky fenomen ishte krejtësisht i rastësishëm në sisteme operative krejtësisht të ndryshme. Gjithashtu, programi në fjalë refuzoi të përdorte CUDA gjatë kodimit në formatin XviD, por nuk kishte probleme me kodekun popullor DivX.

Si rezultat, deri më tani teknologjia CUDA mund të rrisë ndjeshëm performancën e kompjuterëve personalë vetëm në detyra të caktuara. Por fushëveprimi i aplikimit të një teknologjie të tillë do të zgjerohet, dhe procesi i rritjes së numrit të bërthamave në procesorët konvencionalë tregon një rritje të kërkesës për llogaritje paralele me shumë fije në aplikacionet moderne të softuerit. Jo më kot kohët e fundit të gjithë drejtuesit e industrisë janë fiksuar me idenë e kombinimit të CPU-së dhe GPU-së brenda një arkitekture të unifikuar (vetëm mbani mend AMD Fusion shumë të reklamuar). Ndoshta CUDA është një nga fazat e procesit të këtij bashkimi.


Falenderojmë kompanitë e mëposhtme për sigurimin e pajisjeve të testimit:

– një grup ndërfaqesh softuerësh të nivelit të ulët ( API) për krijimin e lojërave dhe aplikacioneve të tjera multimediale me performancë të lartë. Përfshin mbështetje me performancë të lartë 2D- Dhe 3D-pajisjet grafike, zëri dhe hyrëse.

Direct3D (D3D) – ndërfaqe për shfaqjen tredimensionale primitivëve(trupat gjeometrikë). Të përfshira në .

OpenGL(nga anglishtja Hapni Bibliotekën e Grafikës, fjalë për fjalë - bibliotekë grafike e hapur) është një specifikim që përcakton një ndërfaqe programimi ndër-platformë të pavarur nga gjuha programuese për shkrimin e aplikacioneve duke përdorur grafikë kompjuterike dy-dimensionale dhe tredimensionale. Përfshin mbi 250 funksione për vizatimin e skenave komplekse 3D nga primitivë të thjeshtë. Përdoret për të krijuar video lojëra, realitet virtual dhe vizualizim në kërkimin shkencor. Në platformë Dritaret konkurron me .

OpenCL(nga anglishtja Hapni gjuhën kompjuterike, fjalë për fjalë - një gjuhë e hapur e llogaritjeve) - kornizë(korniza e sistemit softuer) për shkrimin e programeve kompjuterike që lidhen me llogaritjen paralele në grafika të ndryshme ( GPU) Dhe ( ). Tek korniza OpenCL përfshin një gjuhë programimi dhe ndërfaqe programimi aplikacioni ( API). OpenCL siguron paralelizëm në nivel instruksioni dhe në nivel të dhënash dhe është zbatim i teknikës GPGPU.

GPGPU(shkurtuar nga anglishtja) Përgjithshme-P qëllim G raphics P përpunimit U nits, fjalë për fjalë - GPU qëllimi i përgjithshëm) është një teknikë për përdorimin e një njësie të përpunimit grafik (GPU) ose kartës video për llogaritjen e përgjithshme që kryhet zakonisht nga një kompjuter.

Shader(anglisht) hijezues) – një program për ndërtimin e hijeve në imazhe të sintetizuara, i përdorur në grafikë tredimensionale për të përcaktuar parametrat përfundimtarë të një objekti ose imazhi. Në mënyrë tipike përfshin përshkrime arbitrare komplekse të përthithjes dhe shpërndarjes së dritës, hartës së teksturës, reflektimit dhe thyerjes, hijezimit, zhvendosjes së sipërfaqes dhe efekteve pas përpunimit. Sipërfaqet komplekse mund të vizualizohen duke përdorur forma të thjeshta gjeometrike.

Rendering(anglisht) pasqyrimi) – vizualizimi, në grafikë kompjuterike, procesi i marrjes së një imazhi nga një model duke përdorur softuer.

SDK(shkurtuar nga anglishtja) Kompleti i zhvillimit të softuerit) – një grup mjetesh për zhvillimin e softuerit.

CPU(shkurtuar nga anglishtja) Njësia Qendrore përpunimit, fjalë për fjalë – pajisje kompjuterike qendrore/kryesore/kryesore) – qendrore (mikro);një pajisje që ekzekuton udhëzimet e makinës; një pjesë e harduerit përgjegjës për kryerjen e operacioneve llogaritëse (të specifikuara nga sistemi operativ dhe softueri i aplikacionit) dhe koordinimi i funksionimit të të gjitha pajisjeve.

GPU(shkurtuar nga anglishtja) Njësia e përpunimit grafik, fjalë për fjalë – pajisje kompjuterike grafike) – procesor grafik; një pajisje e veçantë ose konsol lojërash që kryen interpretimin (vizualizimin) grafik. GPU-të moderne janë shumë efikase në përpunimin dhe shfaqjen e grafikëve kompjuterikë në një mënyrë realiste. Procesori grafik në adaptorët modernë video përdoret si një përshpejtues grafik 3D, por në disa raste mund të përdoret edhe për llogaritje ( GPGPU).

Problemet CPU

Për një kohë të gjatë, rritja e performancës së atyre tradicionale ndodhi kryesisht për shkak të një rritje të vazhdueshme të frekuencës së orës (rreth 80% e performancës u përcaktua nga frekuenca e orës) me një rritje të njëkohshme të numrit të transistorëve në një çip. . Megjithatë, një rritje e mëtejshme e frekuencës së orës (në një frekuencë të orës më shumë se 3.8 GHz, çipat thjesht mbinxehen!) ndeshet me një sërë pengesash themelore fizike (pasi procesi teknologjik pothuajse i është afruar madhësisë së një atomi: , dhe madhësia e një atomi silikoni është afërsisht 0,543 nm):

Së pari, ndërsa madhësia e kristalit zvogëlohet dhe frekuenca e orës rritet, rryma e rrjedhjes së transistorëve rritet. Kjo çon në rritjen e konsumit të energjisë dhe rritjen e emetimeve të nxehtësisë;

Së dyti, përfitimet e shpejtësive më të larta të orës mohohen pjesërisht nga vonesa e aksesit në memorie, pasi koha e hyrjes në kujtesë nuk shkon me rritjen e shpejtësisë së orës;

Së treti, për disa aplikacione, arkitekturat serike tradicionale bëhen joefikase ndërsa shpejtësia e orës rritet për shkak të të ashtuquajturës "ngërçe von Neumann", një kufizim i performancës që rezulton nga rrjedha sekuenciale e llogaritjes. Në të njëjtën kohë, vonesat e transmetimit të sinjalit rezistent-kapacitiv rriten, gjë që është një pengesë shtesë e lidhur me një rritje të frekuencës së orës.

Zhvillimi GPU

Paralelisht me këtë, pati (dhe ka!) zhvillim GPU:

Nëntor 2008 – Intel prezantoi një linjë me 4 bërthama Intel Core i7, të cilat bazohen në një mikroarkitekturë të gjeneratës së re Nehalem. Procesorët funksionojnë në një frekuencë orësh prej 2.6-3.2 GHz. Bërë duke përdorur një teknologji procesi 45 nm.

Dhjetor 2008 - filluan dërgesat e 4 bërthamave AMD Phenom II 940(emri i kodit - Deneb). Funksionon në një frekuencë prej 3 GHz, e prodhuar duke përdorur një teknologji procesi 45 nm.

Maj 2009 - kompani AMD prezantoi versionin GPU ATI Radeon HD 4890 me shpejtësinë e orës bazë të rritur nga 850 MHz në 1 GHz. Kjo është e para grafike procesor që funksionon në 1 GHz. Fuqia llogaritëse e çipit, falë rritjes së frekuencës, u rrit nga 1.36 në 1.6 teraflops. Procesori përmban 800 (!) bërthama kompjuterike dhe mbështet memorien video GDDR5, DirectX 10.1, ATI CrossFireX dhe të gjitha teknologjitë e tjera të natyrshme në modelet moderne të kartave video. Çipi është prodhuar në bazë të teknologjisë 55 nm.

Dallimet kryesore GPU

Karakteristikat dalluese GPU(krahasuar me ) janë:

– një arkitekturë që synon maksimalisht në rritjen e shpejtësisë së llogaritjes së teksturave dhe objekteve grafike komplekse;

– tipike e fuqisë maksimale GPU shumë më e lartë se kaq ;

– falë një arkitekture të specializuar transportieri, GPU shumë më efikas në përpunimin e informacionit grafik sesa .

"Kriza e zhanrit"

“Kriza e zhanrit” për pjekur deri në vitin 2005 - atëherë u shfaqën. Por, pavarësisht nga zhvillimi i teknologjisë, rritja e produktivitetit të konvencionale u ul ndjeshëm. Në të njëjtën kohë performanca GPU vazhdon të rritet. Pra, në vitin 2003, kjo ide revolucionare u kristalizua - përdorni fuqinë kompjuterike të grafikës për nevojat tuaja. GPU-të janë përdorur gjithnjë e më shumë për informatikë "jografike" (simulimi i fizikës, përpunimi i sinjalit, matematika/gjeometria llogaritëse, operacionet e bazës së të dhënave, biologjia llogaritëse, ekonomia kompjuterike, vizioni kompjuterik, etj.).

Problemi kryesor ishte se nuk kishte një ndërfaqe standarde programimi GPU. Zhvilluesit përdorën OpenGL ose Direct3D, por ishte shumë i përshtatshëm. Korporata NVIDIA(një nga prodhuesit më të mëdhenj të procesorëve grafikë, media dhe komunikimi, si dhe procesorë të mediave me valë; themeluar në 1993) filloi të zhvillonte një standard të unifikuar dhe të përshtatshëm - dhe prezantoi teknologjinë CUDA.

Si filloi

2006 – NVIDIA demonstron CUDA™; fillimi i një revolucioni në kompjuter GPU.

2007 – NVIDIA lëshon arkitekturën CUDA(versioni origjinal CUDA SDKështë dorëzuar më 15 shkurt 2007); nominimi "Produkti i ri më i mirë" nga revista Shkenca popullore dhe "Zgjedhja e lexuesve" nga botimi HPCWire.

2008 - teknologji NVIDIA CUDA fitoi kategorinë “Përsosmëri Teknike” nga PC Magazine.

Cfare ndodhi CUDA

CUDA(shkurtuar nga anglishtja) Llogaritni arkitekturën e unifikuar të pajisjes, fjalë për fjalë - arkitekturë e unifikuar informatike e pajisjeve) - arkitekturë (një grup softuerësh dhe harduerësh) që ju lejon të prodhoni në GPU llogaritjet për qëllime të përgjithshme, ndërsa GPU në fakt vepron si një bashkëprocesor i fuqishëm.

Teknologjia NVIDIA CUDA™është i vetmi mjedis zhvillimi në një gjuhë programimi C, i cili i lejon zhvilluesit të krijojnë softuer që zgjidh problemet komplekse kompjuterike në më pak kohë, falë fuqisë përpunuese të GPU-ve. Miliona njerëz tashmë janë duke punuar në botë GPU me mbështetjen CUDA, dhe mijëra programues tashmë po përdorin mjete (falas!). CUDA për të përshpejtuar aplikacionet dhe për të zgjidhur detyrat më komplekse, me burime intensive - nga kodimi video dhe audio deri te eksplorimi i naftës dhe gazit, modelimi i produkteve, imazhet mjekësore dhe kërkimi shkencor.

CUDA i jep zhvilluesit mundësinë, sipas gjykimit të tij, të organizojë aksesin në grupin e udhëzimeve të përshpejtuesit grafik dhe të menaxhojë kujtesën e tij, dhe të organizojë llogaritje komplekse paralele mbi të. Mbështetje për përshpejtuesin grafik CUDA bëhet një arkitekturë e hapur e fuqishme e programueshme, e ngjashme me atë të sotmen. E gjithë kjo i siguron zhvilluesit qasje të nivelit të ulët, të shpërndarë dhe me shpejtësi të lartë në pajisje, duke bërë CUDA një bazë e nevojshme për ndërtimin e mjeteve serioze të nivelit të lartë, si përpiluesit, korrigjuesit, bibliotekat matematikore dhe platformat softuerike.

Uralsky, specialist kryesor i teknologjisë NVIDIA, duke krahasuar GPU Dhe , thotë këtë: - Ky është një SUV. Ai vozit gjithmonë dhe kudo, por jo shumë shpejt. A GPU- Kjo është një makinë sportive. Në një rrugë të keqe, ai thjesht nuk do të shkojë askund, por do t'i japë një sipërfaqe të mirë dhe do të tregojë të gjithë shpejtësinë e tij, të cilën një SUV as nuk e ka ëndërruar kurrë!..."

Aftësitë e teknologjisë CUDA