Site-uri

Solicitarea de paralelism este o aplicație ucigașă pentru adoptarea în masă

Tutorial fps boost FiveM 2020

Tutorial fps boost FiveM 2020
Anonim

Adăugarea de nuclee multiple la microprocesoare a creat o oportunitate semnificativă pentru programarea paralelă, dar este nevoie de o aplicație ucigașă pentru a împinge conceptul în mainstream, au declarat cercetătorii în cadrul unei discuții la conferința Hot Chips.

Cele mai multe programe de astăzi sunt încă scrise pentru execuția secvențială, iar modelele de programare trebuie să se schimbe pentru a profita de hardware-ul mai rapid și de un număr din ce în ce mai mare de jetoane pe jetoane. Programatorii trebuie să scrie coduri într-un mod care să permită împărțirea și executarea sarcinilor simultan pe mai multe nuclee și fire.

O mulțime de focalizare și bani au mers în construirea de mașini rapide și limbi de programare mai bune, a spus David Patterson, un calculator profesor universitar la Universitatea din California, Berkeley, la conferința de la Stanford, luni. În mod comparativ, puțină atenție a fost acordată scrierii de programe desktop în paralel, dar aplicații cum ar fi jocuri și muzică ar putea schimba acest lucru. Utilizatorii unor astfel de programe necesită cea mai bună performanță în timp real, astfel încât programatorii ar putea fi nevoiți să adopte modele care descompun sarcini pe mai multe fire și fire.

De exemplu, forme noi de paralelism ar putea îmbunătăți calitatea muzicii redate pe PC și smartphone-uri, a spus Patterson. Codul care face o treabă mai bună de separare a canalelor și instrumentelor ar putea genera în cele din urmă sunet prin interacțiune paralelă.

Universitatea din California, Berkeley, dispune de un laborator de calcul paralel unde cercetătorii încearcă să înțeleagă modul în care sunt utilizate aplicațiile, pentru dispozitive portabile. Un proiect urmărește să aducă navigarea în calitate de desktop în dispozitive portabile, prin optimizarea codului bazat pe sarcini specifice, cum ar fi redarea și parsarea paginilor. Un alt proiect implică optimizarea codului pentru recuperarea mai rapidă a informațiilor despre sănătate. Laboratorul este finanțat în principal de către Intel și Microsoft.

Cercetătorii de la Berkeley încearcă să aducă paralelism prin înlocuirea unor biți de cod scrise inițial folosind limbi de scriptare precum Python și Ruby on Rails cu noul cod C de nivel scăzut. Noul cod se concentrează în mod special pe anumite sarcini, cum ar fi analizarea unui anumit tip de voce într-o aplicație de recunoaștere a vorbirii, a declarat Patterson într-un interviu miercuri. Codul este scris folosind OpenMP sau MPI, interfețe de programare a aplicațiilor concepute pentru a scrie aplicații paralele la nivel de mașină.

Experții trebuie să scrie acest cod paralel foarte specializat, a spus Patterson. Acesta reduce timpul de programare pentru programatorii care altfel ar folosi Python și Ruby on Rails, ceea ce face dezvoltarea aplicațiilor mai ușoară, dar nu se concentrează pe paralelism, a spus Patterson în interviu. Laboratorul a arătat o sarcină specifică de executare a sarcinii cu un factor de 20 cu codul mașinii de nivel inferior.

Conceptul de paralelism nu este nou și a fost în mare parte domeniul computerizării de înaltă performanță. Niveluri scăzute de paralelism au fost întotdeauna posibile, dar programatorii s-au confruntat cu o sarcină descurajantă, cu o lipsă de instrumente software și medii hardware mereu în schimbare.

"Firele trebuie sincronizate corect", a declarat Christos Kozyrakis, profesor de inginerie electrică și informatică de la Universitatea Stanford, în timpul unei prezentări anterioare discuției în grup. Codul trebuie să fie scris într-o formă care se comportă previzibil și se măsoară ca mai multe nuclee devin disponibile.

