Kompiuterinė programa, galinti taisyti pasenusį programinį kodą

Prieš metus Masačūsetso technologijos instituto (MIT) kompiuterių mokslininkai ir kompanijos „Adobe“ inžinieriai nutarė pamėginti kartu išspręsti didelę problemą, su kuria susiduria daugelis programinę įrangą kuriančių įmonių ir programuotojų – programinio kodo taisymus, atsiradus naujai aparatinei įrangai.

Geras pavyzdys yra „Adobe Photoshop“ grafinio redagavimo programa, kuri neseniai atšventė savo 25-ąjį gimtadienį. Per tuos metus joje sukaupė krūvos kodų, kurie buvo parašyti ir optimizuoti veikti su aparatine įranga, tokia kaip grafikos vaizdo plokštės, koprocesoriai, kurie dabar visiškai pasenę ir nebenaudojami.

 

„Norint, kad programa veiktų dideliu našumu, ypač apdorojant vaizdą, reikia optimizuoti programinį kodą, pritaikant jį atitinkamai aparatinei įrangai“, teigia Saman Amarasinghe, MIT kompiuterių mokslo ir dirbtinio intelekto laboratorijos (Computer Science and Artificial Intelligence Laboratory , CSAIL) tyrėjas. „Tačiau čia ir atsiranda problema – optimizuotas kodas tampa daug sunkiau suprantamas, o pasikeitus įrangai – ir daug mažiau veiksmingas.“

Tai lemia, kad atsiranda „milijardo dolerių problema“ – pavyzdžiui, „Adobe“ kas kelerius metus turi skirti daug resursų, pirmiausia programuotojų ir inžinierių darbo laiko; jie turi išanalizuoti ir perrašyti anksčiau sukurtą programinį kodą, kad jis vėl veiktų efektyviai. Iš esmės tai daroma rankiniu būdu.

 

Todėl MIT ir „Adobe“ nutarė pamėginti sukurti tokią kompiuterinę programą, kuri pati automatiškai analizuoti senąjį kodą, o programuotojai ir inžinieriai galėtų sutelkti dėmesį į svarbesnius uždavinius, pavyzdžiui, naujos programinės įrangos kūrimą.

 

Šio darbo rezultatas – programa „Helium“, šį darbą atliekanti analizuodama ir perrašydama tiesiog dvejetainį kodą, be originalaus programos šaltinio, per kelias valandas ar net minutes.

 

Komanda pradėjo nuo gana paprastų programos modulių dvejetainių kodų, tokių kaip branduolio šablonų (angl. stencil kernels), kurie leidžia programai dirbti su ištisomis pikselių sritimis. Šiuos modulius yra ypač svarbu atnaujinti, nes jie naudoja didelius atminties kiekius ir atlieka daug skaičiavimų, todėl naudoja ir daug procesoriaus resursų bei energijos. Tačiau kai tik atsiranda nauja aparatinė įranga, jie tampa beviltiškai pasenusiais.

 

Programa „Helium“ paverčia dvejetainius kodus aukštesnio lygio programine kalba, kuri jau suprantama kitai programai – „Halide“, orientuotai į vaizdo apdorojimą.

 

Konvertavimas iš dvejetainio kodo į aukštesnio lygio kalbą buvo didelis pasiekimas, o jį pavyko pasiekti todėl, kad branduolio šablonai atlieka tuos pačius skaičiavimus daugelį kartų, todėl galima sukaupti pakankamai duomenų, leidžiančių atkurti pradinį algoritmą.

 

„Halide“ jau gali keisti programos komandas, atsižvelgdama į naujos įrangos charakteristikas ir vėl paversti jas dvejetainiais kodais, o tada „Helium“ pakeičia pasenusį programos dvejetainį kodą optimizuotu.elium

Pasirodė, kad „Helium“ gali pagerinti tam tikrų „Photoshop“ filtrų efektyvumą 75 procentais, o mažiau optimizuotų programų, tokių kaip grafikos redaktorius„IrfanView“, veikiantis Windows operacinėje sistemoje– net 400-500 procentų.

 

„Mes pastebėjome, kad „Helium“ gali padaryti atnaujinimus per vieną dieną, kai maždaug 100 žmonių tą patį darbą darytų daugiau nei tris mėnesius“, sako Amarasinghe. „Įsivaizduokite, kiek tai leistų sutaupyti, ypač atsižvelgiant į tai, kad šie resursai galėtų būti nukreipti kitoms problemoms spręsti ar naujoms programoms kurti“.

 

Be to, „Helium“ ateityje galės palengvinti kurti programinį kodą, kuris veiktų įvairiose operacinėse sistemose – tai yra padėti perkelti programas į kitas platformas, tokias kaip „Android“ ar MAC OS.

 

Dar vienas netikėtas šio darbo šalutinis produktas – jis leidžia pamatyti įvairias gudrybes, kurias anksčiau naudojo programuotojai, norėdami optimizuoti savo algoritmus.

 

Šaltinis: MIT News

Palikti atsiliepimą

El. pašto adresas nebus skelbiamas.