HSA pentru dezvoltatori: calcul eterogen pentru mase

Publicat: 2022-03-11

Ce au în comun producătorii de cipuri precum AMD, ARM, Samsung, MediaTek, Qualcomm și Texas Instruments? Ei bine, în afară de asemănările evidente dintre acești giganți care produc cipuri, se întâmplă să fie și fondatori ai Fundației HSA. Ce este HSA și de ce are nevoie de o fundație susținută de cei grei din industrie?

În această postare voi încerca să explic de ce HSA ar putea fi o problemă în viitorul apropiat, așa că voi începe cu elementele de bază: Ce este HSA și de ce ar trebui să-ți pese ?

HSA înseamnă Heterogeneous System Architecture, care sună cam plictisitor, dar crede-mă, ar putea deveni foarte interesant, într-adevăr. HSA este în esență un set de standarde și specificații concepute pentru a permite integrarea în continuare a procesoarelor și a GPU-urilor pe aceeași magistrală. Acesta nu este un concept complet nou; CPU-urile desktop și SoC-urile mobile au folosit grafică integrată și folosesc o singură magistrală de ani de zile, dar HSA o duce la următorul nivel.

Aceeași încărcare, arhitecturi diferite: CPU-urile și GPU-urile excelează la sarcini diferite. Ce se întâmplă când încep să partajeze încărcarea, fără nicio contribuție a dezvoltatorului?

Aceeași încărcare, arhitecturi diferite: CPU-urile și GPU-urile excelează la sarcini diferite. Ce se întâmplă când încep să partajeze încărcarea, fără nicio contribuție a dezvoltatorului?
Tweet

În loc să utilizeze pur și simplu aceeași magistrală și memorie partajată pentru CPU și GPU, HSA permite, de asemenea, acestor două arhitecturi foarte diferite să funcționeze în tandem și să partajeze sarcini . Poate că nu sună mare lucru, dar dacă aruncați o privire mai atentă și examinați potențialele efecte pe termen lung ale acestei abordări, începe să arate foarte „dulce” din punct de vedere tehnic.

Oh nu! Iată un alt standard prost pe care trebuie să le implementeze dezvoltatorii

Da și nu.

Ideea de a partaja aceeași magistrală nu este nouă și nici ideea de a folosi GPU-uri extrem de paralelizate pentru anumite sarcini de calcul (care nu implică randarea capturilor). S-a mai făcut și cred că majoritatea cititorilor noștri sunt deja familiarizați cu standardele GPGPU precum CUDA și OpenCL.

Cu toate acestea, spre deosebire de abordarea CUDA sau OpenCL, HSA ar scoate în mod eficient dezvoltatorul din ecuație, cel puțin atunci când vine vorba de alocarea diferitelor sarcini diferitelor nuclee de procesare. Hardware-ul ar decide când să descarce calculele de la CPU la GPU și invers. HSA nu ar trebui să înlocuiască limbajele de programare GPGPU consacrate precum OpenCL, deoarece acestea pot fi implementate și pe hardware HSA.

Acesta este scopul HSA: ar trebui să facă întregul proces ușor, chiar fără întreruperi. Dezvoltatorii nu vor trebui neapărat să se gândească la descărcarea calculelor pe GPU. Hardware-ul o va face automat.

O mulțime de nume mari sprijină HSA. Cu toate acestea, greii din industrie Intel și Nvidia nu sunt pe listă.

O mulțime de nume mari sprijină HSA. Cu toate acestea, greii din industrie Intel și Nvidia nu sunt pe listă.
Tweet

Pentru a realiza acest lucru, HSA va trebui să se bucure de suport din partea mai multor producători de cipuri și furnizori de hardware. În timp ce lista susținătorilor HSA este impresionantă, Intel lipsește în mod evident din acest adevărat cine este cine din industria cipurilor. Având în vedere cota de piață a Intel atât pe piețele de procesoare desktop, cât și pe cele pentru servere, aceasta este o afacere mare . Un alt nume pe care nu îl veți găsi pe listă este Nvidia, care se concentrează pe CUDA și este în prezent liderul pieței de calcul GPU.

