Паскарэнне аптымізацыі праграм падчас звязвання

  1. анатацыя
  2. Ключавыя словы

К.Ю. Долгорукова (ІСП РАН, Масква, Расія)
C.В. Аришин (ІСП РАН, Масква, Расія)

анатацыя

У дадзеным артыкуле гаворка ідзе пра два метадах паскарэння працэсу зборкі праграмы: распаралельваннем межпроцедурной аптымізацыі і пра легкаважнымі метадзе правядзення аптымізацый. Паскарэнне ў першым выпадку дасягаецца за кошт гарызантальнага маштабавання сістэмы аптымізацыі часу звязвання. У другім выпадку метад ўяўляе сабой працу выключна на анатацыях, што дазваляе працаваць з мінімальна неабходнай інфармацыяй замест кода ўсёй праграмы цалкам. Праблема гарызантальнай маштабаванасці сістэмы заўсёды звязана з неабходнасцю падзелу вялікі задачы на ​​некалькі подзадач, якія могуць быць выкананы незалежна і паралельна. Маштабаванне аптымізацый часу звязвання - няпростая задача, бо аптымізуюць пераўтварэнні працуюць паслядоўна на ўсім прамежкавым прадстаўленні праграмы, і вынік іх працы залежыць ад папярэдніх пераўтварэнняў. Для аптымізацыі на этапе звязвання неабходна падзяліць прамежкавае ўяўленне кампіляваных праграмы на ўчасткі, мінімізуючы залежнасці паміж імі, і аптымізаваць гэтыя ўчасткі асобна. Для аналізу праграмы выкарыстоўваецца граф выклікаў. Такім чынам, задача зводзіцца да таго, каб падзяліць граф выклікаў на некалькі слаба звязаных адзін паміж іншым кампанент. Дадзеная задача ставіцца да адной са складаных камбінаторныя праблем, і знаходжанне аптымальнага рашэння - NP-поўная задача. Тым не менш, якасць працы алгарытму залежыць ад уласцівасцяў графа, таму мэтазгодна даследаваць ўласцівасці графа выклікаў у кантэксце аптымізацый часу звязвання і падабраць да яго прымальны алгарытм, праверыўшы працу на рэальных праграмах. Асноўная задача дадзенага даследавання - знайсці легкаважны і эфектыўны метад разбіцця структуры праграмы такім чынам, каб як мага менш пагоршыць прадукцыйнасць збіраных праграм пры незалежнай аптымізацыі участкаў кода. У артыкуле прадстаўлены новы метад разбіцця графа выклікаў праграм, праведзена яго параўнанне з некаторымі іншымі існуючымі метадамі для графаў выклікаў тэставых праграм. Таксама апісана рэалізацыя прапанаванага метаду ў сістэме LLVM, прадстаўлены вынікі параўнання прадукцыйнасці праграм, сабраных у адну плынь і ў некалькі патокаў. Запуск на 4-х патоках паказаў паскарэнне працэсу зборкі ў сярэднім на 31%, тады як прадукцыйнасць у параўнанні з сабранымі ў адну плынь праграмамі ўпала ў сярэднім на 3%. Для легкаважнага метаду аптымізацый апісана рэалізацыя пераўтварэнні выдалення мёртвага кода. Таксама прыведзены вынікі тэставання ў сукупнасці з гультаяватай загрузкай кода.

Ключавыя словы

выданне

Працы Інстытута сістэмнага праграмавання РАН, тым 28, вып. 5, 2016, стар. 175-198.

ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).

DOI: 10.15514 / ISPRAS-2016-28 (5) -11

Поўны тэкст артыкула ў фармаце pdf К Вярнуцца да зместу тома