Որպես հետազոտական նախագծի մի մաս
Փորձարկման համար
Հաջորդ փուլում նախատեսվում է նաև միջգործընթացային RTL օպտիմալացումները տեղափոխել առանձին թելեր՝ հաշվի առնելով ապարատային հարթակի բնութագրերը։ Դրանից հետո մենք նախատեսում ենք իրականացնել ֆունկցիայի ներսում կոդի վրա կիրառվող ներգործընթացային օպտիմալացումների (IPA) զուգահեռացում՝ անկախ զանգի առանձնահատկություններից։ Առայժմ սահմանափակող օղակը աղբահանողն է, որն ավելացրել է գլոբալ կողպեք, որն անջատում է աղբի հավաքման գործողությունները բազմաթելային ռեժիմով աշխատելիս (ապագայում աղբահավաքիչը կհարմարեցվի GCC-ի բազմաթելային կատարման համար):
Կատարման փոփոխությունները գնահատելու համար պատրաստվել է թեստային փաթեթ, որը հավաքում է gimple-match.c ֆայլը, որը ներառում է ավելի քան 100 հազար տող կոդ և 1700 գործառույթ։ 5 ֆիզիկական միջուկներով և 8250 վիրտուալ (Hyperthreading) Intel Core i4-8U պրոցեսորով համակարգի վրա փորձարկումները ցույց են տվել Intra Procedural GIMPLE օպտիմալացումների կատարման ժամանակի նվազում 7-ից 4 վայրկյան, երբ աշխատում է 2 թեմա և մինչև 3 վայրկյան, երբ աշխատում է 4-ը: թելեր, այսինքն. Դիտարկվող հավաքման փուլի արագության աճը ձեռք է բերվել համապատասխանաբար 1.72 և 2.52 անգամ: Թեստերը նաև ցույց են տվել, որ Hyperthreading-ով վիրտուալ միջուկների օգտագործումը չի հանգեցնում կատարողականի բարձրացման:
Ընդհանուր կառուցման ժամանակը կրճատվել է մոտավորապես 10%-ով, սակայն, ըստ կանխատեսումների, RTL-ի օպտիմալացումների զուգահեռացումը թույլ կտա ավելի շոշափելի արդյունքների հասնել, քանի որ այս փուլը զգալիորեն ավելի շատ ժամանակ է պահանջում կազմման ընթացքում: Մոտավորապես RTL-ի զուգահեռացումից հետո հավաքման ընդհանուր ժամանակը կկրճատվի 1.61 անգամ: Դրանից հետո հնարավոր կլինի կրճատել կառուցման ժամանակը ևս 5-10%-ով՝ զուգահեռելով IPA-ի օպտիմալացումները։
Source: opennet.ru