Cu toate acestea, HSA nu este conceput exclusiv pentru sisteme și aplicații de înaltă performanță, pe hardware care de obicei prezintă un sticker Intel Inside . HSA poate fi folosit și în dispozitivele mobile eficiente din punct de vedere energetic, unde Intel are o cotă de piață neglijabilă.

Deci, HSA ar trebui să facă viața mai ușoară, dar este încă relevant? Se va prinde? Aceasta nu este o problemă tehnologică, ci una economică. Va depinde de mâna invizibilă a pieței. Așadar, înainte de a continua, să începem prin a arunca o privire mai atentă la locul în care stau lucrurile acum și cum am ajuns aici.

Dezvoltarea HSA, probleme de dentiție și preocupări privind adopția

După cum am spus în introducere, HSA nu este tocmai un concept nou. Acesta a fost inițial conceput de Advanced Micro Devices (AMD), care avea un interes personal să-l dea de la sol. În urmă cu un deceniu, AMD a cumpărat specialiști în grafică ATI, iar de atunci compania a încercat să-și folosească accesul la tehnologia GPU de ultimă oră pentru a crește vânzările generale.

La început, ideea era destul de simplă: AMD nu numai că va continua să dezvolte și să producă GPU-uri discrete de ultimă generație, ci ar integra și tehnologia GPU a ATI în procesoarele sale. Departamentul de marketing al AMD a numit ideea „Fusion”, iar HSA a fost denumită Fusion System Architecture (FSA). Sună grozav, nu? Obținerea unui procesor x86 decent cu grafică integrată bună a sunat ca o idee bună și a fost.

Din păcate, AMD a avut o serie de probleme pe parcurs; Voi evidenția câteva dintre ele:

  • Orice idee bună în tehnologie este obligată să fie preluată de concurenți, în acest caz – Intel.
  • AMD a pierdut avantajul tehnologic în fața Intel și i-a fost din ce în ce mai dificil să concureze pe piața procesoarelor din cauza avansului tehnologic de turnătorie al Intel.
  • Execuția AMD a fost problematică și multe dintre noile procesoare au ajuns cu întârziere pe piață. Altele au fost casate în întregime.
  • Criza economică din 2008 și revoluția mobilă ulterioară nu au ajutat.

Aceștia și o serie de alți factori au conspirat pentru a reduce avantajul AMD și pentru a preveni adoptarea pe piață a produselor și tehnologiilor sale. AMD a început să lanseze procesoare cu noua generație de grafică Radeon integrată la jumătatea anului 2011 și a început să le numească unități de procesare accelerată (APU) în loc de procesoare.

Lăsând la o parte marketingul, prima generație de APU-uri AMD (cu nume de cod Llano), a fost un eșec. Cipurile au întârziat și nu au putut ține pasul cu ofertele Intel. Nici funcțiile HSA serioase nu au fost incluse, dar AMD a început să le adauge în platforma sa din 2012 (Trinity, care a fost în esență Llano făcut corect). Următorul pas a venit în 2014, odată cu introducerea APU-urilor Kaveri, care au suportat gestionarea eterogene a memoriei (GPU IOMMU și CPU MMU au împărțit același spațiu de adrese). Kaveri a adus, de asemenea, mai multă integrare arhitecturală, permițând o memorie coerentă între CPU și GPU (AMD îl numește hUMA, care înseamnă Heterogeneous Unified Memory Access) . Reîmprospătarea ulterioară Carizzo a adăugat și mai multe funcții HSA, permițând procesorului să comute în context sarcinile de calcul pe GPU și să mai facă câteva trucuri.

Viitoarea arhitectură Zen CPU și APU-urile construite pe deasupra, promit să ofere și mai mult, dacă și când apare pe piață.

Deci care este problema?

