Profil tomonidan boshqariladigan optimallashtirish - Profile-guided optimization

Profil tomonidan boshqariladigan optimallashtirish (PGO, ba'zan shunday talaffuz qilinadi pogo[1]), shuningdek, nomi bilan tanilgan profilga yo'naltirilgan qayta aloqa (PDF),[2] va teskari yo'naltirilgan optimallashtirish (FDO)[3] a kompilyatorni optimallashtirish texnikasi kompyuter dasturlash ishlatadigan profil yaratish dasturni takomillashtirish ish vaqti ishlashi.

Usul

Asoslangan optimallashtirish texnikasi statik dastur tahlili ning manba kodi dasturni aslida bajarmasdan kodning yaxshilanishini ko'rib chiqing. Yo'q dinamik dastur tahlili amalga oshiriladi. Tahlil hatto kodni ko'rib chiqishi mumkin ko'chadan tsiklning necha marta bajarilishini, shu jumladan tsiklni ochish. Ish vaqti haqida ma'lumot bo'lmasa, statik dastur tahlili ushbu kod qismi qanchalik tez-tez bajarilishini hisobga olmaydi.

Deb tanilgan birinchi yuqori darajadagi kompilyator Fortran avtomatik kodlash tizimi 1957 yilda kodni bloklarga ajratib qo'ydi va har bir blok chastotalar jadvalini tuzdi, bu kodning simulyatsiya qilingan bajarilishi orqali Monte-Karlo shartli o'tkazmalarning natijasi (orqali) IF-tip bayonlari) a bilan aniqlanadi tasodifiy sonlar generatori har qanday narsaga mos ravishda tortilgan Tezlik bayonotlar dasturchi tomonidan taqdim etilgan.[4]

Dasturchilar tomonidan taqdim etilgan chastotali ma'lumotlardan ko'ra, profil tomonidan boshqariladigan optimallashtirish test sinovlarining profil natijalaridan foydalanadi asbobli dastur finalni optimallashtirish uchun yaratilgan kod.[5][6][7] Kompilyator dastur ma'lumotlarining namunaviy to'plamidan vakili kirish to'plami bo'yicha foydalanadi. Natijalar dasturning qaysi sohalari tez-tez va qaysi sohalar kamroq bajarilishini ko'rsatadi. Barcha optimallashtirishlar profilga asoslangan fikr-mulohazalardan foydalanadi, chunki ular kamroq ishonishadi evristika kompilyatsiya qarorlarini qabul qilishda. Biroq, ogohlantirish shundan iboratki, profil yaratish bosqichida dasturga berilgan ma'lumotlar namunasi odatdagi foydalanish stsenariylarini statistik jihatdan ifodalashi kerak; aks holda, profil tomonidan boshqariladigan mulohazalar takomillashtirish o'rniga yakuniy qurilishning umumiy ishlashiga zarar etkazishi mumkin.

Vaqti-vaqti bilan tuzilgan kompilyatsiya dan foydalanishlari mumkin ish vaqti yanada samarali mahalliy kodni yaratish uchun bajarilgan kodning qismlarini dinamik ravishda qayta kompilyatsiya qilish uchun ma'lumot. Agar bajarilish paytida dinamik profil o'zgarsa, u avvalgi mahalliy kodni deoptizatsiyalashi va yangi profil ma'lumotlari bilan optimallashtirilgan yangi kodni yaratishi mumkin.

Farzandlikka olish

Qurishni qo'llab-quvvatlash mavjud Firefox PGO dan foydalanish.[8] Garchi PGO samarali bo'lsa ham, uning zerikarli dual-kompilyatsiya modeli tufayli dasturiy ta'minot loyihalari tomonidan keng qo'llanilmagan.[9] Shuningdek, profil yordamida profil to'plash orqali PGO ni asbobsozliksiz bajarish mumkin apparatning ishlash ko'rsatkichlari.[9] Ushbu namuna olishga asoslangan yondoshish xarajatlari ancha past va maxsus kompilyatsiya talab qilinmaydi.

