GPU

Ievads par GPU programmēšanu

Ievads par GPU programmēšanu

GPU (grafikas procesora bloka) vispārēja lietojuma skaitļošana, kas labāk pazīstama kā GPU programmēšana, ir GPU izmantošana kopā ar CPU (centrālo procesoru), lai paātrinātu skaitļošanu lietojumprogrammās, kuras tradicionāli apstrādā tikai centrālais procesors.Lai gan GPU programmēšana ir bijusi praktiski dzīvotspējīga tikai pēdējās divās desmitgadēs, tās lietojumprogrammās tagad ietilpst praktiski visas nozares. Piemēram, GPU programmēšana ir izmantota, lai paātrinātu video, digitālo attēlu un audio signālu apstrādi, statistisko fiziku, zinātnisko skaitļošanu, medicīnisko attēlveidošanu, datora redzi, neironu tīklus un dziļu mācīšanos, kriptogrāfiju un pat ielaušanās noteikšanu daudzās citās jomās.

Šis raksts kalpo kā teorētisks ievads tiem, kas vēlas uzzināt, kā rakstīt GPU paātrinātas programmas, kā arī tiem, kuri ir tikai vispārīgi ieinteresēti šajā aizraujošajā tēmā.

Starpība starp GPU un CPU

Ilgi, pirms augstas izšķirtspējas, augstas precizitātes 3D grafika kļuva par normu, lielākajai daļai datoru nebija GPU. Tā vietā centrālais procesors izpildīja visas datorprogrammu instrukcijas, veicot aritmētiskās, loģiskās, vadības un ievades / izvades (I / O) pamatdarbības, kas norādītas instrukcijās. Šī iemesla dēļ CPU bieži raksturo kā datora smadzenes.

Bet pēdējos gados GPU, kas paredzēts, lai paātrinātu attēlu izveidi izvadīšanai uz displeja ierīci, bieži vien palīdz centrālajam procesoram atrisināt problēmas jomās, kuras iepriekš apstrādāja tikai CPU.

Grafikas karšu ražotājs Nvidia nodrošina vienkāršu veidu, kā saprast būtisko atšķirību starp GPU un CPU: “Procesors sastāv no dažiem serdeņiem, kas optimizēti secīgai sērijveida apstrādei, savukārt GPU ir masveidā paralēla arhitektūra, kas sastāv no tūkstošiem mazāku, efektīvāku kodoli, kas paredzēti vairāku uzdevumu vienlaicīgai apstrādei.”

Spēja vienlaikus apstrādāt vairākus uzdevumus padara GPU ļoti piemērotus dažiem uzdevumiem, piemēram, vārda meklēšanai dokumentā, savukārt citiem uzdevumiem, piemēram, Fibonacci secības aprēķināšanai, paralēlā apstrāde vispār nedod labumu.

Tomēr starp uzdevumiem, kas rada ievērojamu labumu no paralēlās apstrādes, ir dziļa mācīšanās, kas ir viena no mūsdienu visvairāk pieprasītajām prasmēm tehnikā. Dziļu mācību algoritmi atdarina darbību neokorteksa neironu slāņos, ļaujot mašīnām iemācīties saprast valodu, atpazīt modeļus vai komponēt mūziku.

Mākslīgā intelekta pieaugošās nozīmes dēļ pieprasījums pēc izstrādātājiem, kuri saprot GPU vispārējas nozīmes skaitļošanu, ir pieaudzis.

CUDA pret OpenCL pret OpenACC

Tā kā grafiskie procesori saprot skaitļošanas problēmas grafikas primitīvu izteiksmē, agri centieni izmantot GPU kā vispārējas nozīmes procesorus prasīja pārveidot skaitļošanas problēmas grafikas karšu valodā.

Par laimi, pateicoties GPU paātrinātai skaitļošanai, tagad ir daudz vieglāk, pateicoties paralēlām skaitļošanas platformām, piemēram, Nvidia CUDA, OpenCL vai OpenACC. Šīs platformas ļauj izstrādātājiem ignorēt valodas barjeru, kas pastāv starp CPU un GPU, un tā vietā koncentrējas uz augstāka līmeņa skaitļošanas koncepcijām.

CUDA

Sākotnēji Nvidia izlaida 2007. gadā, un šodien CUDA (Compute Unified Device Architecture) ir dominējošā patentētā sistēma. "Izmantojot CUDA, izstrādātāji var ievērojami paātrināt lietojumprogrammu skaitļošanu, izmantojot GPU jaudu," apraksta Nvidia ietvars.

Izstrādātāji var izsaukt CUDA no programmēšanas valodām, piemēram, C, C ++, Fortran vai Python, bez prasmēm grafikas programmēšanā. Turklāt Nvidia CUDA rīkkopa satur visu nepieciešamo, lai izstrādātāji varētu sākt veidot ar GPU paātrinātas lietojumprogrammas, kas ievērojami pārspēj viņu ar CPU saistītos kolēģus.