AMD nu a fost singurul producător de cipuri care a realizat potențialul GPU-urilor on-die. Intel a început să le adauge și la procesoarele sale Core, la fel ca și producătorii de cipuri ARM, astfel încât GPU-urile integrate sunt utilizate în prezent în aproape fiecare smartphone SoC, plus marea majoritate a PC-urilor/Mac-urilor. Între timp, poziția AMD pe piața CPU a fost erodata. Scăderea cotei de piață a făcut ca platformele AMD să fie mai puțin atractive pentru dezvoltatori, companii și chiar pentru consumatori. Pur și simplu nu există atât de multe PC-uri bazate pe AMD pe piață, iar Apple nu folosește deloc procesoare AMD (deși a folosit grafică AMD, în principal datorită compatibilității OpenCL).

AMD nu mai concurează cu Intel pe piața procesoarelor high-end, dar chiar dacă ar face-o, nu ar face o mare diferență în acest sens. Oamenii nu cumpără stații de lucru în valoare de 2.000 USD sau PC-uri pentru jocuri pentru a folosi grafica integrată. Ei folosesc grafică scumpă, discretă și nu le pasă prea mult de eficiența energetică.

Ce zici de niște HSA pentru smartphone-uri și tablete?

Dar asteapta. Dar platformele mobile? Nu ar putea AMD să lanseze soluții similare pentru cipuri pentru smartphone-uri și tablete? Ei bine, nu, nu chiar.

Vedeți, la câțiva ani după achiziția ATI, AMD s-a trezit într-o situație financiară grea, agravată de criza economică, așa că a decis să vândă divizia sa de GPU mobile Imageon către Qualcomm. Qualcomm a redenumit produsele Adreno (anagrama lui Radeon) și a devenit jucătorul dominant pe piața procesoarelor pentru smartphone-uri, folosind GPU-uri interne proaspăt repetate.

După cum unii dintre voi s-ar putea să observați, vânzarea unei ținute de grafică pentru smartphone-uri exact în momentul în care revoluția smartphone-ului era pe cale să demareze, nu arată ca o mișcare de afaceri genială, dar cred că retrospectiv este întotdeauna 20/20.

HSA era asociat doar cu AMD și procesoarele sale x86, dar nu mai este cazul. De fapt, dacă toți membrii Fundației HSA ar începe să livreze procesoare pentru smartphone-uri ARM compatibile cu HSA, ar vinde procesoarele x86 de la AMD de mai multe ori, atât în ​​ceea ce privește veniturile, cât și unitățile livrate. Deci, ce se întâmplă dacă o fac? Ce ar însemna asta pentru industrie și dezvoltatori?

Ei bine, pentru început, procesoarele pentru smartphone-uri se bazează deja pe calcule eterogene, într-un fel. Calculul eterogen se referă de obicei la conceptul de utilizare a diferitelor arhitecturi într-un singur cip și, având în vedere toate componentele găsite pe SoC-urile extrem de integrate de astăzi, aceasta ar putea fi o definiție foarte largă. Ca rezultat, aproape fiecare SoC poate fi considerat o platformă de calcul eterogenă, în funcție de standardele cuiva. Uneori, oamenii chiar se referă la procesoare diferite bazate pe același set de instrucțiuni ca o platformă eterogenă (de exemplu, cipuri mobile cu nuclee ARM Cortex-A57 și A53, ambele fiind bazate pe setul de instrucțiuni ARMv8 pe 64 de biți).

Mulți observatori sunt de acord că majoritatea procesoarelor bazate pe ARM pot fi considerate acum platforme eterogene, inclusiv cipuri Apple din seria A, SoC-uri Samsung Exynos și procesoare similare de la alți furnizori, și anume jucători mari precum Qualcomm și MediaTek.

Dar de ce ar avea cineva nevoie de HSA pe procesoarele smartphone-urilor? Nu este scopul folosirii GPU-urilor pentru calcularea generală pentru a face față sarcinilor de lucru profesionale, nu Angry Birds și Uber?

