Deci, dacă sunteți în căutarea de informații cu privire la modul de abordare a programării paralele, dor de la începutul articolului și du-te la sfârșitul anului.
programare
Aceasta este, în general, această activitate? Aproximativ vorbind, programul - o secvență de instrucțiuni pentru un computer. Mai mult decât atât, instrucțiunile clare, ar trebui să fie formalizate. Programul clasic primește date despre intrare, procesele și produce ceva în răspuns. De fapt, odată ce singura modalitate de a programa și ar putea interacționa, iar codul de program a fost introdus pe o cartelă perforată.
software-ul modern, desigur, de lucru nu numai în acest mod. Cele mai multe programe (în special de utilizator centric), au front-end - o fereastră care se asteapta actiuni - intrarile de la tastatura, introducere de date, sau orice altceva. Dar iată ce se întâmplă atunci când apăsați o tastă, de obicei, foarte similar cu programul de acțiune clasic - secvența de instrucțiuni. Apoi, ecranul va apărea rezultatul.
Programare - se poate spune, o încercare de a organiza haos. Știi ce ar trebui să se întâmple pe ecran, care trebuie să fie păstrate, dar aceste concepte sunt vagi. Acum, sarcina dumneavoastră - pentru a traduce aceste concepte într-un limbaj strict cod formal. software de aplicație se poate transforma într-o corvoada. Dacă sunteți de o sută de ori efectuate deja aceste sarcini, o faci într-o sută în primul rând pe mașină. Dar programarea științifică ca art. Programare pentru știință, niciodată nu sunteți sigur că linia este corectă, că modelul selectat funcționează mai bine decât celelalte, sau locul de muncă, la toate.
Programarea concurentă
Deoarece rezultatul de afișare pe ecran este clar. Dar iată acțiunea pe care programul ar trebui să producă o „în spatele scenei“, uneori, să ia o lungă perioadă de timp. O întrebare firească pentru dezvoltator - cum să accelereze punerea în aplicare a programului? Desigur, putem sfătui utilizatorul să folosească un calculator mai rapid, dar această soluție este foarte limitată, iar viteza de calculatoare este acum ușor în creștere. Dar această creștere - numărul de nuclee de pe calculator.
Ce oferă aceste nuclee? Posibilitatea de a rula mai multe programe, în mod independent, astfel încât acestea să nu interfereze unul cu celălalt. Pe computer quad, puteți rula simultan patru programe liniare care necesită o încărcare completă, iar performanța nu va cădea. Se pune întrebarea: este posibil să facă acest lucru, astfel încât un program funcționează de patru ori mai repede?
răspuns global - nr. Nu există nici o cale mistică de a face programul să ruleze mai rapid, pur și simplu, din cauza faptului că procesorul are mai multe nuclee. De ce? Da, pentru că programul - o secvență de instrucțiuni. Calculatorul nu va fi capabil să înțeleagă care dintre ele urmează să fie efectuate simultan.
Paralelizare a programului - aceasta este o sarcină pentru dezvoltator. Și sarcina destul de dificil, o mulțime de complexitate depășind de programare clasice. Pentru a începe, programatorul trebuie să decidă ce părți ale programului poate fi rulat în același timp, unele scheme de paralelizare pentru a alege modul în care interacționează piesele.
Una dintre cele mai dificile probleme în proiectarea programelor paralele - este de depanare. Faptul că rulează de două ori programul în acest mod, putem obține cu ușurință rezultate diferite. Doar bucăți de cod care se execută în mod independent, pot fi realizate la viteze diferite, în funcție de care a primit mai mult timp în sistemul de operare. Si din aceasta cauza, diferite evenimente pot apărea în diferite comenzi, având ca rezultat faptul că, uneori, există o problemă, și, uneori, - nu.
În cazul în care programarea convențională - este crearea logicii rigide, paralela - este gestionarea unei turme de oi, care se comportă impredictibil. Toate apar în mod necesar situația imaginabil viclean. Iar creierul trebuie să fie ramificată în părți paralele, și în același timp, imaginați-vă ce s-ar întâmpla dacă această ramură va face acest lucru, iar acest lucru - în acest fel.
Dacă aveți de gând să faci programarea paralelă, recomand să o fac în C, plus instalați Linux pe computer. Există câteva opțiuni.
Oricum, pentru viitorul programării paralele. Programele intensive dezvoltatorii ar trebui să participe cu siguranță la algoritmii lor paralelizarea.