The HotSpot Java virtual mashinasi (JVM) mahalliy kodni dinamik ravishda yaratish uchun profil tomonidan boshqariladigan optimallashtirishdan foydalanadi. Natijada, dasturiy ikkilik haqiqiy uchun optimallashtirilgan yuk qabul qilmoqda. Agar yuk o'zgarsa, adaptiv optimallashtirish mumkin dinamik ravishda kompilyatsiya qilish uni yangi yuk uchun optimallashtirish uchun ishlaydigan dastur. Bu shuni anglatadiki, HotSpot JVM-da ishlaydigan barcha dasturiy ta'minot profilni optimallashtirishdan samarali foydalanadi.[10]

PGO qabul qilingan Microsoft Windows versiyasi Gugl xrom. PGO yoqilgan 64-bit 53 versiyasi va 54 versiyasi bilan boshlangan Chrome nashri 32-bit nashr.[11]

Amaliyotlar

PGO-ni amalga oshiradigan kompilyatorlarning namunalari:

Shuningdek qarang

Adabiyotlar

  1. ^ a b "Microsoft Visual C ++ jamoaviy blogi".
  2. ^ "Profilga yo'naltirilgan mulohaza (PDF)". Olingan 23 noyabr 2013.
  3. ^ Baptist Vix, Roberto A. Vitillo, Dehao Chen, Devid Levinthal (2014 yil 24-noyabr). "Uskuna bo'yicha hisoblangan profil tomonidan optimallashtirish". arXiv:1411.6361. Bibcode:2014arXiv1411.6361W. Iqtibos jurnali talab qiladi | jurnal = (Yordam bering)CS1 maint: mualliflar parametridan foydalanadi (havola)
  4. ^ J. W. Backus, R. J. Beeber va boshq., Fortran avtomatik kodlash tizimi, G'arbiy qo'shma kompyuter konferentsiyasi materiallari, 1957 yil fevral, p. 195
  5. ^ "K. Pettis, R. Xansen, Profilni boshqarish bo'yicha kod joylashuvi, ACM SIGPLAN dasturlash tili dizayni va amalga oshirish konferentsiyasi 1990 " (PDF).
  6. ^ a b "Intel Fortran Compiler 10.1, Professional va Standard Editions, Mac OS X uchun". Arxivlandi asl nusxasi 2013 yil 28 sentyabrda.
  7. ^ "Profil bo'yicha optimallashtirish (PGO) tezkor ma'lumotnomasi".
  8. ^ Profil tomonidan boshqariladigan optimallashtirish yordamida qurilish, mozilla.org, 2013 yil 13-avgust
  9. ^ a b Dehao Chen (2010), "Fdo kompilyatsiyasi uchun apparat hodisalari namunalarini taminglash ", Kodlarni yaratish va optimallashtirish bo'yicha 8-yillik IEEE / ACM xalqaro simpoziumi materiallari, 42-52 betlar.
  10. ^ Ivanov, Vladimir (2013 yil 25-iyul). "JVM JIT kompilyatsiyasiga umumiy nuqtai". Olingan 10 sentyabr 2016.
  11. ^ Marchand, Sebastien (31 oktyabr 2016). "PGO yordamida Windows-da Chrome-ni tezroq yaratish". Arxivlandi asl nusxasidan 2016 yil 1 noyabrda. Olingan 1 noyabr 2016.
  12. ^ Kintero, Dino; Chabrolles, Sebastien; Chen, Chi Xuy; Dhandapani, Murali; Xollouey, Talor; Jadxav, Chandrakant; Kim, Sa Ki; Kurian, Sijo; Raj, Bharat; Resende, Ronan; Roden, Byor; Srinivasan, Niranjan; Uol, Richard; Zanatta, Uilyam; Chjan, Chji; Redbooks, I. B. M. (2013 yil 1-may). "IBM Power Systems ishlash qo'llanmasi: amalga oshirish va optimallashtirish". IBM Redbooks - Google Books orqali.