Da, este, dar asta nu înseamnă că o abordare aproape identică nu poate fi folosită pentru a crește eficiența, care este o prioritate în proiectarea procesoarelor mobile. Așadar, în loc să desfășoare nenumărate sarcini paralelizate pe o stație de lucru high-end, HSA ar putea fi folosit și pentru a face procesoarele mobile mai eficiente și mai versatile.

Puțini oameni se uită îndeaproape la aceste procesoare, de obicei verifică fișa de specificații atunci când cumpără un telefon nou și gata: se uită la numere și mărci. De obicei, nu se uită la soclul SoC în sine, ceea ce ne spune multe și iată de ce: GPU-urile de pe procesoarele de smartphone-uri de ultimă generație ocupă mai mult imobiliare de siliciu decât procesoarele. Având în vedere că sunt deja acolo, ar fi bine să le folosim în alte aplicații decât jocurile, nu-i așa?

Un procesor de smartphone ipotetic, complet compatibil cu HSA, ar putea permite dezvoltatorilor să exploateze acest potențial fără a adăuga prea mult la costurile totale de producție, să implementeze mai multe funcții și să sporească eficiența.

Iată ce ar putea face HSA pentru procesoarele pentru smartphone-uri, cel puțin teoretic:

  • Îmbunătățiți eficiența prin transferarea sarcinilor adecvate pe GPU.
  • Îmbunătățiți performanța prin descărcarea procesorului în unele situații.
  • Utilizați magistrala de memorie mai eficient.
  • Reduceți potențial costurile de producție a cipurilor prin atingerea mai multor siliciu simultan.
  • Introduceți noi funcții care nu au putut fi gestionate de nucleele CPU într-un mod eficient.
  • Eficientizarea dezvoltării în virtutea standardizării.

Sună frumos, mai ales când iei în considerare că este puțin probabil ca dezvoltatorii să piardă mult timp cu implementare. Aceasta este teoria, dar va trebui să așteptăm să o vedem în acțiune și asta poate dura ceva timp.

Cum funcționează HSA oricum?

Am subliniat deja elementele de bază în introducere și ezit să intru în prea multe detalii din câteva motive: nimănui nu-i plac romanele publicate pe un blog de tehnologie, iar implementările HSA pot diferi.

Prin urmare, voi încerca să contur conceptul în câteva sute de cuvinte.

Pe un sistem standard, o aplicație ar descărca GPU-ul de calcul prin transferarea buffer-urilor pe GPU, ceea ce ar implica un apel CPU înainte de a pune în coadă. CPU-ul va programa apoi lucrarea și o va transmite GPU-ului, care o va transmite înapoi CPU-ului după finalizare. Apoi aplicația va primi tamponul, care ar trebui din nou mapat de CPU înainte de a fi gata. După cum puteți vedea, această abordare implică o mulțime de dus-întors.

Arhitecturi diferite pe o singură magistrală de memorie. Raționalizarea este esenta HSA.

Arhitecturi diferite pe o singură magistrală de memorie. Raționalizarea este esenta HSA.
Tweet

Pe un sistem HSA, aplicația ar pune în coadă jobul, procesorul HSA ar prelua controlul, îl va preda GPU-ului, îl va primi înapoi și îl aducea aplicației. Terminat.

Acest lucru este posibil prin partajarea memoriei sistemului direct între CPU și GPU, deși ar putea fi implicate și alte unități de calcul (DSP-uri, de exemplu). Pentru a realiza acest nivel de integrare a memoriei, HSA utilizează un spațiu de adrese virtuale pentru dispozitivele de calcul. Aceasta înseamnă că nucleele CPU și GPU pot accesa memoria în condiții egale , atâta timp cât partajează tabele de pagini, permițând diferitelor dispozitive să facă schimb de date prin pointeri.

Acest lucru este, evident, grozav pentru eficiență, deoarece nu mai este necesară alocarea memoriei GPU-ului și CPU folosind memorie virtuală pentru fiecare. Datorită memoriei virtuale unificate, ambii pot accesa memoria sistemului în funcție de nevoile lor, asigurând o utilizare superioară a resurselor și mai multă flexibilitate.

