211service.com
Paprastesnis programavimas kelių branduolių kompiuteriams
Su kiekviena karta mikroprocesorių branduolių skaičius padvigubėja, todėl staliniams, nešiojamiesiems kompiuteriams ir galiausiai nešiojamiesiems įtaisams suteikiamas didžiulis skaičiavimo potencialas. Pavyzdžiui, dabartiniai keturių branduolių įrenginiai yra ypač naudingi tokioms skaičiavimo ištroškusioms programoms kaip vaizdo apdorojimas ir žaidimai. Tačiau naujosios kelių branduolių mašinos iš esmės yra mažo masto superkompiuteriai, ir norint visapusiškai išnaudoti jų siūlomą skaičiavimo galią, programinė įranga turi būti kuriama atsižvelgiant į kelis branduolius – tai daug laiko reikalaujanti ir sudėtinga užduotis, žinoma kaip lygiagretusis programavimas. Ir daugelis ekspertų mano, kad jei lygiagretus programavimas nebus lengvesnis, skaičiavimo pažanga sustos.

Supaprastinta programinė įranga: „StreamIt“ yra programinės įrangos kalba ir kompiliatorius, leidžiantis programuotojams lengvai programuoti kelių branduolių įrenginius – užduotį, vadinamą lygiagrečiu programavimu, kuri kitu atveju yra daug laiko ir sudėtinga.
MIT mokslininkai ieško būdo, kaip palengvinti lygiagretaus programavimo skausmą. Jie sukūrė kompiuterinę kalbą ir kompiliatorių – specializuotą įrankį, paverčiantį kalbą į kompiuterio instrukcijas, kurie iš esmės slepia lygiagrečiojo programavimo iššūkius, tačiau naudojasi kelių branduolių galia. Kalba ir kompiliatorius, vadinamas StreamIt , sukūrė Samanas Amarasinghe , MIT elektros inžinerijos ir informatikos profesorius. Šiuo metu „StreamIt“ veikia specializuotoje daugiagyslėje mašinoje, pagamintoje MIT, tačiau šią vasarą „Amarasinghe“ tikisi, kad programinė įranga bus paruošta veikti komerciniuose „IBM“, „Sony“ ir „Toshiba“ lustuose, esančiuose „Sony PlayStation 3“ įrenginiuose.
Kurti programinę įrangą vis dar gali daug žmonių, tačiau jei jiems tektų susidurti su lygiagretumu, tai būtų daug sunkiau, sako Amarasinghe.
Vieno branduolio mašinose programinės įrangos kodas dažniausiai veikia nuosekliai. Tai reiškia, kad užduotys, pvz., prieiga prie tam tikrų atminties dalių, norint atidaryti programą, atliekamos viena po kitos nuspėjamu būdu. Kelių branduolių sistemoje užduotys suskirstomos tarp branduolių. Ir kai skirtingoms užduotims reikia pasiekti tą pačią atminties dalį, užduotys turi veikti kartu, kad būtų kruopščiai suderintos arba sinchronizuotos prieigas. Jei kelios užduotys netyčia pasiekia tuos pačius duomenis be tinkamo sinchronizavimo, duomenys bus sugadinti, o rezultatai bus neteisingi arba programa sugenda.
Vieno branduolio mašinose gana lengva derinti programavimo klaidas arba nenumatytas problemas, nes priežastis gali būti atsekta konkrečioje instrukcijoje. Tačiau Amarasinghe teigia, kad kai kurias klaidas lygiagrečiose sistemose sunkiau ištaisyti, nes jos yra tikimybinės – tai reiškia, kad jos atsiranda tik retkarčiais; kiekvieną kartą, kai programa paleidžiama, keli branduoliai savarankiškai atlieka savo užduotis, todėl programai pateikiami milijardai galimų vykdymo užsakymų.
Amarasinghe sprendimas yra pagrįstas gerai žinoma koncepcija, vadinama duomenų srautu, kai duomenys nuosekliai perduodami tam tikru funkcijų vamzdynu. Duomenų srautui kompiliatorius mato, kurios funkcijos yra nepriklausomos. Taigi, kompiliatorius gali sudėti atskiras užduotis į skirtingus branduolius, nesijaudindamas, kad jos trukdys viena kitai arba palies tą pačią atminties dalį.
Programuotojui tereikia parašyti programinę įrangą, kuri veikia nuosekliai. Kompiliatorius mato visas sąveikas, kurių reikia, remdamasis programuotojo parašytu kodu, ir tinkamai paskirsto instrukcijas, kad neatsirastų klaidų.
Tai gera idėja, pagrįsta gerai žinomomis sąvokomis, sako Bodiko lenktynės , informatikos profesorius Kalifornijos universitete Berklyje. Jei norite, kad programuotojai, kurie nėra paralelizmo ekspertai, būtų produktyvūs, jei norite, kad jie efektyviai rašytų programas, norite suteikti jiems tokią kalbą kaip „StreamIt“, sako jis. Tačiau Bodikas įtaria, kad programinės įrangos inžinieriai turės pasikliauti įvairiais lygiais veikiančių įrankių hierarchija. Pavyzdžiui, operacijų atmintis, leidžianti daugybei užduočių dalytis ta pačia atmintimi vienu metu, galėtų veikti užkulisiuose, padėtų maksimaliai išnaudoti StreamIt potencialą. (Žr. Problemos su kelių branduolių kompiuteriais.)