www.wikidata.uk-ua.nina.az
U teoriyi kompilyatoriv optimizaciya cikliv ce proces zbilshennya shvidkosti vikonannya ta zmenshennya vitrat pov yazanih iz ciklami Optimizaciya cikliv posidaye vazhlive misce v pokrashenni shvidkodiyi keshu cherez efektivne vikoristannya mozhlivostej paralelnoyi obrobki ta zmenshennya vitrat pov yazanih iz vikonannyam cikliv Bilshist chasu vikonannya naukovih ta j velikoyi kilkosti koristuvackih program pripadaye na cikli tomu rozrobleno bagato tehnik optimizaciyi kompilyatora dlya prishvidshennya vikonannya cikliv Zmist 1 Predstavlennya obchislen i peretvoren 2 Optimizaciya za dopomogoyu poslidovnosti peretvoren cikliv 2 1 Shema unimodulyarnogo peretvorennya 2 2 Bagatogranna shema abo shema na osnovi obmezhen 3 Div takozh 4 PrimitkiPredstavlennya obchislen i peretvoren red Oskilki instrukciyi vseredini cikliv mozhut vikonuvatisya bagatorazovo chasto nemozhlivo vstanoviti mezhu kilkosti vikonannya instrukcij na yaki vpline optimizaciya ciklu Ce stvoryuye problemi pid chas ocinyuvannya pravilnosti j perevag optimizaciyi cikliv zokrema podannya optimizovanogo obchislennya ta vikonuvanoyi optimizaciyi 1 Optimizaciya za dopomogoyu poslidovnosti peretvoren cikliv red Optimizaciyu cikliv mozhna rozglyadati yak zastosuvannya poslidovnosti pevnih peretvoren cikliv pererahovanih nizhche abo v dokumenti Peretvorennya kompilyatora dlya visokoproduktivnih obchislen 2 do sircevogo kodu abo promizhnogo podannya en pri comu kozhne peretvorennya maye vidpovidnij test validnosti Peretvorennya abo poslidovnist peretvoren zagalom maye zberigati chasovu poslidovnist usih zalezhnostej shob ne zminiti rezultatu roboti programi tobto buti validnim peretvorennyam V ramkah cogo pidhodu ociniti perevagi peretvorennya abo poslidovnosti peretvoren buvaye dosit skladno oskilki zastosuvannya odnogo korisnogo peretvorennya mozhe vimagati poperednogo zastosuvannya odnogo abo kilkoh inshih peretvoren yaki sami po sobi prizvodyat do znizhennya produktivnosti Do poshirenih peretvoren cikliv nalezhat Rozdilennya en abo rozbittya sproba rozbiti cikl na kilka cikliv na odnomu diapazoni indeksiv ale shob kozhen z novih cikliv mistiv lishe chastinu tila pochatkovogo ciklu Ce mozhe pokrashiti lokalnist posilan en yak na dani yaki dostupni v cikli tak i na kod u tili ciklu Zlittya en abo ob yednannya polyagaye v ob yednanni til dvoh susidnih cikliv yaki povtoryuyutsya odnakovu kilkist raziv nezalezhno vid togo chi vidome ce chislo pid chas kompilyaciyi yaksho voni ne posilayutsya na dani odin odnogo Obmin en abo perestanovka obmin miscyami vnutrishnogo ta zovnishnogo cikliv Koli zminni ciklu indeksuyut masiv take peretvorennya mozhe pokrashiti lokalnist posilan zalezhno vid strukturi masivu Inversiya metod za yakogo cikl z peredumovoyu zaminyuyut ciklom z pislyaumovoyu vkladenij v umovnij operator zmenshuyuchi kilkist perehodiv na dva dlya vipadkiv koli cikl vikonuyetsya Pri comu dublyuyetsya perevirka umovi zrostaye obsyag kodu ale zrostaye efektivnist oskilki stribki zazvichaj viklikayut zupinku konveyera en Krim togo yaksho pochatkova umova vidoma pid chas kompilyaciyi i vidomo sho nemaye pobichnih efektiv pochatkovu perevirku umovi mozhna opustiti Vinesennya invariantnogo kodu za mezhi ciklu en mozhna znachno pidvishiti efektivnist pribravshi z tila ciklu i rozmistivshi pered ciklom obchislennya velichin odnakovih dlya kozhnoyi iteraciyi ciklu tobto invariantiv ciklu Ce osoblivo vazhlivo dlya viraziv dlya obchislennya adresi vikoristovuvanih u ciklah za masivami Dlya pravilnoyi realizaciyi cej prijom slid vikoristovuvati z inversiyeyu oskilki ne ves kod bezpechno peremishati za mezhi ciklu Rozparalelyuvannya en ce okremij vipadok avtomatichnogo rozparalelyuvannya sho fokusuyetsya na ciklah zminyuyuchi yih dlya efektivnoyi roboti v bagatoprocesornih sistemah Ce mozhna zrobiti avtomatichno kompilyatorami avtomatichne rozparalelyuvannya abo vruchnu vstavlyayuchi direktivi rozparalelyuvannya taki yak OpenMP Rozvorot tonka optimizaciya yaka zminyuye poryadok u yakomu znachennya prisvoyuyutsya zminnij indeksu Ce mozhe dopomogti usunuti zalezhnosti en i takim chinom umozhliviti inshi optimizaciyi Deyaki arhitekturi vikoristovuyut ciklichni konstrukciyi na rivni zbirki v yakih vidlik vedetsya lishe v odnomu napryamku napriklad decrement jump if not zero DJNZ 3 Planuvannya en ce podil ciklu na kilka chastin yaki mozhut vikonuvatisya odnochasno na kilkoh procesorah Perekos en cya tehnika zastosovuyetsya do vkladenogo ciklu sho vikonuye iteraciyu za bagatovimirnim masivom de kozhna iteraciya vnutrishnogo ciklu zalezhit vid poperednih iteracij i zminyuye poryadok dostupu do masivu tak shob zalezhnosti buli lishe mizh iteraciyami zovnishnogo ciklu Programnij konveyer en tip pozachergovogo vikonannya iteracij ciklu shob prihovati zatrimki funkcionalnih blokiv procesora Rozsheplennya abo zlushennya ce sproba sprostiti cikl abo usunuti zalezhnosti rozbivshi jogo na kilka cikliv yaki mayut odnakovi tila ale perebirayut rizni chastini diapazonu indeksiv Okremij vipadok ce zlushennya ciklu yake dozvolyaye sprostiti cikl iz problemnoyu pershoyu iteraciyeyu vikonavshi cyu iteraciyu okremo pered vhodom u cikl Gnizdova optimizaciya en reorganizuye cikl dlya opracyuvannya blokiv danih yaki pomishayutsya v kesh Vektorizaciya en sproba odnochasno zapustiti yakomoga bilshe iteracij ciklu v sistemi SIMD Rozmotuvannya dublyuye tilo ciklu kilka raziv shob zmenshiti kilkist perevirok umovi ciklu ta kilkist stribkiv yaki mozhut zniziti produktivnist cherez pogirshennya roboti konveyera instrukcij Povne rozmotuvannya ciklu usuvaye vsi nakladni vitrati krim vibirki kilkoh instrukcij i zbilshennya chasu zavantazhennya programi ale vimagaye shob kilkist iteracij bula vidomoyu pid chas kompilyaciyi krim vipadku JIT kompilyaciyi Neobhidno takozh podbati pro te shob bagatorazovij pererahunok indeksovanih zminnih ne vimagav bilshih vitrat nizh prosuvannya pokazhchikiv u pochatkovomu cikli Rozmikannya en peremishuye umovnij operator z tila ciklu nazovni kopiyuyuchi tilo ciklu ta rozmishuyuchi jogo versiyu v kozhnij z gilok yaksho ta inakshe Sekciyuvannya en abo strip majning zaprovadzhene dlya vektornih procesoriv sekciyuvannya ciklu ye tehnikoyu jogo peretvorennya dlya umozhlivlennya SIMD koduvannya cikliv i pidvishennya produktivnosti pam yati Ce zabezpechuye sho kozhna vektorna operaciya vikonuyetsya nad vektorom rozmir yakogo menshij abo rivnij najbilshij dovzhini vektora danoyi vektornoyi mashini 4 5 Shema unimodulyarnogo peretvorennya red Unimodulyarne peretvorennya 6 vikoristovuye odnu unimodulyarnu matricyu dlya opisu kombinovanogo rezultatu poslidovnosti bagatoh z perelichenih vishe peretvoren Centralnim u comu pidhodi ye poglyad na mnozhinu vsih vikonan operatora v mezhah n cikliv yak na nabir cilih tochok u n vimirnomu prostori prichomu tochki vikonuyutsya v leksikografichnomu poryadku Napriklad vikonannya operatora vkladenogo v zovnishnij cikl z indeksom i ta vnutrishnij cikl z indeksom j mozhna pov yazati z parami cilih chisel i j displaystyle i j nbsp Zastosuvannya unimodulyarnogo peretvorennya vidpovidaye mnozhennyu tochok u comu prostori na matricyu Napriklad zamina dvoh cikliv vidpovidaye matrici 0 1 1 0 displaystyle begin bmatrix 0 amp 1 1 amp 0 end bmatrix nbsp Unimodulyarne peretvorennya ye validnim yaksho vono zberigaye chasovu poslidovnist usih zalezhnostej vimiryati vpliv unimodulyarnogo peretvorennya na produktivnist skladnishe Neidealno vkladeni cikli ta deyaki peretvorennya napriklad gnizdove nelegko vpisuyutsya v cyu strukturu Bagatogranna shema abo shema na osnovi obmezhen red Poliedralna model en 7 opracovuye shirshij klas program i peretvoren nizh unimodulyarna shema Mnozhina vikonan naboru operatoriv u mezhah mozhlivo neidealno vkladenogo naboru cikliv rozglyadayetsya yak ob yednannya naboru politopiv yaki podayut vikonannya operatoriv Do cih politopiv zastosovuyut afinni peretvorennya yaki dayut opis novogo poryadku vikonannya Mezhi politopiv zalezhnosti danih i peretvorennya chasto opisuyutya za dopomogoyu sistem obmezhen i cej pidhid chasto nazivayut pidhodom do optimizaciyi cikliv na osnovi obmezhen Napriklad odin operator u zovnishnomu cikli for i 0 to n i vnutrishnomu cikli for j 0 to i 2 vikonuyetsya odin raz dlya kozhnoyi pari i j tak sho 0 lt i lt n i 0 lt j lt i 2 Znovu zh taki peretvorennya ye validnim yaksho vono zberigaye chasovu poslidovnist usih zalezhnostej Ocinka perevag peretvorennya abo poshuk najkrashogo peretvorennya dlya danogo kodu na danomu komp yuteri zalishayutsya predmetom potochnih doslidzhen na moment napisannya ciyeyi statti 2010 Div takozh red Masshtabovanij paralelizmPrimitki red U knizi Reasoning About Program Transformations Zhan Fransua Kollar dokladno obgovoryuye zagalni pitannya podannya vikonannya program a ne tekstu programi v konteksti statichnoyi optimizaciyi David F Bacon Susan L Graham and Oliver J Sharp Compiler transformations for high performance computing Report No UCB CSD 93 781 Computer Science Division EECS University of California Berkeley Berkeley California 94720 November 1993 dostupna na CiteSeer Navedeno analiz kompilyatora takij yak analiz zalezhnosti danih i mizhprocedurnij analiz a takozh duzhe povnij spisok peretvoren cikliv 8051 Instruction Set www win tue nl Procitovano 9 grudnya 2019 Intel Developer Zone 7 6 3 1 Strip Mining Sun Studio 12 Fortran Programming Guide Steven S Muchnick Advanced Compiler Design and Implementation 1997 Morgan Kaufmann V rozdili 20 4 2 obgovoryuyetsya optimizaciya cikliv R Allen and K Kennedy Optimizing Compilers for Modern Architectures Morgan Kaufmann 2002 Otrimano z https uk wikipedia org w index php title Optimizaciya cikliv amp oldid 35162272