Imaginați-vă un sistem de consum redus cu 4 GB de RAM, dintre care 512 MB sunt alocați pentru GPU-ul integrat. De obicei, acest model nu este flexibil și nu puteți modifica din mers cantitatea de memorie GPU. Ai rămas blocat cu 256 MB sau 512 MB și atât. Cu HSA, puteți face orice dracu doriți: dacă descărcați o mulțime de lucruri pe GPU și aveți nevoie de mai multă RAM pentru GPU, sistemul o poate aloca. Deci, în aplicațiile legate de grafică, cu o mulțime de active de înaltă rezoluție, sistemul ar putea ajunge să aloce 1 GB sau mai mult RAM la GPU, fără probleme.

Toate lucrurile fiind egale, sistemele HSA și non-HSA vor împărtăși aceeași lățime de bandă de memorie , vor avea acces la aceeași cantitate de memorie , dar sistemul HSA ar putea ajunge să o folosească mult mai eficient, îmbunătățind astfel performanța și reducând consumul de energie. Totul este să obțineți mai mult pentru mai puțin.

La ce ar fi bună calculul eterogen?

Răspunsul simplu? Calculul eterogen, sau HSA ca una dintre implementările sale, ar trebui să fie o alegere bună pentru toate sarcinile de calcul mai potrivite pentru GPU-uri decât pentru procesoare. Dar ce înseamnă asta exact, la ce sunt bune GPU-urile?

GPU-urile moderne, integrate, nu sunt foarte puternice în comparație cu grafica discretă (în special plăcile grafice de gaming de vârf și soluțiile pentru stații de lucru), dar sunt mult mai puternice decât predecesorii lor.

Dacă nu ați urmărit, ați putea presupune că aceste GPU-uri integrate sunt o glumă și ani de zile au fost doar așa: grafică pentru casete ieftine de acasă și de birou. Cu toate acestea, acest lucru a început să se schimbe la începutul deceniului, pe măsură ce GPU-urile integrate s-au mutat din chipset în pachetul CPU și mor, devenind cu adevărat integrate .

Așa arată un procesor AMD în zilele noastre. Încă le numim procesoare, dar GPU-ul ocupă substanțial mai multă suprafață de siliciu decât CPU.

Așa arată un procesor AMD în zilele noastre. Încă le numim procesoare, dar GPU-ul ocupă substanțial mai multă suprafață de siliciu decât CPU.
Tweet

Deși încă neputincioase în comparație cu GPU-urile emblematice, chiar și GPU-urile integrate oferă mult potențial. La fel ca toate GPU-urile, excelează la încărcări cu instrucțiuni unice, date multiple (SIMD) și instrucțiuni unice, fire multiple (SIMT). Dacă trebuie să strângeți o mulțime de numere în încărcări repetitive, paralelizate, GPU-urile ar trebui să vă ajute. Procesoarele, pe de altă parte, sunt încă mai bune la sarcini grele, ramificate.

De aceea, procesoarele au mai puține nuclee, de obicei între două și opt, iar nucleele sunt optimizate pentru procesarea în serie secvențială. GPU-urile tind să aibă zeci, sute și, în plăcile grafice distincte emblematice, mii de nuclee mai mici și mai eficiente. Miezurile GPU sunt proiectate pentru a gestiona mai multe sarcini simultan, dar aceste sarcini individuale sunt mult mai simple decât cele gestionate de procesor. De ce să încărcați CPU-ul cu astfel de încărcări, dacă GPU-ul le poate gestiona cu eficiență și/sau performanță superioară?

Dar dacă GPU-urile sunt atât de bune la asta, de ce nu am început să le folosim ca dispozitive de calcul generale cu ani în urmă? Ei bine, industria a încercat, dar progresul a fost lent și limitat la anumite nișe. Conceptul a fost inițial numit General Purpose Computing on Graphics Processing Units (GPGPU). Pe vremuri, potențialul era limitat, dar conceptul GPGPU era solid și ulterior a fost îmbrățișat și standardizat sub forma CUDA de la Nvidia și OpenCL de la Apple/Khronos Group.