CUDA SDK ir pieejams Microsoft Windows, Linux un macOS. CUDA platforma atbalsta arī citas skaitļošanas saskarnes, tostarp OpenCL, Microsoft DirectCompute, OpenGL Compute Shaders un C ++ AMP.

OpenCL

Sākotnēji Khronos Group izlaida 2009. gadā, OpenCL ir vispopulārākais atklātais, bez atlīdzības standarts starpplatformu, paralēlai programmēšanai. Pēc Khronos grupas teiktā, “OpenCL ievērojami uzlabo plaša spektra lietojumprogrammu ātrumu un atsaucību daudzās tirgus kategorijās, ieskaitot spēļu un izklaides nosaukumus, zinātnisko un medicīnisko programmatūru, profesionālos radošos rīkus, redzes apstrādi un neironu tīkla apmācību un secinājumus.”

OpenCL līdz šim ir ieviesuši Altera, AMD, Apple, ARM, Creative, IBM, Imagination, Intel, Nvidia, Qualcomm, Samsung, Vivante, Xilinx un ZiiLABS, un tas atbalsta visas populārās operētājsistēmas visās galvenajās platformās, padarot to ārkārtīgi universāls. OpenCL definē C līdzīgu valodu programmu rakstīšanai, bet trešo pušu API pastāv citām programmēšanas valodām un platformām, piemēram, Python vai Java.

OpenACC

OpenACC ir jaunākais paralēlās skaitļošanas programmēšanas standarts, kas aprakstīts šajā rakstā. Sākotnēji to 2015. gadā izlaida uzņēmumu grupa, kurā ietilpst Cray, CAPS, Nvidia un PGI (Portland Group), lai vienkāršotu heterogēnu CPU / GPU sistēmu paralēlu programmēšanu.

“OpenACC ir lietotāja virzīts uz direktīvu balstīts veiktspējas pārnēsājams paralēlas programmēšanas modelis, kas izstrādāts zinātniekiem un inženieriem, kuri ir ieinteresēti pārnest savus kodus uz dažādām heterogēnām HPC aparatūras platformām un arhitektūrām ar ievērojami mazāku programmēšanas piepūli, nekā nepieciešams ar zemu līmeni. modeli.,”Norāda OpenACC savā oficiālajā vietnē.

Izstrādātāji, kurus interesē OpenACC, var anotēt C, C ++ un Fortran pirmkodu, lai GPU pateiktu, kuras jomas būtu jāpaātrina. Mērķis ir nodrošināt paātrinātāja programmēšanas modeli, kas ir pārnēsājams visās operētājsistēmās un dažāda veida resursdatoru procesoros un paātrinātājos.

Kuru man vajadzētu lietot?

Izvēle starp šīm trim paralēlajām skaitļošanas platformām ir atkarīga no jūsu mērķiem un vides, kurā strādājat. Piemēram, CUDA tiek plaši izmantots akadēmiskajā vidē, un tas tiek uzskatīts arī par visvieglāk apgūstamo. OpenCL ir neapšaubāmi visvairāk pārnēsājamā paralēlās skaitļošanas platforma, lai gan OpenCL rakstītās programmas joprojām ir jāoptimizē individuāli katrai mērķa platformai.

Uzziniet GPU kodēšanu vietnē LinuxHint.com

GPU programmēšana ar Python

GPU programmēšana ar C++

Papildu lasīšana

Lai iepazītos ar CUDA, iesakām izpildīt CUDA ātrās sākšanas rokasgrāmatas instrukcijas, kurās paskaidrots, kā CUDA palaist un darboties Linux, Windows un MacOS. AMD OpenCL programmēšanas rokasgrāmata sniedz fantastisku, padziļinātu pārskatu par OpenCL, taču tiek pieņemts, ka lasītājs ir iepazinies ar OpenCL specifikācijas pirmajām trim nodaļām. OpenACC piedāvā trīspakāpju ievadmācību, kas paredzēta, lai parādītu, kā izmantot GPU programmēšanas priekšrocības, un vairāk informācijas var atrast OpenACC specifikācijā.

Kā instalēt League of Legends operētājsistēmā Ubuntu 14.04
Ja jūs esat League of Legends fans, tad šī ir iespēja jums izmēģināt League of Legends. Ņemiet vērā, ka LOL tiek atbalstīts PlayOnLinux, ja esat Linux...
Instalējiet jaunāko OpenRA stratēģijas spēli Ubuntu Linux
OpenRA ir bezmaksas / bezmaksas reāllaika stratēģijas spēļu dzinējs, kas atjauno agrīnās Vestvudas spēles, piemēram, klasisko Command & Conquer: Red A...
Instalējiet jaunāko Dolphin emulatoru Gamecube un Wii operētājsistēmai Linux
Delfīnu emulators ļauj jums spēlēt izvēlētās Gamecube un Wii spēles Linux personālajos datoros (PC). Tā kā Dolphin Emulator ir brīvi pieejams un atvē...