GPU računalstvo: mitovi i stvarnost. Iskoristimo mogućnosti GPU-a za ubrzavanje dodavanja softvera. Paralelizam i nova NVIDIA Fermi arhitektura

💖 Sviđa li vam se? Podijelite vezu sa svojim prijateljima

Jednom sam imao priliku razgovarati na tržištu računala s tehničkim direktorom jedne od brojnih tvrtki koje prodaju prijenosna računala. Ovaj “specijalist” je s pjenom na ustima pokušao objasniti koja točno konfiguracija laptopa mi treba. Glavna poruka njegovog monologa bila je da je vrijeme središnjih procesorskih jedinica (CPU) prošlo te da sada sve aplikacije aktivno koriste izračune na grafičkom procesoru (GPU), pa stoga performanse prijenosnog računala u potpunosti ovise o GPU-u, a vi ne morate obraćati pozornost na CPU pozornost. Shvativši da je svađa i pokušaj urazumljivanja s tim tehničkim direktorom apsolutno besmislen, nisam gubio vrijeme i kupio sam potreban laptop u drugom paviljonu. Međutim, sama činjenica takve očigledne nesposobnosti prodavača pogodila me. Bilo bi razumljivo da je pokušavao prevariti mene kao kupca. Nikako. Iskreno je vjerovao u ono što je rekao. Da, očito marketinški stručnjaci iz NVIDIA-e i AMD-a s razlogom jedu svoj kruh te su nekim korisnicima uspjeli usaditi ideju o dominantnoj ulozi grafičkog procesora u modernom računalu.

Činjenica da grafička procesorska jedinica (GPU) danas postaje sve popularnija je nedvojbena. Međutim, to nimalo ne umanjuje ulogu središnjeg procesora. Štoviše, ako govorimo o velikoj većini korisničkih aplikacija, danas njihova izvedba u potpunosti ovisi o performansama procesora. To jest, velika većina korisničkih aplikacija ne koristi GPU računalstvo.

Općenito, GPU računalstvo se uglavnom izvodi na specijaliziranim HPC sustavima za znanstveno računalstvo. Ali korisničke aplikacije koje koriste GPU računalstvo mogu se nabrojati na prste jedne ruke. Treba odmah napomenuti da izraz "GPU računalstvo" u ovom slučaju nije sasvim točan i može dovesti u zabludu. Činjenica je da ako aplikacija koristi GPU računalstvo, to ne znači da središnji procesor miruje. GPU računalstvo ne uključuje prijenos opterećenja sa središnjeg procesora na grafički procesor. Središnji procesor u pravilu ostaje zauzet, a korištenje grafičkog procesora uz središnji procesor može poboljšati performanse, odnosno smanjiti vrijeme potrebno za izvršenje zadatka. Štoviše, sam GPU ovdje djeluje kao neka vrsta koprocesora za CPU, ali ga ni u kojem slučaju ne zamjenjuje u potpunosti.

Da bismo razumjeli zašto GPU računalstvo nije lijek za sve i zašto je netočno reći da su njegove računalne mogućnosti superiornije od CPU-a, potrebno je razumjeti razliku između središnjeg procesora i grafičkog procesora.

Razlike u GPU i CPU arhitekturi

CPU jezgre dizajnirane su za izvođenje jednog toka sekvencijalnih instrukcija s maksimalnom izvedbom, dok su GPU jezgre dizajnirane za brzo izvršavanje vrlo velikog broja paralelnih tokova instrukcija. Ovo je temeljna razlika između GPU-a i središnjih procesora. CPU je procesor opće namjene ili opće namjene optimiziran za postizanje visoke performanse jedan tok naredbi koji obrađuje i cijele brojeve i brojeve s pomičnim zarezom. U ovom slučaju pristup memoriji s podacima i uputama događa se pretežno nasumično.

Kako bi se poboljšala izvedba CPU-a, dizajnirani su za paralelno izvršavanje što je više moguće instrukcija. Na primjer, u tu svrhu procesorske jezgre koriste jedinicu za izvršavanje instrukcija izvan redoslijeda, koja omogućuje promjenu redoslijeda instrukcija izvan redoslijeda kojim su primljene, što omogućuje povećanje razine paralelizma u implementacija instrukcija na razini jedne niti. Međutim, to još uvijek ne dopušta paralelno izvođenje velikog broja instrukcija, a troškovi paraleliziranja instrukcija unutar jezgre procesora ispadaju vrlo značajni. Zbog toga procesori opće namjene nemaju jako velik broj izvršnih jedinica.

Grafički procesor je bitno drugačije dizajniran. Izvorno je dizajniran za pokretanje velikog broja paralelnih tokova naredbi. Štoviše, ti su tokovi naredbi paralelizirani od samog početka i jednostavno nema dodatnih troškova za paraleliziranje instrukcija u GPU-u. GPU je dizajniran za renderiranje slika. Jednostavno rečeno, uzima grupu poligona kao ulaz, provodi sve potrebne operacije i proizvodi piksele kao izlaz. Obrada poligona i piksela je neovisna; mogu se obrađivati ​​paralelno, odvojeno jedan od drugog. Stoga, zbog inherentno paralelne organizacije rada, GPU koristi veliki broj izvršnih jedinica, koje se lako učitavaju, za razliku od sekvencijalnog toka instrukcija za CPU.

Grafički i središnji procesori razlikuju se i po principima pristupa memoriji. U GPU-u, pristup memoriji je lako predvidljiv: ako se teksel teksture čita iz memorije, tada će nakon nekog vremena doći rok za susjedne teksele. Prilikom snimanja događa se ista stvar: ako je piksel zapisan u međuspremnik okvira, tada će se nakon nekoliko ciklusa takta zapisati piksel koji se nalazi pored njega. Stoga GPU, za razliku od CPU-a, jednostavno ne treba veliku predmemoriju, a teksture zahtijevaju samo nekoliko kilobajta. Načelo rada s memorijom također je različito za GPU i CPU. Dakle, svi moderni GPU-i imaju nekoliko memorijskih kontrolera, a sama grafička memorija je brža, pa GPU-ovi imaju mnogo više O veća propusnost memorije u usporedbi s univerzalnim procesorima, što je također vrlo važno za paralelne izračune koji rade s velikim tokovima podataka.

U univerzalnim procesorima O Najveći dio površine čipa zauzimaju različiti međuspremnici naredbi i podataka, jedinice za dekodiranje, jedinice za predviđanje grananja hardvera, jedinice za preuređivanje instrukcija i predmemorija prve, druge i treće razine. Sve te hardverske jedinice potrebne su za ubrzavanje izvršavanja nekoliko niti naredbi njihovim paraleliziranjem na razini jezgre procesora.

Same izvršne jedinice zauzimaju relativno malo prostora u univerzalnom procesoru.

U grafičkom procesoru, naprotiv, glavno područje zauzimaju brojne izvršne jedinice, što mu omogućuje da istovremeno obrađuje nekoliko tisuća naredbenih niti.

Možemo reći da su, za razliku od modernih CPU-a, GPU-i dizajnirani za paralelne izračune s velikim brojem aritmetičkih operacija.

Moguće je koristiti računalnu snagu GPU-a za negrafičke zadatke, ali samo ako problem koji se rješava dopušta mogućnost paraleliziranja algoritama preko stotina izvršnih jedinica dostupnih u GPU-u. Konkretno, GPU izračuni pokazuju izvrsne rezultate kada se isti slijed matematičkih operacija primjenjuje na veliku količinu podataka. U tom se slučaju najbolji rezultati postižu ako je omjer broja aritmetičkih instrukcija prema broju pristupa memoriji dovoljno velik. Ova operacija postavlja manje zahtjeve za kontrolu izvršenja i ne zahtijeva upotrebu velike predmemorije.

Postoje mnogi primjeri znanstvenih izračuna u kojima je prednost GPU-a nad CPU-om u smislu računalne učinkovitosti neporeciva. Stoga su mnoge znanstvene primjene u molekularnom modeliranju, dinamici plina, dinamici fluida i drugima savršeno prikladne za izračune na GPU-u.

Dakle, ako se algoritam za rješavanje problema može paralelizirati u tisuće pojedinačnih niti, tada učinkovitost rješavanja takvog problema pomoću GPU-a može biti veća od rješavanja pomoću samo procesora opće namjene. Međutim, ne možete tako lako prenijeti rješenje nekog problema s CPU-a na GPU, makar samo zato što CPU i GPU koriste različite naredbe. Odnosno, kada je program napisan za rješenje na CPU-u, koristi se x86 skup naredbi (ili skup naredbi kompatibilan s određenom arhitekturom procesora), ali za GPU se koriste potpuno različiti skupovi naredbi, koji opet uzimaju u obzir uzeti u obzir njegovu arhitekturu i mogućnosti. Pri razvoju modernih 3D igara koriste se API-ji DirectX i OpenGL koji programerima omogućuju rad s shaderima i teksturama. Međutim, korištenje DirectX i OpenGL API-ja za negrafičko računalstvo na GPU-u nije najbolja opcija.

NVIDIA CUDA i AMD APP

Zato je, kada su počeli prvi pokušaji implementacije negrafičkog računalstva na GPU (GPU opće namjene, GPGPU), nastao BrookGPU kompajler. Prije njegove izrade, programeri su morali pristupiti resursima video kartice preko OpenGL ili Direct3D grafičkog API-ja, što je znatno kompliciralo proces programiranja, jer je zahtijevalo specifično znanje - morali su naučiti principe rada s 3D objektima (shaderi, teksture itd.). ). To je bio razlog za vrlo ograničenu upotrebu GPGPU-a u softverskim proizvodima. BrookGPU je postao neka vrsta "prevoditelja". Ove streaming ekstenzije na C jezik sakrile su 3D API od programera, a pri korištenju je praktički nestala potreba za znanjem 3D programiranja. Računalna snaga video kartica postala je dostupna programerima u obliku dodatnog koprocesora za paralelna izračunavanja. BrookGPU kompajler obradio je datoteku s C kodom i ekstenzijama, izgradivši kod povezan s bibliotekom s DirectX ili OpenGL podrškom.