CUDA și OpenCL au făcut o diferență enormă, deoarece le-au permis programatorilor să folosească GPU-urile într-un mod diferit și mult mai eficient. Acestea erau, totuși, specifice vânzătorului. Puteți folosi CUDA pe hardware-ul Nvidia, în timp ce OpenCL era rezervat hardware-ului ATI (și a fost acceptat de Apple). API-ul DirectCompute de la Microsoft a fost lansat cu DirectX 11 și a permis o abordare limitată, independentă de furnizor (dar limitată la Windows).

Să rezumam listând câteva aplicații pentru calcularea GPU:

  • Calcul tradițional de înaltă performanță (HPC) sub formă de clustere HPC, supercomputere, clustere GPU pentru încărcări de calcul, calcul GRID, echilibrare a încărcăturii.

  • Încărcături care necesită fizică , care pot, dar nu trebuie, să implice jocuri sau grafică în general. Ele pot fi, de asemenea, folosite pentru a gestiona calcule de dinamică a fluidelor, fizica statistică și câteva ecuații și algoritmi exotici.

  • Geometrie , aproape tot ce are legătură cu geometrie, inclusiv calcule de transparență, umbre, detectarea coliziunilor și așa mai departe.

  • Procesare audio , folosind un GPU în locul DSP-urilor, procesare a vorbirii, procesare a semnalului analogic și multe altele.

  • Procesarea digitală a imaginilor este pentru care sunt concepute GPU-urile (evident), astfel încât acestea pot fi folosite pentru a accelera postprocesarea și decodarea imaginilor și video. Dacă trebuie să decodați un flux video și să aplicați un filtru, chiar și un GPU entry-level va șterge podeaua cu un procesor.

  • Calcul științific , inclusiv cercetarea climei, astrofizică, mecanică cuantică, modelare moleculară și așa mai departe.

  • Alte sarcini de calcul intensiv , și anume criptarea/decriptarea. Indiferent dacă trebuie să „exploatezi” criptomonede, să criptezi sau să decriptezi datele tale confidențiale, să spargi parole sau să detectezi viruși, GPU-ul te poate ajuta.

Aceasta nu este o listă completă a potențialelor aplicații de calcul GPU, dar cititorii care nu sunt familiarizați cu conceptul ar trebui să își facă o idee generală despre ceea ce face ca GPU să fie diferit. Am omis, de asemenea, aplicații evidente, precum jocurile și grafica profesională.

O listă cuprinzătoare nu există, oricum, deoarece calculul GPU poate fi folosit pentru tot felul de lucruri, de la finanțe și imagistica medicală, la încărcături de baze de date și statistici. Ești limitat de propria ta imaginație. Așa-numita viziune computerizată este o altă aplicație viitoare. Un GPU capabil este un lucru bun dacă trebuie să „învățați” o dronă sau o mașină fără șofer pentru a evita copacii, pietonii și alte vehicule.

Simțiți-vă liber să inserați aici gluma preferată cu Lindsay Lohan.

Dezvoltare pentru HSA: este timpul pentru unele vești proaste

Aceasta poate fi mai degrabă părerea mea personală decât un fapt, dar sunt un credincios HSA. Cred că conceptul are mult potențial, cu condiția să fie implementat corect și să câștige suficient sprijin în rândul producătorilor și dezvoltatorilor de cipuri. Cu toate acestea, progresul a fost dureros de lent, sau poate acesta este doar sentimentul meu, cu un pic de iluzie. Îmi place să văd noile tehnologii în acțiune și sunt orice altceva decât o persoană răbdătoare.

Problema cu HSA este că nu există încă. Asta nu înseamnă că nu va decola, dar poate dura ceva timp. La urma urmei, nu vorbim doar despre noi stive de software; HSA necesită hardware nou pentru a-și face magia. Problema cu aceasta este că o mare parte din acest hardware este încă pe planșa de desen, dar ajungem acolo. Încet.

Din păcate, stiva de soluții HSA include mai mult decât suita standard de instrumente software. Calculul eterogen este o simbioză între software și hardware.