Compilatorii trebuie, de asemenea, să devină mai inteligenți și să fie suficient de perceptivi pentru a rupe firele la timp, astfel încât ieșirile să fie primite într-o ordine corectă, a spus Kozyrakis. Încercările greșite de a construi paralelismul în cod ar putea crea software buggy dacă calculele specifice nu sunt executate într-o anumită ordine. Aceasta este o problemă frecvent menționată drept condiții de rasă. Coderii ar putea, de asemenea, să aibă nevoie să învețe cum să folosească mai multe instrumente de programare pentru a atinge nivele mai fine de paralelism, au spus participanții.

"Nu există o abordare leneș-băiat la programare", a spus Patterson la conferință.

Memoria și latența de rețea au creat blocaje în transferul de date, ceea ce ar putea nega performanța obținută prin executarea sarcinilor paralele. Există, de asemenea, diferite instrumente de programare pentru diferite arhitecturi, ceea ce face dificilă exploatarea tuturor hardware-ului disponibil.

Multe instrumente de paralelism disponibile astăzi sunt proiectate pentru a valorifica capacitățile de procesare paralelă a procesoarelor și a unităților de procesare grafică pentru a îmbunătăți performanța sistemului. Apple, Intel, Nvidia și Advanced Micro Devices se numără printre companiile care promovează OpenCL, un mediu de programare paralel care va fi susținut în viitorul sistem de operare Mac OS X 10.6, denumit și Snow Leopard, care urmează să fie lansat vineri. OpenCL concurează cu Microsoft, care promovează propriile instrumente de programare paralelă DirectX și Nvidia, care oferă cadrul CUDA.

OpenCL include un limbaj de programare asemănător cu AP (interfețe de programare a aplicațiilor) pentru a gestiona distribuția kernelurilor ca nuclee de procesare și alte resurse. OpenCL ar putea ajuta sistemul Mac OS să decodeze mai rapid videoclipul prin distribuirea procesării pixelilor în mai multe unități de procesare și grafică într-un sistem.

Toate instrumentele existente sunt orientate către diferite medii software și profită de diferite resurse, a spus Patterson. OpenCL, de exemplu, este orientat mai mult spre executarea sarcinilor pe GPU-uri. Modelele proprietare precum DirectX sunt greu de instalat pe medii de calcul eterogene, în timp ce unele modele, cum ar fi OpenCL, se adaptează doar mediilor specifice care se bazează pe unitățile de procesare grafică.

"Nu cred că [OpenCL] va fi îmbrățișat în toate arhitecturile. Patterson a spus. "Între timp avem nevoie să încercăm și alte lucruri", cum ar fi încercarea de a îmbunătăți modelele de programare cu instrumente de dezvoltare utilizate în mod obișnuit, cum ar fi Ruby on Rails, a spus el.

În timp ce membrii publicului au subliniat că paralelismul a fost o problemă pentru decenii, participanții la conferință au declarat că universitățile se îndreaptă acum spre o nouă abordare a lucrărilor pe mai multe instrumente de programare pentru a permite paralelismul. După ani de finanțare a dezvoltării de cipuri, guvernul acordă o atenție sporită procesării paralele prin programe de finanțare.

Kozyrakis a declarat că Stanford a înființat un laborator care are ca scop "dezvoltarea practică a aplicațiilor paralele pentru [mase]" până în 2012, Iar cercetătorii lucrează cu companii ca Intel, AMD, IBM, Sun, Hewlett-Packard și Nvidia.

Un test de sarcină imediat pentru dezvoltatori ar putea fi încercarea de a transforma codul moștenit existent în paralel pentru a fi executat pe chips-uri moderne, Berkesley's Patterson a spus. Câteva companii oferă o paralelizare automată, dar rescrierea și compilarea codului moștenit inițial scris pentru executarea secvențială ar putea fi o mare provocare.

"Exista bani în acele zone", a spus Patterson.