Zahvaljujući velikim dijelom BrookGPU-u, NVIDIA i ATI (sada AMD) primijetili su nadolazeću tehnologiju računalstva opće namjene na GPU-ima i počeli razvijati vlastite implementacije koje pružaju izravan i transparentniji pristup računalnim jedinicama 3D akceleratora.

Kao rezultat toga, NVIDIA je razvila hardversku i softversku arhitekturu za paralelno računalstvo, CUDA (Compute Unified Device Architecture). CUDA arhitektura omogućuje ne-grafičko računalstvo na NVIDIA GPU-ovima.

Izdanje javne beta verzije CUDA SDK dogodilo se u veljači 2007. CUDA API temelji se na pojednostavljenom dijalektu C jezika. CUDA SDK arhitektura omogućuje programerima implementaciju algoritama koji se pokreću na NVIDIA GPU-ovima i uključuju posebne funkcije u tekstu C programa. Za uspješno prevođenje koda na ovaj jezik, CUDA SDK uključuje vlastiti Sycompiler naredbeni redak nvcc tvrtke NVIDIA.

CUDA je višeplatformska softver za operativne sustave kao što su Linux, Mac OS X i Windows.

AMD (ATI) je također razvio vlastitu verziju GPGPU tehnologije, koja se prethodno zvala ATI Stream, a sada AMD Accelerated Parallel Processing (APP). AMD APP temelji se na otvorenom industrijskom standardu OpenCL (Open Computing Language). OpenCL standard pruža paralelizam na razini instrukcija i na razini podataka te je implementacija tehnike GPGPU. To je potpuno otvoreni standard i korištenje je besplatno. Imajte na umu da su AMD APP i NVIDIA CUDA međusobno nekompatibilni, Najnovija verzija NVIDIA CUDA također podržava OpenCL.

Testiranje GPGPU-a u video pretvaračima

Dakle, saznali smo da se CUDA tehnologija koristi za implementaciju GPGPU na NVIDIA GPU, a APP API se koristi na AMD GPU. Kao što je već navedeno, korištenje ne-grafičkog računalstva na GPU-u preporučljivo je samo ako se problem koji se rješava može paralelizirati u mnogo niti. Međutim, većina korisničkih aplikacija ne zadovoljava ovaj kriterij. Međutim, postoje neke iznimke. Na primjer, većina modernih video pretvarača podržava mogućnost korištenja računalstva na NVIDIA i AMD GPU-ovima.

Kako bismo saznali koliko se učinkovito koristi GPU računalstvo u prilagođenim video pretvaračima, odabrali smo tri popularna rješenja: Xilisoft Video Converter Ultimate 7.7.2, Wondershare Video Converter Ultimate 6.0.3.2 i Movavi Video Converter 10.2.1. Ovi pretvarači podržavaju mogućnost korištenja NVIDIA i AMD GPU-a, a ovu značajku možete onemogućiti u postavkama video pretvarača, što vam omogućuje procjenu učinkovitosti korištenja GPU-a.

Za video konverziju koristili smo tri različita videa.

Prvi video trajao je 3 minute i 35 sekundi i imao je 1,05 GB. Snimljen je u mkv formatu za pohranu podataka (kontejner) i imao je sljedeće karakteristike:

  • video:
    • format - MPEG4 Video (H264),
    • rezolucija - 1920*um*1080,
    • način brzine prijenosa - promjenjiv,
    • prosječni video bitrate - 42,1 Mbit/s,
    • maksimalni video bitrate - 59,1 Mbit/s,
    • brzina kadra - 25 fps;
  • audio:
    • format - MPEG-1 Audio,
    • audio bitrate - 128 Kbps,
    • broj kanala - 2,

Drugi video je trajao 4 minute 25 sekundi i bio je veličine 1,98 GB. Snimljen je u MPG formatu za pohranu podataka (kontejner) i imao je sljedeće karakteristike:

  • video:
    • format - MPEG-PS (MPEG2 Video),
    • rezolucija - 1920*um*1080,
    • bitrate mod - promjenjiv.
    • prosječni video bitrate - 62,5 Mbit/s,
    • maksimalni video bitrate - 100 Mbit/s,
    • brzina kadra - 25 fps;
  • audio:
    • format - MPEG-1 Audio,
    • audio bitrate - 384 Kbps,
    • broj kanala - 2,

Treći video je trajao 3 minute 47 sekundi i bio je veličine 197 MB. Napisan je u MOV formatu za pohranu podataka (kontejner) i imao je sljedeće karakteristike:

  • video:
    • format - MPEG4 Video (H264),
    • rezolucija - 1920*um*1080,
    • način brzine prijenosa - promjenjiv,
    • video bitrate - 7024 Kbps,
    • brzina kadra - 25 fps;
  • audio:
    • format - AAC,
    • audio bitrate - 256 Kbps,
    • broj kanala - 2,
    • frekvencija uzorkovanja - 48 kHz.

Sva tri testna videozapisa pretvorena su pomoću video pretvarača u MP4 format za pohranu podataka (H.264 kodek) za gledanje na iPad tablet 2. Razlučivost izlazne video datoteke bila je 1280*um*720.

Imajte na umu da nismo koristili potpuno iste postavke pretvorbe u sva tri pretvornika. Zbog toga je netočno uspoređivati ​​učinkovitost samih video pretvarača na temelju vremena pretvorbe. Tako je u video konverteru Xilisoft Video Converter Ultimate 7.7.2 za konverziju korištena iPad 2 predset - H.264 HD Video. Ova unaprijed postavljena postava koristi sljedeće postavke kodiranja:

  • kodek - MPEG4 (H.264);
  • razlučivost - 1280*um*720;
  • brzina kadra - 29,97 fps;
  • video bitrate - 5210 Kbps;
  • audio kodek - AAC;
  • audio bitrate - 128 Kbps;
  • broj kanala - 2;
  • frekvencija uzorkovanja - 48 kHz.

Wondershare Video Converter Ultimate 6.0.3.2 koristio je iPad 2 unaprijed postavljene postavke sa sljedećim dodatnim postavkama:

  • kodek - MPEG4 (H.264);
  • razlučivost - 1280*um*720;
  • brzina kadra - 30 fps;
  • video bitrate - 5000 Kbps;
  • audio kodek - AAC;
  • audio bitrate - 128 Kbps;
  • broj kanala - 2;
  • frekvencija uzorkovanja - 48 kHz.

Movavi Video Converter 10.2.1 koristio je iPad unaprijed postavljenu postavku (1280*um*720, H.264) (*.mp4) sa sljedećim dodatnim postavkama:

  • video format - H.264;
  • razlučivost - 1280*um*720;
  • brzina kadra - 30 fps;
  • video bitrate - 2500 Kbps;
  • audio kodek - AAC;
  • audio bitrate - 128 Kbps;
  • broj kanala - 2;
  • frekvencija uzorkovanja - 44,1 kHz.

Svaki izvorni video konvertiran je pet puta na svakom od video pretvarača, koristeći i GPU i samo CPU. Nakon svake konverzije, računalo se ponovno pokreće.

Kao rezultat toga, svaki je videozapis pretvoren deset puta u svakom video pretvaraču. Da biste ovo automatizirali rutinski rad Je napisano posebna korisnost S grafičko sučelje, što vam omogućuje potpunu automatizaciju procesa testiranja.

Konfiguracija ispitnog postolja

Stalak za ispitivanje imao je sljedeću konfiguraciju:

  • procesor - Intel Core i7-3770K;
  • matična ploča- Gigabyte GA-Z77X-UD5H;
  • skup čipova matična ploča- Intel Z77 Express;
  • memorija - DDR3-1600;
  • kapacitet memorije - 8 GB (dva GEIL modula od po 4 GB);
  • način rada memorije - dvokanalni;
  • video kartica - NVIDIA GeForce GTX 660Ti (video upravljački program 314.07);
  • disk - Intel SSD 520 (240 GB).

Na štandu je instaliran operativni sustav Windows 7 Ultimate (64-bit).

U početku smo testirali procesor i sve ostale komponente sustava u normalnom načinu rada. Istovremeno je procesor Intel Core i7-3770K radio na standardnoj frekvenciji od 3,5 GHz s aktiviranim Turbo Boost načinom rada (maksimalna frekvencija procesora u Turbo Boost načinu rada je 3,9 GHz).

Potom smo ponovili postupak testiranja, ali s overklokiranim procesorom na fiksnu frekvenciju od 4,5 GHz (bez korištenja Turbo Boost moda). To je omogućilo prepoznavanje ovisnosti brzine pretvorbe o frekvenciji procesora (CPU).

U sljedećoj fazi testiranja vratili smo se na standardne postavke procesora i ponovili testiranje s drugim video karticama:

  • NVIDIA GeForce GTX 280 (driver 314.07);
  • NVIDIA GeForce GTX 460 (driver 314.07);
  • AMD Radeon HD6850 (upravljački program 13.1).

Dakle, video konverzija je provedena na četiri video kartice različitih arhitektura.

Starija NVIDIA GeForce 660Ti video kartica temelji se na istoimenom grafičkom procesoru, kodiranom GK104 (Kepler arhitektura), proizvedenom 28 nm procesnom tehnologijom. Ovaj GPU sadrži 3,54 milijarde tranzistora, a površina kristala je 294 mm2.