Din păcate, stiva de soluții HSA include mai mult decât suita standard de instrumente software. Calculul eterogen este o simbioză între software și hardware.
Tweet

Acest lucru nu înseamnă că dezvoltatorii nu lucrează la proiecte legate de HSA, dar nu există prea mult interes sau progres, de altfel. Iată câteva resurse pe care ar trebui să le consultați dacă doriți să încercați HSA:

  • HSA Foundation @ GitHub este, evident, locul pentru resursele legate de HSA. Fundația HSA publică și menține o serie de proiecte pe GitHub, inclusiv depanare, compilatoare, instrumente vitale HSAIL și multe altele. Majoritatea resurselor sunt proiectate pentru hardware-ul AMD.

  • Resursele HSAIL furnizate de AMD vă permit să vă faceți o idee mai bună despre specificațiile HSAIL. HSAIL înseamnă HSA Intermediate Language și este, practic, instrumentul cheie pentru scriitorii de compilatori back-end și scriitorii de biblioteci care doresc să vizeze dispozitivele HSA.

  • Manualul de referință al programatorului HSA (PDF) include specificațiile complete HSAIL, plus o explicație cuprinzătoare a limbajului intermediar.

  • Resursele Fundației HSA sunt limitate deocamdată și programul pentru dezvoltatori al fundației „va veni în curând”, dar există o serie de instrumente oficiale pentru dezvoltatori de verificat. Mai important, vă vor oferi o idee bună despre stiva de care veți avea nevoie pentru a începe.

  • Blogul oficial AMD oferă și conținut HSA util.

Acest lucru ar trebui să fie suficient pentru a începe, cu condiția să fiți genul curios. Adevărata întrebare este dacă ar trebui sau nu să te deranjezi pentru început.

Viitorul calculului HSA și GPU

Ori de câte ori acoperim o tehnologie în curs de dezvoltare, ne confruntăm cu aceeași dilemă: ar trebui să le spunem cititorilor să-și petreacă timp și resurse pe ea sau să țină departe, adoptând abordarea așteptați și vedeți?

Am precizat deja că sunt oarecum părtinitoare pentru că îmi place conceptul general de calcul GPU, dar majoritatea dezvoltatorilor se pot descurca fără el, deocamdată. Chiar dacă decolează, HSA va avea un atractiv limitat și nu va preocupa majoritatea dezvoltatorilor. Cu toate acestea, ar putea fi important pe drum. Din păcate pentru AMD, este puțin probabil să schimbe jocul pe piața procesoarelor x86, dar s-ar putea dovedi mai important în procesoarele mobile bazate pe ARM. Poate că a fost ideea AMD, dar companii precum Qualcomm și MediaTek sunt mai bine poziționate pentru a aduce hardware compatibil HSA sute de milioane de utilizatori.

Trebuie să fie o simbioză perfectă între software și hardware. Dacă producătorii de cipuri mobile înnebunesc din cauza HSA, ar fi o mare problemă. O nouă generație de cipuri HSA ar estompa linia dintre nucleele CPU și GPU. Ar împărtăși același bus de memorie în condiții egale și cred că companiile vor începe să le comercializeze diferit. De exemplu, AMD își comercializează deja APU-urile ca „dispozitive de calcul” compuse din diferite „nuclee de calcul” (CPU-uri și GPU-uri).

Cipurile mobile ar putea ajunge să folosească o abordare similară. În loc să comercializeze un cip cu opt sau zece nuclee CPU și așa și așa GPU, producătorii de cipuri ar putea începe să vorbească despre clustere, module și unități. Deci, un procesor cu patru nuclee CPU mici și patru mari ar fi un procesor „dual-cluster” sau „dual-module”, sau un design „tri-cluster” sau „quad-cluster”, dacă iau în considerare nucleele GPU . O mulțime de specificații tehnice tind să devină lipsite de sens în timp, de exemplu, DPI-ul de pe imprimanta de birou sau numărul de megapixeli pe camera ieftină a smartphone-ului.