Podsjetimo se da GK104 GPU uključuje četiri klastera grafička obrada(Graphics Processing Clusters, GPC). GPC klasteri su neovisni uređaji unutar procesora i sposobni su raditi kao zasebni uređaji, budući da imaju sve potrebne resurse: rasterizere, geometrijske motore i teksturne module.

Svaki takav klaster ima dva SMX (Streaming Multiprocessor) multiprocesora, ali je kod GK104 procesora jedan multiprocesor blokiran u jednom od klastera, tako da ukupno ima sedam SMX multiprocesora.

Svaki SMX streaming multiprocesor sadrži 192 streaming compute jezgre (CUDA jezgre), tako da GK104 procesor ima ukupno 1344 CUDA jezgre. Osim toga, svaki SMX multiprocesor sadrži 16 teksturnih jedinica (TMU), 32 posebne funkcionalne jedinice (SFU), 32 jedinice za pohranu učitavanja (LSU), PolyMorph motor i još mnogo toga.

GeForce GTX 460 temelji se na GPU kodiranom GF104 baziranom na Fermi arhitekturi. Ovaj procesor proizveden je 40nm procesnom tehnologijom i sadrži oko 1,95 milijardi tranzistora.

GF104 GPU uključuje dva GPC klastera za obradu grafike. Svaki od njih ima po četiri SM streaming multiprocesora, ali kod GF104 procesora u jednom od klastera jedan multiprocesor je zaključan, pa postoji samo sedam SM multiprocesora.

Svaki SM streaming multiprocesor sadrži 48 streaming compute jezgri (CUDA jezgri), tako da GK104 procesor ima ukupno 336 CUDA jezgri. Osim toga, svaki SM multiprocesor sadrži osam teksturnih jedinica (TMU), osam posebnih funkcijskih jedinica (SFU), 16 jedinica za pohranu učitavanja (LSU), PolyMorph motor i još mnogo toga.

GeForce GTX 280 GPU dio je druge generacije NVIDIA Unified GPU arhitekture i vrlo se razlikuje po arhitekturi od Fermija i Keplera.

GeForce GTX 280 GPU sastoji se od klastera za obradu tekstura (TPC), koji su, iako slični, vrlo različiti od GPC klastera za obradu grafike u arhitekturama Fermi i Kepler. U GeForce GTX 280 procesoru postoji ukupno deset takvih klastera. Svaki TPC klaster uključuje tri SM streaming multiprocesora i osam jedinica za uzorkovanje i filtriranje tekstura (TMU). Svaki multiprocesor se sastoji od osam stream procesora (SP). Multiprocesori također sadrže blokove za uzorkovanje i filtriranje podataka o teksturi, koji se koriste u grafici i nekim računalnim zadacima.

Tako u jednom TPC klasteru ima 24 stream procesora, au GeForce GTX 280 GPU-u već ih je 240.

Sažete karakteristike video kartica na NVIDIA GPU-ima korištenim u testiranju prikazane su u tablici.

Donja tablica ne uključuje AMD Radeon HD6850 video karticu, što je sasvim prirodno, jer Tehničke specifikacije teško je usporediti s NVIDIA video karticama. Stoga ćemo to razmotriti odvojeno.

AMD Radeon HD6850 GPU, kodnog naziva Barts, proizveden je korištenjem 40nm procesne tehnologije i sadrži 1,7 milijardi tranzistora.

Arhitektura procesora AMD Radeon HD6850 jedinstvena je arhitektura s nizom zajedničkih procesora za strujanje obrade više vrsta podataka.

Procesor AMD Radeon HD6850 sastoji se od 12 SIMD jezgri, od kojih svaka sadrži 16 superskalarnih stream procesorskih jedinica i četiri teksturne jedinice. Svaki superskalarni stream procesor sadrži pet stream procesora opće namjene. Dakle, ukupno AMD Radeon HD6850 GPU ima 12*um*16*um*5=960 univerzalnih stream procesora.

GPU frekvencija AMD Radeon HD6850 video kartice je 775 MHz, a efektivna GDDR5 memorijska frekvencija je 4000 MHz. Kapacitet memorije je 1024 MB.

Rezultati ispitivanja

Pa pogledajmo rezultate testa. Počnimo s prvim testom, kada se koristi NVIDIA GeForce GTX 660Ti video kartica i normalan način rada Intelov procesor Core i7-3770K.

Na sl. Slike 1-3 prikazuju rezultate pretvaranja triju testnih videozapisa pomoću triju pretvarača u načinima rada sa i bez GPU-a.

Kao što se može vidjeti iz rezultata testiranja, učinak korištenja GPU-a je očit. Za Xilisoft Video Converter Ultimate 7.7.2, kada se koristi GPU, vrijeme konverzije je smanjeno za 14, 9 odnosno 19% za prvi, drugi i treći video.

Za Wondershare Video Converter Ultimate 6.0.32 korištenje GPU-a smanjuje vrijeme konverzije za 10%, 13%, odnosno 23% za prvi, drugi i treći video.

Ali pretvarač koji ima najviše koristi od korištenja grafičkog procesora je Movavi Video Converter 10.2.1. Za prvi, drugi i treći video, smanjenje vremena pretvorbe je 64, 81 odnosno 41%.

Jasno je da korist od korištenja GPU-a ovisi o izvornom videu i postavkama video konverzije, što zapravo i pokazuju naši rezultati.

Sada da vidimo koliki će biti dobitak u vremenu pretvorbe pri overklokiranju Intel Core i7-3770K procesora na 4,5 GHz. Ako pretpostavimo da su u normalnom načinu rada sve procesorske jezgre učitane tijekom pretvorbe, au Turbo Boost načinu rada rade na frekvenciji od 3,7 GHz, tada povećanje frekvencije na 4,5 GHz odgovara frekvencijskom overkloku od 22%.

Na sl. 4-6 prikazuju rezultate pretvorbe tri testna videozapisa pri overklokiranju procesora u načinima rada s grafičkim procesorom i bez njega. U ovom slučaju, korištenje grafičkog procesora omogućuje dobitak u vremenu pretvorbe.

Za video konverter Xilisoft Video Converter Ultimate 7.7.2, kada se koristi GPU, vrijeme konverzije je smanjeno za 15, 9 odnosno 20% za prvi, drugi i treći video.

Za Wondershare Video Converter Ultimate 6.0.32 korištenje GPU-a može smanjiti vrijeme pretvorbe za 10, 10 odnosno 20% za prvi, drugi i treći video.

Za Movavi Video Converter 10.2.1 korištenje grafičkog procesora može smanjiti vrijeme konverzije za 59, 81 odnosno 40%.

Naravno, zanimljivo je vidjeti kako overclocking CPU-a može smanjiti vrijeme konverzije sa i bez GPU-a.

Na sl. Na slikama 7-9 prikazani su rezultati usporedbe vremena za pretvaranje videa bez korištenja grafičkog procesora u normalnom načinu rada procesora iu overclockiranom načinu rada. Budući da u ovom slučaju pretvorbu provodi samo CPU bez izračuna na GPU-u, očito je da povećanje frekvencije takta procesora dovodi do smanjenja vremena pretvorbe (povećanja brzine pretvorbe). Jednako je očito da bi smanjenje brzine pretvorbe trebalo biti približno jednako za sve testne videozapise. Tako se za video konverter Xilisoft Video Converter Ultimate 7.7.2 kod overkloka procesora vrijeme konverzije smanjuje za 9, 11 odnosno 9% za prvi, drugi i treći video. Za Wondershare Video Converter Ultimate 6.0.32 vrijeme pretvorbe smanjeno je za 9, 9 odnosno 10% za prvi, drugi i treći video. Pa, za video pretvarač Movavi Video Converter 10.2.1 vrijeme pretvorbe smanjeno je za 13, 12 odnosno 12%.

Dakle, kada se frekvencija procesora overclockira za 20%, vrijeme pretvorbe se smanjuje za približno 10%.

Usporedimo vrijeme za pretvaranje videa pomoću grafičkog procesora u normalnom načinu rada procesora i u načinu overklokiranja (Sl. 10-12).

Za video konverter Xilisoft Video Converter Ultimate 7.7.2, kod overclockiranja procesora, vrijeme konverzije se smanjuje za 10, 10 odnosno 9% za prvi, drugi i treći video. Za Wondershare Video Converter Ultimate 6.0.32 vrijeme pretvorbe smanjeno je za 9, 6 odnosno 5% za prvi, drugi i treći video. Pa, za video pretvarač Movavi Video Converter 10.2.1, vrijeme pretvorbe smanjeno je za 0,2, 10 odnosno 10%.

Kao što možete vidjeti, za pretvarače Xilisoft Video Converter Ultimate 7.7.2 i Wondershare Video Converter Ultimate 6.0.32, smanjenje vremena pretvorbe pri overklokiranju procesora približno je jednako i pri korištenju grafičkog procesora i bez njega, što je logično, budući da ovi pretvarači ne koriste vrlo učinkovito GPU računalstvo. Ali za Movavi Video Converter 10.2.1, koji učinkovito koristi GPU računalstvo, overklokiranje procesora u GPU načinu rada ima mali učinak na smanjenje vremena pretvorbe, što je također razumljivo, jer u ovom slučaju glavno opterećenje pada na grafički procesor. .

Sada pogledajmo rezultate testova s ​​različitim video karticama.

Čini se da što je grafička kartica moćnija i što je više CUDA jezgri (ili univerzalnih stream procesora za AMD video kartice) u grafičkom procesoru, to bi video pretvorba trebala biti učinkovitija pri korištenju grafičkog procesora. Ali u praksi to ne ispada baš tako.

Što se tiče video kartica temeljenih na NVIDIA GPU-u, situacija je sljedeća. Kada koristite Xilisoft Video Converter Ultimate 7.7.2 i Wondershare Video Converter Ultimate 6.0.32 konvertere, vrijeme konverzije praktički ni na koji način ne ovisi o vrsti video kartice koja se koristi. To je za NVIDIA video kartice GeForce GTX 660Ti, NVIDIA GeForce GTX 460 i NVIDIA GeForce GTX 280 u načinu korištenja GPU računalstva, vrijeme pretvorbe je isto (Sl. 13-15).

Riža. 1. Rezultati pretvorbe prvog
testirajte video u normalnom načinu rada
rad procesora

procesor na video karticama u GPU modu

Riža. 14. Rezultati usporedbe vremena pretvorbe drugog videa

Riža. 15. Rezultati usporedbe vremena pretvorbe trećeg videa
na raznim video karticama u GPU modu

To se može objasniti samo činjenicom da je algoritam izračuna GPU-a implementiran u pretvarače Xilisoft Video Converter Ultimate 7.7.2 i Wondershare Video Converter Ultimate 6.0.32 jednostavno neučinkovit i ne dopušta aktivnu upotrebu svih grafičkih jezgri. Usput, upravo to objašnjava činjenicu da je za ove pretvarače razlika u vremenu pretvorbe u načinima korištenja GPU-a i bez njega mala.

U Movavi Video Converter 10.2.1 situacija je malo drugačija. Kao što se sjećamo, ovaj pretvarač je sposoban vrlo učinkovito koristiti GPU izračune, pa stoga, u GPU načinu rada, vrijeme pretvorbe ovisi o vrsti korištene video kartice.

Ali s AMD Radeon HD 6850 video karticom sve je kao i obično. Ili je upravljački program video kartice "pokvaren" ili algoritme implementirane u pretvarače treba ozbiljno poboljšati, ali kada se koristi GPU računalstvo, rezultati se ili ne poboljšavaju ili se pogoršavaju.

Konkretnije, situacija je sljedeća. Za Xilisoft Video Converter Ultimate 7.7.2, kada se koristi GPU za pretvaranje prvog testnog videa, vrijeme konverzije se povećava za 43%, a kada se pretvara drugi video, za 66%.

Štoviše, Xilisoft Video Converter Ultimate 7.7.2 također karakteriziraju nestabilni rezultati. Varijacija u vremenu pretvorbe može doseći 40%! Zato smo sve testove ponovili deset puta i izračunali prosječni rezultat.

Ali za Wondershare Video Converter Ultimate 6.0.32 i Movavi Video Converter 10.2.1, kada koristite GPU za pretvaranje sva tri videa, vrijeme konverzije se uopće ne mijenja! Vjerojatno je da Wondershare Video Converter Ultimate 6.0.32 i Movavi Video Converter 10.2.1 ili ne koriste AMD APP tehnologiju prilikom pretvorbe ili je AMD video drajver jednostavno "kriv", zbog čega AMD APP tehnologija ne radi .

zaključke

Na temelju testiranja mogu se izvući sljedeći važni zaključci. Moderni video pretvarači zapravo mogu koristiti GPU računalnu tehnologiju, koja omogućuje veću brzinu pretvorbe. Međutim, to ne znači da se svi izračuni u potpunosti prenose na GPU, a CPU ostaje neiskorišten. Kao što testiranje pokazuje, kada se koristi GPGPU tehnologija, središnji procesor ostaje zauzet, što znači da je upotreba snažnih, višejezgrenih središnjih procesora u sustavima koji se koriste za video konverziju i dalje relevantna. Iznimka od ovog pravila je AMD APP tehnologija na AMD GPU-u. Na primjer, kada koristite Xilisoft Video Converter Ultimate 7.7.2 s aktiviranom AMD APP tehnologijom, opterećenje CPU-a je doista smanjeno, ali to dovodi do činjenice da se vrijeme pretvorbe ne smanjuje, već se, naprotiv, povećava.

Općenito, ako govorimo o pretvaranju videa uz dodatnu upotrebu grafičkog procesora, tada je za rješavanje ovog problema preporučljivo koristiti video kartice s NVIDIA GPU-om. Kao što pokazuje praksa, samo u ovom slučaju možete postići povećanje brzine pretvorbe. Štoviše, morate zapamtiti da stvarno povećanje brzine pretvorbe ovisi o mnogim čimbenicima. To su ulazni i izlazni video formati i, naravno, sam video konverter. Pretvarači Xilisoft Video Converter Ultimate 7.7.2 i Wondershare Video Converter Ultimate 6.0.32 nisu prikladni za ovaj zadatak, ali pretvornik i Movavi Video Converter 10.2.1 mogu vrlo učinkovito koristiti mogućnosti NVIDIA GPU-a.

Što se tiče video kartica na AMD GPU-ovima, one se uopće ne bi trebale koristiti za zadatke video konverzije. U najboljem slučaju, to neće povećati brzinu pretvorbe, au najgorem slučaju možete je smanjiti.

Jedan od naj skrivene funkcije, u posljednje vrijeme Windows Update 10, je mogućnost provjere koje aplikacije koriste vašu grafičku procesorsku jedinicu (GPU). Ako ste ikada otvorili Upravitelj zadataka, vjerojatno ste pogledali korištenje CPU-a da vidite koje aplikacije koriste najviše CPU-a. U najnovija ažuriranja dodao sličnu značajku, ali za GPU grafičke procesore. To vam pomaže razumjeti koliko su vaš softver i igre intenzivni na vašem GPU-u bez potrebe za preuzimanjem softvera treće strane. Postoji još jedna zanimljiva značajka koja pomaže rasteretiti vaš CPU na GPU. Preporučam pročitati kako odabrati.

Zašto nemam GPU u upravitelju zadataka?

Nažalost, neće sve video kartice moći Windows sustavu pružiti statistiku potrebnu za čitanje GPU-a. Kako biste bili sigurni, možete brzo upotrijebiti DirectX dijagnostički alat za provjeru ove tehnologije.

  1. kliknite " Početak" i upišite u pretragu dxdiag za pokretanje DirectX dijagnostičkog alata.
  2. Idi na "tab" Zaslon", desno u koloni " vozači"moraš imati WDDM model verzija više od 2.0 za korištenje GPU grafova u upravitelju zadataka.

Omogući GPU grafikon u upravitelju zadataka

Da biste vidjeli korištenje GPU-a za svaku aplikaciju, morate otvoriti upravitelj zadataka.

  • Pritisnite kombinaciju tipki Ctrl + Shift + Esc za otvaranje upravitelja zadataka.
  • Desnom tipkom miša kliknite u upravitelju zadataka na "prazan" okvir Ime" i provjerite s padajućeg izbornika GPU Također možete primijetiti GPU jezgra da vidite koji ga programi koriste.
  • Sada su u upravitelju zadataka s desne strane vidljivi GPU grafikon i GPU jezgra.


Pogledajte ukupnu izvedbu GPU-a

Možete pratiti opće uporabe GPU za praćenje pod velikim opterećenjem i analizu. U ovom slučaju možete vidjeti sve što vam je potrebno u kartici " Izvođenje" odabirom grafički procesor.


Svaki GPU element raščlanjen je na pojedinačne grafikone kako biste dobili još bolji uvid u to kako se vaš GPU koristi. Ako želite promijeniti prikazane grafikone, možete kliknuti malu strelicu pored naziva svakog zadatka. Ovaj zaslon također prikazuje verziju i datum vašeg upravljačkog programa, što je dobra alternativa korištenju DXDiaga ili Upravitelja uređaja.


GPU računalstvo

CUDA tehnologija (Compute Unified Device Architecture) je softverska i hardverska arhitektura koja omogućuje računalstvo pomoću NVIDIA grafičkih procesora koji podržavaju GPGPU (random computing on video cards) tehnologiju. CUDA arhitektura prvi put se pojavila na tržištu izlaskom osme generacije NVIDIA čipa - G80 i prisutna je u svim kasnijim serijama grafičkih čipova koji se koriste u obiteljima GeForce, ION, Quadro i Tesla akceleratora.

CUDA SDK omogućuje programerima da implementiraju algoritme koji se mogu izvršavati na NVIDIA GPU-u u posebnom pojednostavljenom dijalektu C programskog jezika i da uključe posebne funkcije u tekst C programa. CUDA daje razvojnom programeru mogućnost organiziranja pristupa skupu uputa prema vlastitom nahođenju grafički akcelerator i upravljati njegovom memorijom, organizirati složene paralelne izračune na njoj.

Priča

Godine 2003. Intel i AMD sudjelovali su u zajedničkoj utrci za najveći broj snažan procesor. Tijekom nekoliko godina, kao rezultat ove utrke brzine takta značajno porastao, osobito nakon izlaska Intel Pentium 4.

Nakon povećanja frekvencija takta (između 2001. i 2003. takt Pentiuma 4 se udvostručio s 1,5 na 3 GHz), korisnici su se morali zadovoljiti desetinkama gigaherca koje su na tržište iznijeli proizvođači (od 2003. do 2005., taktne frekvencije povećane 3 na 3,8 GHz).

Arhitekture optimizirane za visoke frekvencije takta, poput Prescotta, također su počele imati poteškoća, i to ne samo produkcijskih. Proizvođači čipova suočeni su s izazovima u nadvladavanju zakona fizike. Neki su analitičari čak predviđali da će Mooreov zakon prestati vrijediti. Ali to se nije dogodilo. Izvorno značenje zakona često je iskrivljeno, ali tiče se broja tranzistora na površini silicijske jezgre. Dugo vremena je povećanje broja tranzistora u CPU-u bilo popraćeno odgovarajućim povećanjem performansi - što je dovelo do iskrivljavanja značenja. Ali onda se situacija zakomplicirala. Programeri CPU arhitekture pristupili su zakonu smanjenja rasta: broj tranzistora koje je trebalo dodati za potrebno povećanje performansi postajao je sve veći, što je dovelo do slijepe ulice.