HSA permite diferitelor arhitecturi să își tragă propria greutate și să facă față sarcinilor extrem de diferite cu o eficiență mai mare.

HSA permite diferitelor arhitecturi să își tragă propria greutate și să facă față sarcinilor extrem de diferite cu o eficiență mai mare.
Tweet

Totuși, nu este doar marketing. Dacă GPU-urile devin la fel de flexibile ca nucleele procesorului și capabile să acceseze resursele de sistem în condiții egale cu procesorul, de ce ar trebui să ne obosim să le numim pe numele lor real? În urmă cu două decenii, industria a încetat să mai folosească coprocesoare matematice (FPU) dedicate când au devenit o componentă obligatorie a fiecărui procesor. Doar câteva cicluri de produs mai târziu, am uitat că au existat vreodată.

Rețineți că HSA nu este singura modalitate de a accesa GPU-urile pentru calcul.

Intel și Nvidia nu sunt la bord, iar abordarea lor este diferită. Intel a intensificat liniștit investițiile în cercetare și dezvoltare în GPU în ultimii ani, iar cele mai recente soluții grafice integrate sunt destul de bune. Pe măsură ce GPU-urile integrate devin mai puternice și ocupă mai multă proprietate imobiliară de siliciu, Intel va trebui să găsească modalități mai ingenioase de a le folosi pentru calcularea generală.

Nvidia, pe de altă parte, s-a retras de pe piața de grafică integrată cu ani în urmă (când a încetat să mai producă chipset-uri pentru PC), dar și-a încercat norocul pe piața procesoarelor ARM cu procesoarele din seria Tegra. Nu au avut un succes uriaș, dar sunt încă folosite în unele hardware, iar Nvidia își concentrează eforturile pe sistemele încorporate, și anume auto. În această setare, GPU-ul integrat își asumă propria greutate, deoarece poate fi utilizat pentru detectarea coliziunilor, navigarea în interior, cartografierea 3D și așa mai departe. Vă amintiți Proiectul Tango de la Google? O parte din hardware se bazează pe cipuri Tegra, permițând detectarea adâncimii și alte câteva trucuri îngrijite. Pe partea opusă a spectrului, linia de produse Tesla a Nvidia acoperă piața de calcul cu GPU de ultimă generație și asigură dominația Nvidiei în această nișă pentru anii următori.

Concluzia? Pe hârtie, GPU computing este un concept grozav cu mult potențial, dar starea actuală a tehnologiei lasă mult de dorit. HSA ar trebui să meargă un drum lung în abordarea majorității acestor probleme. În plus, nu este susținut de toți jucătorii din industrie, ceea ce va încetini în continuare adoptarea.

Poate dura câțiva ani, dar sunt încrezător că GPU-urile se vor ridica în cele din urmă pentru a-și ocupa locul cuvenit în arena informatică generală, chiar și în cipurile mobile. Tehnologia este aproape gata, iar economia se va ocupa de restul. Cum? Ei bine, iată un exemplu simplu. Procesoarele Intel din generația actuală Atom dispun de 12 până la 16 unități de execuție GPU (EU), în timp ce predecesorii lor aveau doar patru UE, bazate pe o arhitectură mai veche. Pe măsură ce GPU-urile integrate devin mai mari și mai puternice și pe măsură ce suprafața lor de matriță crește, producătorii de cipuri nu vor avea de ales decât să le folosească pentru a îmbunătăți performanța și eficiența generală. Nerespectarea acestui lucru ar fi dăunătoare pentru marje și acționari.

Nu vă faceți griji, vă veți putea în continuare să vă bucurați de jocul ocazional pe această nouă generație de GPU. Cu toate acestea, chiar și atunci când nu jucați, GPU-ul va face o mulțime de lucruri în fundal, descarcând procesorul pentru a crește performanța și eficiența.

Cred că putem fi de acord cu toții că ar fi o afacere uriașă, mai ales pe dispozitivele mobile ieftine.

Înrudit: O scurtă prezentare a API-ului Vulkan