Razlog zašto se proizvođači GPU-a nisu suočili s ovim problemom vrlo je jednostavan: CPU-i su dizajnirani za postizanje maksimalne performanse na nizu instrukcija koje obrađuju različite podatke (cijele brojeve i brojeve s pomičnim zarezom), izvode slučajni pristup memoriji itd. Do sada, programeri pokušavaju osigurati veći paralelizam instrukcija - to jest, izvršavati što više instrukcija paralelno. Na primjer, s Pentiumom se pojavilo superskalarno izvršavanje, kada je pod određenim uvjetima bilo moguće izvršiti dvije instrukcije po taktu. Pentium Pro dobio je izvanredno izvršavanje instrukcija, što je omogućilo optimizaciju rada računalnih jedinica. Problem je u tome što postoje očita ograničenja za paralelno izvršavanje sekvencijalnog toka instrukcija, tako da slijepo povećanje broja računalnih jedinica ne donosi nikakvu korist jer će one i dalje biti u stanju mirovanja većinu vremena.

Rad GPU-a je relativno jednostavan. Sastoji se od uzimanja skupine poligona s jedne strane i generiranja skupine piksela s druge strane. Poligoni i pikseli neovisni su jedni o drugima, pa se mogu obrađivati ​​paralelno. Dakle, u GPU-u je moguće veliki dio kristala rasporediti u računalne jedinice, koje će se, za razliku od CPU-a, zapravo koristiti.

GPU se od CPU-a ne razlikuje samo po tome. Pristup memoriji u GPU-u je vrlo spregnut - ako se čita teksel, tada će se nakon nekoliko taktnih ciklusa čitati susjedni teksel; Kada se snimi piksel, nakon nekoliko ciklusa takta bit će snimljen i susjedni. Inteligentnim organiziranjem memorije možete postići performanse bliske teoretskim propusnost. To znači da GPU, za razliku od CPU-a, ne zahtijeva veliku predmemoriju, budući da je njegova uloga ubrzati operacije teksturiranja. Sve što je potrebno je nekoliko kilobajta koji sadrže nekoliko teksela koji se koriste u bilinearnim i trilinearnim filterima.

Prvi proračuni na GPU-u

Najraniji pokušaji takvih aplikacija bili su ograničeni na korištenje određenih hardverskih funkcija, kao što su rasterizacija i Z-spremnik. Ali u sadašnjem stoljeću, s pojavom shadera, matrični izračuni su se počeli ubrzavati. Godine 2003., na SIGGRAPH-u, poseban odjeljak je dodijeljen GPU računalstvu, a nazvan je GPGPU (General-Purpose computation on GPU).

Najpoznatiji je BrookGPU, kompajler za Brook streaming programski jezik, dizajniran za izvođenje negrafičkih izračuna na GPU-u. Prije njegove pojave, programeri koji su koristili mogućnosti video čipova za izračune odabrali su jedan od dva uobičajena API-ja: Direct3D ili OpenGL. Ovo je ozbiljno ograničilo upotrebu GPU-a, jer 3D grafika koristi shadere i teksture za koje stručnjaci za paralelno programiranje ne moraju znati; oni koriste niti i jezgre. Brook im je pomogao olakšati zadatak. Ova strujna proširenja jezika C, razvijena na Sveučilištu Stanford, sakrila su 3D API od programera i predstavila video čip kao paralelni koprocesor. Kompajler je obradio .br datoteku s C++ kodom i ekstenzijama, proizvodeći kod povezan s bibliotekom omogućenom za DirectX, OpenGL ili x86.

Pojava Brooka pobudila je zanimanje NVIDIA-e i ATI-ja te otvorila sasvim novi sektor - paralelna računala temeljena na video čipovima.

Naknadno su se neki istraživači iz projekta Brook pridružili NVIDIA razvojnom timu kako bi predstavili hardversko-softversku paralelnu računalnu strategiju, otvarajući novi tržišni udio. A glavna prednost ove NVIDIA inicijative je da programeri znaju sve mogućnosti svojih GPU-a do zadnjeg detalja, i nema potrebe za korištenjem grafičkog API-ja, a možete raditi s hardverom izravno pomoću upravljačkog programa. Rezultat napora ovog tima bila je NVIDIA CUDA.

Područja primjene paralelnih izračuna na GPU

Prilikom prijenosa izračuna na GPU, mnogi zadaci postižu ubrzanje od 5-30 puta u usporedbi s brzim univerzalnim procesorima. Najviše velike brojke(oko 100-struko ubrzanje, pa čak i više!) postižu se pomoću koda koji nije baš prikladan za izračune pomoću SSE blokova, ali je prilično prikladan za GPU-ove.

Ovo su samo neki primjeri ubrzanja za sintetički kod na GPU-u u odnosu na SSE-vektorizirani kod na CPU-u (prema NVIDIA-i):

Fluorescentna mikroskopija: 12x.

Molekularna dinamika (izračunavanje sile bez veze): 8-16x;

Elektrostatika (izravna i višerazinska Coulombova sumacija): 40-120x i 7x.

Tablica koju NVIDIA prikazuje u svim prezentacijama pokazuje brzinu GPU-a u odnosu na CPU.

Popis glavnih aplikacija u kojima se koristi GPU računalstvo: analiza i obrada slika i signala, fizička simulacija, računalna matematika, računalna biologija, financijski izračuni, baze podataka, dinamika plinova i tekućina, kriptografija, adaptivna terapija zračenjem, astronomija, audio obrada , bioinformatika , biološke simulacije, računalni vid, rudarenje podataka, digitalno kino i televizija, elektromagnetske simulacije, geografski informacijski sustavi, vojne primjene, planiranje rudnika, molekularna dinamika, magnetska rezonancija (MRI), neuronske mreže, oceanografsko istraživanje, fizika čestica, simulacija savijanja proteina, kvantna kemija, praćenje zraka, slikanje, radar, simulacija rezervoara, umjetna inteligencija, analiza satelitskih podataka, seizmička istraživanja, kirurgija, ultrazvuk, video konferencije.

Prednosti i ograničenja CUDA-e

Iz programerske perspektive, grafički cjevovod je skup faza obrade. Geometrijski blok generira trokute, a rasterizacijski blok generira piksele prikazane na monitoru. Tradicionalni model GPGPU programiranja izgleda ovako:

Za prijenos izračuna na GPU unutar ovog modela potreban je poseban pristup. Čak će i elementno zbrajanje dvaju vektora zahtijevati crtanje figure na ekranu ili u međuspremniku izvan ekrana. Slika je rasterizirana, boja svakog piksela izračunava se pomoću zadanog programa (pixel shader). Program čita ulazne podatke iz tekstura za svaki piksel, dodaje ih i upisuje u izlazni međuspremnik. A sve te brojne operacije potrebne su za nešto što je napisano jednim operatorom u običnom programskom jeziku!

Stoga upotreba GPGPU-a za računalstvo opće namjene ima ograničenje jer je preteška za obuku programera. I ima dovoljno drugih ograničenja, jer pixel shader je samo formula za ovisnost konačne boje piksela o njegovoj koordinati, a jezik pixel shadera je jezik za pisanje ovih formula sintaksom nalik na C. Rane metode GPGPU-a zgodan su trik koji vam omogućuje korištenje snage GPU-a, ali bez ikakvih pogodnosti. Podaci su tamo predstavljeni slikama (teksturama), a algoritam je predstavljen procesom rasterizacije. Posebno treba istaknuti vrlo specifičan model memorije i izvršenja.

NVIDIA-ina softverska i hardverska arhitektura za GPU računalstvo razlikuje se od prethodnih GPGPU modela po tome što vam omogućuje pisanje programa za GPU u stvarnom C jeziku sa standardnom sintaksom, pokazivačima i potrebom za minimalnim proširenjima za pristup računalnim resursima video čipova. CUDA je neovisna o grafičkim API-jima i ima neke značajke dizajnirane posebno za računalstvo opće namjene.

Prednosti CUDA-e u odnosu na tradicionalni pristup GPGPU računalstvu

CUDA omogućuje pristup do 16 KB memorije koja se dijeli nitima po multiprocesoru, što se može koristiti za organiziranje predmemorije s većom propusnošću od dohvaćanja teksture;

Učinkovitiji prijenos podataka između sustava i video memorije;

Nema potrebe za grafičkim API-jima sa redundancijom i opterećenjem;

Linearno memorijsko adresiranje, prikupljanje i raspršivanje, sposobnost pisanja na proizvoljne adrese;

Hardverska podrška za cjelobrojne i bitne operacije.

Glavna ograničenja CUDA-e:

Nedostatak podrške za rekurziju za izvršne funkcije;

Minimalna širina bloka je 32 niti;

Zatvorena CUDA arhitektura u vlasništvu NVIDIA-e.

Slabosti programiranja s prethodnim GPGPU metodama su da te metode ne koriste izvršne jedinice za sjenčanje vrhova u prethodnim neunificiranim arhitekturama, podaci se pohranjuju u teksturama i izlaze u međuspremnik izvan zaslona, ​​a algoritmi s više prolaza koriste jedinice za sjenčanje piksela. Ograničenja GPGPU-a mogu uključivati: nedovoljnu upotrebu hardverskih mogućnosti, ograničenja propusnosti memorije, nedostatak operacije raspršivanja (samo prikupljanje), obveznu upotrebu grafičkog API-ja.

Glavne prednosti CUDA-e u odnosu na prethodne GPGPU metode proizlaze iz činjenice da je arhitektura dizajnirana za učinkovitu upotrebu ne-grafičkog računalstva na GPU-u i koristi programski jezik C bez potrebe za prenošenjem algoritama u oblik prilagođen konceptu grafičkog cjevovoda . CUDA nudi novi put do GPU računalstva koji ne koristi grafičke API-je, nudeći nasumični pristup memoriji (scatter ili gather). Ova arhitektura nema nedostataka GPGPU-a i koristi sve izvršne jedinice, a također proširuje mogućnosti zbog cjelobrojne matematike i operacija pomaka bitova.

CUDA otvara neke hardverske mogućnosti koje nisu dostupne iz grafičkih API-ja, kao što je zajednička memorija. Ovo je mala memorija (16 kilobajta po multiprocesoru) kojoj blokovi niti imaju pristup. Omogućuje vam spremanje u predmemoriju najčešće korištenih podataka i može pružiti više velika brzina, u usporedbi s korištenjem dohvaćanja teksture za ovaj zadatak. Što zauzvrat smanjuje osjetljivost propusnosti paralelnih algoritama u mnogim aplikacijama. Na primjer, koristan je za linearnu algebru, brzu Fourierovu transformaciju i filtre za obradu slike.

Pristup memoriji također je praktičniji u CUDA-i. Programski kod u grafičkom API-ju daje podatke u obliku 32 vrijednosti s pomičnim zarezom jednostruke preciznosti (RGBA vrijednosti istovremeno u osam ciljeva renderiranja) u unaprijed definirana područja, a CUDA podržava raspršene zapise - neograničen broj zapisa u bilo kojem trenutku adresa. Takve prednosti omogućuju izvršavanje nekih algoritama na GPU-u koji se ne mogu učinkovito implementirati pomoću GPGPU metoda temeljenih na grafičkim API-jima.

Također, grafički API-ji nužno pohranjuju podatke u teksture, što zahtijeva preliminarno pakiranje velikih nizova u teksture, što komplicira algoritam i prisiljava na korištenje posebnog adresiranja. A CUDA vam omogućuje čitanje podataka na bilo kojoj adresi. Još jedna prednost CUDA-e je optimizirana razmjena podataka između CPU-a i GPU-a. I za programere koji žele pristup niska razina(primjerice, kada pišete drugi programski jezik), CUDA nudi mogućnost programiranja niske razine u asemblerskom jeziku.

Nedostaci CUDA-e

Jedan od rijetkih nedostataka CUDA-e je njena slaba prenosivost. Ova arhitektura radi samo na video čipovima ove tvrtke, i to ne na svim, već počevši od serije GeForce 8 i 9 te odgovarajućih Quadro, ION i Tesla. NVIDIA navodi brojku od 90 milijuna CUDA-kompatibilnih video čipova.

CUDA alternative

Okvir za pisanje računalnih programa koji se odnose na paralelno računanje na različitim grafičkim i središnjim procesorima. Okvir OpenCL uključuje programski jezik koji se temelji na standardu C99 i sučelje za programiranje aplikacija (API). OpenCL pruža paralelizam na razini instrukcija i na razini podataka te je implementacija GPGPU tehnike. OpenCL je potpuno otvoreni standard i za korištenje se ne plaćaju naknade.

Cilj OpenCL-a je nadopuniti OpenGL i OpenAL, koji su otvoreni industrijski standardi za 3D računalna grafika i zvuka, iskorištavajući mogućnosti GPU-a. OpenCL razvija i održava neprofitni konzorcij Khronos Group, koji uključuje mnoge velike tvrtke, uključujući Apple, AMD, Intel, nVidia, Sun Microsystems, Sony Computer Entertainment i druge.

CAL/IL (Sloj računske apstrakcije/srednji jezik)

ATI Stream Technology je skup hardverskih i softverskih tehnologija koje omogućuju grafiku AMD procesori, zajedno sa središnjim procesorom, za ubrzavanje mnogih aplikacija (ne samo grafike).

Aplikacije za ATI Stream uključuju računalno intenzivne aplikacije kao što su financijska analiza ili obrada seizmičkih podataka. Korištenje stream procesora omogućilo je povećanje brzine nekih financijskih izračuna za 55 puta u usporedbi s rješavanjem istog problema korištenjem samo središnjeg procesora.

NVIDIA ne smatra ATI Stream tehnologiju vrlo jakim konkurentom. CUDA i Stream su dva različite tehnologije, koji su na različitim stupnjevima razvoja. Programiranje za ATI proizvode je mnogo složenije - njihov jezik je više sličan asemblerskom jeziku. CUDA C je pak jezik na mnogo višoj razini. Pisanje na njemu je praktičnije i lakše. Ovo je vrlo važno za velike razvojne tvrtke. Ako govorimo o performansama, možemo vidjeti da je njihova vršna vrijednost kod ATI proizvoda veća nego kod NVIDIA rješenja. Ali opet se sve svodi na to kako doći do ove moći.

DirectX11 (DirectCompute)

Sučelje za programiranje aplikacija koje je dio DirectX-a, skupa Microsoftovih API-ja koji je dizajniran za rad na IBM PC-kompatibilnim računalima koja pokreću obitelj operativnih sustava Microsoft Windows. DirectCompute je dizajniran za izvođenje računalstva opće namjene na GPU-ovima, implementacija GPGPU koncepta. DirectCompute je izvorno objavljen kao dio DirectX 11, ali je kasnije postao dostupan za DirectX 10 i DirectX 10.1.

NVDIA CUDA u ruskoj znanstvenoj zajednici.

Od prosinca 2009. softverski model CUDA se predaje na 269 sveučilišta diljem svijeta. U Rusiji se tečajevi o CUDA održavaju u Moskvi, St. Petersburgu, Kazanu, Novosibirsku i Permu državna sveučilišta, Međunarodno sveučilište prirode društva i čovjeka "Dubna", Zajednički institut za nuklearna istraživanja, Moskovski institut za elektroničku tehnologiju, Državno energetsko sveučilište Ivanovo, BSTU naz. V. G. Šuhov, MSTU im. Bauman, Rusko kemijsko tehničko sveučilište nazvano po. Mendelejev, Ruski znanstveni centar "Kurčatov institut", Međuregionalni centar za superračunala Ruske akademije znanosti, Tehnološki institut Taganrog (TTI SFU).

Danas se o tome posebno aktivno raspravlja i mnoge korisnike zanima gdje početi rudariti novčiće i kako se to uopće događa. Popularnost ove industrije već je imala opipljiv utjecaj na tržište GPU-a, a mnogi ljudi već dugo povezuju snažnu video karticu ne sa zahtjevnim igrama, već s kripto farmama. U ovom članku ćemo govoriti o tome kako organizirati cijeli ovaj proces od nule i započeti rudarenje na vlastitoj farmi, što koristiti za to i zašto je to nemoguće.

Što je rudarenje na video kartici?

GPU rudarenje je proces rudarenja kriptovalute pomoću grafičkih procesorskih jedinica (GPU). Da biste to učinili, upotrijebite moćnu video karticu u kućnom računalu ili posebno sastavljenu farmu nekoliko uređaja u jednom sustavu. Ako se pitate zašto se GPU koriste za ovaj proces, onda je odgovor vrlo jednostavan. Stvar je u tome što su video kartice u početku dizajnirane za obradu velikih količina podataka izvođenjem sličnih operacija, kao što je slučaj s video obradom. Ista slika se može vidjeti i kod rudarenja kriptovaluta jer je ovdje proces raspršivanja jednako sličan.

Za rudarenje se koriste punopravne diskretne video kartice. Prijenosna računala ili čipovi integrirani u procesor se ne koriste. Na internetu postoje i članci o rudarenju na vanjskoj video kartici, ali to također ne radi u svim slučajevima i nije najbolje rješenje.

Koje su video kartice prikladne za rudarenje?

Dakle, što se tiče odabira video kartice, ovdje je uobičajena praksa kupnja AMD rx 470, rx 480, rx 570, rx 580 ili Nvidia 1060, 1070, 1080 ti. Video kartice poput r9 280x, r9 290, 1050, 1060 također su prikladne, ali rudarenje na slaboj video kartici kao što su geforce gtx 460, gts 450, gtx 550ti definitivno neće donijeti profit. Ako govorimo o memoriji, onda je bolje uzeti od 2 GB. Možda čak ni 1 GB nije dovoljan, a kamoli 512 MB. Ako govorimo o rudarenju na profesionalnoj video kartici, onda ono donosi isto kao i obične ili čak manje. Uzimajući u obzir troškove takvih VC-ova, to je neisplativo, ali možete rudariti uz njihovu pomoć ako ih već imate na zalihi.

Također je vrijedno napomenuti da sve video kartice mogu dobiti povećanje performansi otključavanjem vrijednosti koje je postavio proizvođač. Taj se proces naziva overclocking. Međutim, to nije sigurno, dovodi do gubitka jamstva i kartica može zakazati, na primjer, tako što će početi pokazivati ​​artefakte. Moguće je overclockirati video kartice, ali morate pročitati materijale o ovoj temi i nastaviti s oprezom. Ne biste trebali pokušavati odmah postaviti sve vrijednosti na maksimum, ali još je bolje na internetu pronaći primjere uspješnih postavki overclockinga posebno za vašu video karticu.

Najpopularnije video kartice za rudarenje 2020

Ispod je usporedba video kartica. Tablica sadrži najpopularnije uređaje i njihovu maksimalnu potrošnju energije. Mora se reći da ti pokazatelji mogu varirati ovisno o specifičnom modelu video kartice, njegovom proizvođaču, korištenoj memoriji i nekim drugim karakteristikama. Nema smisla pisati o zastarjelim pokazateljima, kao što je rudarenje Litecoina na video kartici, pa se razmatraju samo tri najpopularnija algoritma za rudarenje na video karticama.

Video kartica Ethash Equihash KriptoNoć Potrošnja energije
AMD Radeon R9 280x 11MH/s 290 H/s 490 H/s 230 W
AMD Radeon RX 470 26 MH/s 260 H/s 660 H/s 120 W
AMD Radeon RX 480 29,5 MH/s 290 H/s 730 H/s 135W
AMD Radeon RX 570 27,9 MH/s 260 H/s 700 H/s 120 W
AMD Radeon RX 580 30,2 MH/s 290 H/s 690 H/s 135W
Nvidia GeForce GTX 750TI 0,5MH/s 75 H/s 250 H/s 55W
Nvidia GeForce GTX 1050TI 13,9 MH/s 180 H/s 300 H/s 75 W
Nvidia GeForce GTX 1060 22,5MH/s 270 H/s 430 H/s 90W
Nvidia GeForce GTX 1070 30MH/s 430 H/s 630 H/s 120 W
Nvidia GeForce GTX 1070TI 30,5 MH/s 470 H/s 630 H/s 135W
Nvidia GeForce GTX 1080 23,3 MH/s 550 H/s 580 H/s 140 W
Nvidia GeForce GTX 1080TI 35MH/s 685 H/s 830 H/s 190W

Da li je rudarenje moguće na jednoj video kartici?

Ako ne želite sastaviti punu farmu od više GPU-ova ili samo želite isprobati ovaj proces na kućnom računalu, tada možete rudariti s jednom video karticom. Nema razlika i općenito broj uređaja u sustavu nije bitan. Štoviše, možete instalirati uređaje s različitim čipovima ili čak iz različitih proizvođača. Trebate samo pokrenuti dva programa paralelno za čipove različitih tvrtki. Još jednom vas podsjetimo da se rudarenje ne izvodi na integriranoj video kartici.

Koje se kriptovalute mogu rudariti na video karticama?

Možete rudariti bilo koju kriptovalutu na GPU-u, ali trebali biste razumjeti da će se performanse na različitim na istoj kartici razlikovati. Stariji algoritmi više nisu prikladni za video procesore i neće donijeti nikakav profit. To se događa zbog pojave novih uređaja na tržištu - tzv. Puno su produktivniji i značajno povećavaju kompleksnost mreže, ali im je cijena visoka i iznosi tisuće dolara. Stoga je rudarenje kovanica pomoću SHA-256 (Bitcoin) ili Scrypt (Litecoin, Dogecoin) kod kuće loša ideja u 2018.

Uz LTC i DOGE, ASIC-ovi su onemogućili rudarenje Bitcoina (BTC), Dasha i drugih valuta. Puno bolji izbor bile bi kriptovalute koje koriste algoritme zaštićene ASIC-om. Na primjer, koristeći GPU, možete rudariti novčiće pomoću algoritama CryptoNight (Karbovanets, Monero, Electroneum, Bytecoin), Equihash (ZCash, Hush, Bitcoin Gold) i Ethash (Ethereum, Ethereum Classic). Popis je daleko od potpunog i stalno se pojavljuju novi projekti temeljeni na ovim algoritmima. Među njima postoje i vilice popularnijih kovanica i potpuno novi razvoji. Povremeno se čak pojavljuju novi algoritmi koji su dizajnirani za rješavanje specifičnih problema i mogu koristiti različitu opremu. U nastavku ćemo govoriti o tome kako saznati hashrate video kartice.

Što vam je potrebno za rudarenje na video kartici

Ispod je popis onoga što će vam trebati za stvaranje farme:

  • Same video kartice. Izbor specifični modeli ovisi o vašem proračunu ili onome što već imate pri ruci. Naravno, stari AGP uređaji neće raditi, ali možete koristiti bilo koju karticu srednje ili najviše klase iz posljednjih godina. Iznad se možete vratiti na tablicu performansi grafičke kartice, što će vam omogućiti da napravite odgovarajući izbor.
  • Računalo za njihovu instalaciju. Nije potrebno koristiti vrhunski hardver i napraviti farmu na temelju komponenti visokih performansi. Bilo koje stari AMD Athlon, nekoliko gigabajta RAM memorija I tvrdi disk za ugradnju operacijski sustav I potrebne programe. Važna je i matična ploča. Trebao bi imati dovoljno PCI utora za vašu farmu. Postoje posebne verzije za rudare koje sadrže 6-8 utora iu određenim slučajevima isplativije je koristiti ih nego sastaviti nekoliko računala. Posebnu pozornost treba obratiti samo na napajanje, jer će sustav raditi pod velikim opterećenjem 24 sata dnevno. Obavezno uzeti napajanje sa rezervom snage i poželjno je imati 80 Plus certifikate. Također je moguće spojiti dva bloka u jedan pomoću posebnih adaptera, ali ovo rješenje izaziva kontroverze na Internetu. Bolje je uopće ne koristiti slučaj. Za bolje hlađenje Preporuča se napraviti ili kupiti poseban stalak. U ovom slučaju, video kartice se uklanjaju pomoću posebnih adaptera koji se nazivaju usponi. Možete ih kupiti u specijaliziranim trgovinama ili na Aliexpressu.
  • Dobro prozračena suha prostorija. Farmu treba smjestiti u nestambenu sobu, ili još bolje u zasebnu prostoriju. Time ćete se riješiti nelagode koja nastaje zbog bučnog rada sustava za hlađenje i prijenos topline. Ako to nije moguće, onda biste trebali odabrati video kartice sa što tišim sustavom hlađenja. Više o tome možete saznati iz recenzija na internetu, na primjer, na YouTubeu. Također biste trebali razmisliti o cirkulaciji zraka i ventilaciji kako bi temperature bile što niže.
  • Program za rudare. GPU rudarenje se događa pomoću posebnog koji se može pronaći na Internetu. Proizvođači ATI Radeon i Nvidia koriste različite softvere. Isto vrijedi i za različite algoritme.
  • Servis opreme. Ovo je vrlo važna točka, jer ne razumiju svi da rudarska farma zahtijeva stalnu brigu. Korisnik mora pratiti temperaturu, mijenjati termalnu pastu i čistiti CO od prašine. Također biste trebali imati na umu sigurnosne mjere i redovito provjeravati funkcionalnost sustava.

Kako postaviti rudarenje na video kartici od nule

U ovom odjeljku ćemo razmotriti cijeli proces rudarenja od odabira valute do povlačenja sredstava. Treba imati na umu da cijeli ovaj proces može biti malo drugačiji za različite skupove, programe i čipove.

Kako odabrati video karticu za rudarenje

Preporučujemo da se upoznate s gornjom tablicom i odjeljkom o izračunu potencijalne zarade. To će vam omogućiti da izračunate svoj približni prihod i odlučite koji hardver si možete priuštiti više, kao i razumjeti razdoblje povrata vaše investicije. Nemojte također zaboraviti na kompatibilnost konektora napajanja video kartice i napajanja. Ako se koriste drugi, trebali biste unaprijed nabaviti odgovarajuće adaptere. Sve se to može lako kupiti u kineskim internetskim trgovinama za novčić ili od lokalnih prodavača uz malo marže.

Odabir kriptovalute

Sada je važno odlučiti koji vas novčić zanima i koje ciljeve želite postići. Ako ste zainteresirani za zaradu u stvarnom vremenu, trebali biste odabrati valute s najvećim profitom ovaj trenutak i prodati ih odmah po primitku. Također možete rudariti najpopularnije novčiće i držati ih dok cijena ne poraste. Postoji i neka vrsta strateškog pristupa, kada odaberete malo poznatu, ali po vašem mišljenju obećavajuću valutu i uložite snagu u nju, u nadi da će u budućnosti vrijednost značajno porasti.

Odabir bazena za rudarenje

Oni također imaju neke razlike. Neki od njih zahtijevaju registraciju, a neki samo trebaju vašu adresu novčanika za početak. Prvi obično pohranjuju sredstva koja zaradite dok se ne dosegne minimalni iznos za isplatu ili dok se čeka da ručno podignete novac. Dobar primjer takvog bazena je Suprnova.cc. Tamo se nudi mnogo kriptovaluta i za rad u svakom od bazena trebate se samo jednom registrirati na stranici. Usluga je jednostavna za postavljanje i vrlo je prilagođena početnicima.

Web stranica Minergate nudi sličan pojednostavljeni sustav. Pa, ako se ne želite registrirati na nekoj stranici i tamo pohranjivati ​​svoja zarađena sredstva, onda biste trebali odabrati neki skup u službenoj temi kovanice koja vas zanima na forumu BitcoinTalk. Jednostavni bazeni zahtijevaju samo da navedete adresu za kriptovalutu koja će biti kreditirana, au budućnosti, koristeći adresu, možete saznati statistiku rudarenja.

Izrada novčanika za kriptovalute

Ova stavka vam nije potrebna ako koristite bazen koji zahtijeva registraciju i ima ugrađen novčanik. Ako želite automatski primati uplate u svoj novčanik, pokušajte pročitati o stvaranju novčanika u članku o odgovarajućem novčiću. Ovaj proces može značajno varirati za različite projekte.

Također možete jednostavno naznačiti adresu svog novčanika na jednoj od burzi, ali treba imati na umu da sve platforme za razmjenu ne prihvaćaju transakcije iz bazena. Najbolja opcija bila bi stvoriti novčanik izravno na računalu, ali ako radite s velikim brojem valuta, tada će pohranjivanje svih blockchaina biti nezgodno. U ovom slučaju vrijedi potražiti pouzdane mrežne novčanike ili lagane verzije koje ne zahtijevaju preuzimanje cijelog lanca blokova.

Odaberite i instalirajte program za rudarenje

Izbor programa za rudarenje kripti ovisi o odabranom novčiću i njegovom algoritmu. Vjerojatno svi programeri takvog softvera imaju teme na BitcoinTalks, gdje možete pronaći veze za preuzimanje i informacije o tome kako postaviti i pokrenuti. Gotovo svi ovi programi imaju verzije za Windows i Linux. Većina ovih rudara je besplatna, ali koriste određeni postotak vremena za povezivanje s razvojnim skupom. Ovo je vrsta naknade za korištenje softvera. U nekim slučajevima može se onemogućiti, ali to dovodi do ograničenja funkcionalnosti.

Postavljanje programa sastoji se od navođenja bazena za rudarenje, adrese novčanika ili prijave, lozinke (ako postoji) i drugih opcija. Preporuča se, na primjer, postaviti ograničenje maksimalne temperature, nakon čijeg će se postizanja farma isključiti, kako ne bi oštetili video kartice. Podešava se brzina ventilatora rashladnog sustava i druge suptilnije postavke, koje početnici vjerojatno neće koristiti.

Ako ne znate koji softver odabrati, pogledajte naš materijal posvećen njemu ili proučite upute na web stranici bazena. Obično uvijek postoji odjeljak posvećen početku. Sadrži popis programa koji se mogu koristiti i konfiguracije za njih .šišmiš datoteke. Uz njegovu pomoć možete brzo shvatiti postavke i započeti rudarenje na diskretnoj video kartici. Možete odmah stvoriti batch datoteke za sve valute s kojima želite raditi, tako da će u budućnosti biti praktičnije prebacivati ​​se između njih.

Pokrećemo rudarenje i pratimo statistiku

Nakon lansiranja .šišmiš datoteku s postavkama, vidjet ćete prozor konzole u kojem će se prikazati dnevnik onoga što se događa. Također se može pronaći u mapi s pokrenutom datotekom. U konzoli možete vidjeti trenutni hashrate i temperaturu kartice. Prečaci vam obično omogućuju pozivanje trenutnih podataka.

Također ćete moći vidjeti ako uređaj ne pronađe hashove. U tom slučaju će se prikazati upozorenje. To se događa kada je nešto krivo konfigurirano, pogrešan softver je odabran za novčić ili GPU ne radi ispravno. Mnogi rudari također koriste sredstva za daljinski pristup na računalo za praćenje rada farme kada nisu tamo gdje je instalirano.

Povlačimo kriptovalute

Ako koristite bazene kao što je Suprnova, onda se sva sredstva jednostavno akumuliraju na vašem računu i možete ih podići u bilo kojem trenutku. Drugi skupovi najčešće koriste sustav u kojem se sredstva automatski pripisuju određenom novčaniku nakon primitka minimalnog iznosa povlačenja. Obično možete saznati koliko ste zaradili na web stranici bazena. Sve što trebate učiniti je navesti adresu novčanika ili se prijaviti na svoj osobni račun.

Koliko možete zaraditi?

Iznos koji možete zaraditi ovisi o situaciji na tržištu i, naravno, ukupnom hashrateu vaše farme. Također je važno koju strategiju odaberete. Nije potrebno prodati sve iskopano odjednom. Možete, primjerice, pričekati da cijena izrudarenog novčića skoči i dobiti višestruko veću zaradu. Međutim, nije sve tako jasno i predvidljivo daljnji razvoj događaji su jednostavno nerealni.

Otplata video kartica

Poseban online kalkulator pomoći će vam izračunati povrat. Ima ih mnogo na internetu, ali mi ćemo ovaj proces pogledati na primjeru usluge WhatToMine. Omogućuje vam dobivanje trenutnih podataka o dobiti na temelju podataka o vašoj farmi. Samo trebate odabrati video kartice koje imate na zalihi, a zatim dodati cijenu električne energije u vašoj regiji. Stranica će izračunati koliko možete zaraditi dnevno.

Treba imati na umu da se uzima u obzir samo trenutno stanje stvari na tržištu i da se situacija može promijeniti u bilo kojem trenutku. Stopa može pasti ili porasti, težina rudarenja će postati drugačija ili će se pojaviti novi projekti. Na primjer, proizvodnja etera može prestati zbog mogućeg prijelaza mreže na . Ako rudarenje Ethereuma prestane, tada će farme morati usmjeriti svoju besplatnu snagu negdje, na primjer, u rudarenje ZCash na GPU-u, što će utjecati na cijenu ovog novčića. Postoji mnogo sličnih scenarija na tržištu i važno je razumjeti da se današnja slika možda neće održati tijekom cijelog razdoblja povrata opreme.

Programer bi trebao naučiti učinkovito koristiti grafičku procesorsku jedinicu (GPU) uređaja kako se aplikacija ne bi usporavala ili obavljala nepotreban rad.

Konfigurirajte postavke GPU renderiranja

Ako je vaša aplikacija spora, to znači da nekim ili svim okvirima za osvježavanje zaslona treba više od 16 milisekundi da se osvježe. Da biste vizualno vidjeli ažuriranja okvira na zaslonu, možete omogućiti posebnu opciju na uređaju (Profil GPU Rendering).

Moći ćete brzo vidjeti koliko je vremena potrebno za renderiranje okvira. Dopustite mi da vas podsjetim da ga morate držati unutar 16 milisekundi.

Opcija je dostupna na uređajima počevši od Androida 4.1. Na uređaju mora biti aktiviran način rada za razvojne programere. Na uređajima s verzijom 4.2 i novijom, način rada je prema zadanim postavkama skriven. Za aktiviranje idite na Postavke | O telefonu i kliknite na liniju sedam puta Izgradi broj.

Nakon aktivacije idite na Opcije za razvojne programere i pronaći poantu Konfigurirajte postavke GPU renderiranja(GPU renderiranje profila) koji bi trebao biti omogućen. U skočnom prozoru odaberite opciju Na ekranu u obliku stupaca(Na ekranu kao trake). U tom slučaju, grafikon će biti prikazan na vrhu pokrenute aplikacije.

Možete testirati ne samo svoju aplikaciju, već i druge. Pokrenite bilo koju aplikaciju i počnite raditi s njom. Dok radite, vidjet ćete ažurirani grafikon na dnu zaslona. Vodoravna os odgovoran je za prošlo vrijeme. Okomita os pokazuje vrijeme za svaki okvir u milisekundama. Prilikom interakcije s aplikacijom, na zaslonu se iscrtavaju okomite trake koje se pojavljuju slijeva nadesno, pokazujući performanse okvira tijekom vremena. Svaki takav stupac predstavlja jedan okvir za crtanje ekrana. Što je veća visina stupca, potrebno je više vremena za crtanje. Tanka zelena linija je vodič i odgovara 16 milisekundi po okviru. Stoga morate nastojati osigurati da grafikon ne odluta izvan ove crte kada proučavate svoju prijavu.

Pogledajmo veću verziju grafikona.

Zelena linija je odgovorna za 16 milisekundi. Kako biste ostali unutar 60 sličica u sekundi, svaka traka grafikona mora biti nacrtana ispod ove linije. U nekom trenutku stupac će biti prevelik i bit će puno viši od zelene linije. To znači da se program usporava. Svaki stupac ima cijan, ljubičastu (Lollipop i gore), crvenu i narančastu.

Plava boja odgovorna je za vrijeme potrebno za izradu i ažuriranje Pogled.

Ljubičasti dio predstavlja vrijeme potrošeno na prijenos resursa renderiranja niti.

Crvena boja predstavlja vrijeme za crtanje.

Narančasta boja pokazuje koliko je CPU-u trebalo čekati da GPU završi svoj posao. Ovo je izvor problema kod velikih vrijednosti.

Postoje posebne tehnike za smanjenje opterećenja GPU-a.

Debug GPU indikator prekoračenja

Druga vam postavka daje do znanja koliko se često isti dio zaslona ponovno iscrtava (tj. obavlja se dodatni posao). Idemo opet Opcije za razvojne programere i pronaći poantu Debug GPU indikator prekoračenja(Debug GPU Overdraw) koji bi trebao biti omogućen. U skočnom prozoru odaberite opciju Prikaži zone preklapanja(Prikaži prekoračena područja). Nemojte se bojati! Neki će elementi na ekranu promijeniti boju.

Vratite se na bilo koju aplikaciju i gledajte kako radi. Boja će označiti problematična područja u vašoj aplikaciji.

Ako se boja u aplikaciji nije promijenila, onda je sve u redu. Nema slojevitosti jedne boje na drugu.

Plava boja označava da se jedan sloj crta na vrhu sloja ispod. Fino.

Zelena boja - dvaput precrtano. Morate razmišljati o optimizaciji.

Ružičasta boja - precrtana tri puta. Sve je jako loše.

Crvena boja - precrtana mnogo puta. Nešto je pošlo po zlu.

Možete sami provjeriti svoju prijavu kako biste pronašli problematična područja. Napravite aktivnost i postavite komponentu na nju TextView. Dajte korijenskom elementu i tekstualnoj oznaci neku pozadinu u atributu android: pozadina. Dobit ćete sljedeće: prvo ste jednom bojom obojali najdonji sloj aktivnosti. Zatim se na njega nacrta novi sloj TextView. Usput, zapravo TextView nacrtan je i tekst.

U nekim se točkama preklapanje boja ne može izbjeći. Ali zamislite da na isti način postavite pozadinu za popis ListView, koji zauzima cijeli prostor aktivnosti. Sustav će obavljati dvostruku dužnost, iako korisnik nikada neće vidjeti donji sloj aktivnosti. A ako, osim toga, stvorite vlastitu oznaku za svaki element popisa s vlastitom pozadinom, tada ćete općenito biti pretjerani.

Mali savjet. Mjesto nakon metode setContentView() pozivanje metode koja će ukloniti zaslon od bojanja bojom teme. Ovo će pomoći ukloniti jedan dodatni sloj boje:

GetWindow().setBackgroundDrawable(null);



reci prijateljima
Pročitajte također