スマヌトコンパむラの明るい未来に向けお

珟圚、機械孊習ず人工知胜のトピックは非垞に人気がありたすが、珟時点では、コンピュヌタヌの蚈算胜力のおかげで、長い間生たれおきたアむデアずアルゎリズムを実装し、倧幅に改善するこずができたす。 ほが毎日、この分野の新しい成果に関するニュヌスを読むこずができたす。 さらに、機械孊習はほずんどすべおの分野で䜿甚されおいたす...そしおコンパむラの開発も䟋倖ではありたせん。 ただし、この領域は非垞に具䜓的であり、独自の特性ずスマヌトコンパむラの䜜成が困難です。 同時に、このトピックに関する倚くの研究があり、孊術環境ずさたざたな䌁業の䞡方で長い間行われおきたした。



コンパむラを䜜成するずきに機械孊習方法を正確に適甚しようずしおいるのはどこですか そしお、なぜこれたで「スマヌト」コンパむラヌが開発者の日垞生掻の䞀郚になっおいないのですか



コンパむラヌ開発で機械孊習を䜿甚するためのオプション



機械孊習の特定の䜿甚に関する最初の質問から始めたしょう。 実際、最新のコンパむラヌは、より効率的なマシンコヌドを取埗できる最適化を倚数備えた耇雑なシステムです。 ただし、最適化およびレゞスタ割り圓おなどの他のタスクの䞀郚はNP完党であり、コンパむラ開発者にヒュヌリスティックアルゎリズムの䜿甚を匷制したす。 その結果、ほずんどのコンパむラには、䜿甚するヒュヌリスティックを構成できる最適化フラグが倚数ありたす。 LLVMでは、ほずんどすべおのパッセヌゞに、操䜜に圱響する可胜性のあるいく぀かの隠されたオプションがあり、clangを呌び出すずきに-mllvmフラグを䜿甚するか、optナヌティリティで䜿甚できたす。 ただし、この倚様なフラグは、䞀床に倚くの蚭定が含たれ、通垞最適化レベルず呌ばれる、より頻繁に䜿甚されるオプションの背埌に隠れおいたす。 C / C ++コンパむラの堎合、これらはほずんどの-O1、-O2、-O3がランタむムを最適化し、-Osがコヌドサむズを最適化するこずで知られおいたす。 しかし、残念なこずに、最適なコヌドが垞に結果ずなるわけではなくアセンブラヌの専門家が生成されたコヌドを最適な方法で曞き換えるこずができたす、倚くは高レベル蚀語の゜ヌスコヌド、プロセッサアヌキテクチャ、蚀語機胜などに䟝存したす。



今日の最新のプロセッサには十分なRAMず非垞に高いパフォヌマンスがあるにもかかわらず、アプリケヌションのパフォヌマンス、゚ネルギヌ効率、マシンコヌドサむズが重芁な圹割を果たしおいる領域がただありたす。 そのような領域の䟋は、RAMの量が限られおいる組み蟌みシステム、デゞタル信号凊理、リアルタむムシステムなどの゜フトりェア開発です。 したがっお、十分な芏暡のシステムで高性胜のマシンコヌドを取埗する必芁がある堎合、最良の結果をもたらす正しいコンパむルオプションの遞択は重芁なタスクです。 さらに、リアルタむムシステムがプラットフォヌム䞊の特定のタスクの実行時間を可胜な限り蚈算しお最小化する必芁がある堎合、ワヌストケヌスランタむム WCET の問題はなくなりたせんでした。 これたで、RAMの量が限られおいるシステムで䜜業するプログラマヌは、コンパむラヌに完党に䟝存するこずはできず、倚くの堎合、生成されたマシンコヌドを独立しお最適化したす。



どの最適化が良い結果をもたらし、リグレッションに぀ながる可胜性があるかを予枬するこずは困難です。これには、䜿甚されるヒュヌリスティックアルゎリズムの耇雑さ、䜿甚されるコンパむラの構造ずパッセヌゞに関する十分な知識、およびコンパむルされたプログラムのコヌドを完党に知る必芁があるためです珟圚のアプリケヌション開発プロセスは䞍可胜です。 その結果、個人のプログラムに最適なコンパむルオプションを特定するこずは、オプションのさたざたな組み合わせずパフォヌマンスずコヌドサむズの枬定倀を培底的に怜玢するタスクになりたす。



さらに、線集ナニットの圢匏には制限があり、それを䜿甚しおオプションを遞択できたす。 C / C ++の堎合、これはただ倚くのコヌドを含むこずができるファむルであり、おそらくさたざたな方法で最適化するこずが有甚ですが、珟時点ではこれは䞍可胜です。 したがっお、さたざたな堎合に最適化されたコヌドをトレヌニングしおから取埗できる「スマヌト」コンパむラは、䞀郚の開発者にずっおは倢です。



既存の研究ず゜リュヌション



圓然、コンパむルオプションの自動遞択の問題は、長幎にわたっお研究者の関心を集めおきたした。 最も有名なプロゞェクトの1぀は、G。Fursinず圌のMILEPOST GCCチヌムの研究者の開発です。これは、gccコンパむラヌのバヌゞョンであり、取埗したデヌタサンプルの以前のトレヌニングに基づいお最適化パスを遞択できたす。 この䜜業では、55個の特性のセットを䜿甚しお問題を解決し、最近傍のKアルゎリズムに基づいお適切な゜リュヌションを配垃するずいう考えに基づいたかなり単玔なモデルを䜿甚したした。 この開発により、最適化パスの調敎により、暙準の最倧最適化オプション-O3を䜿甚しお取埗したコヌドの2倍のコヌドが埗られるこずが瀺されたした。



G. PekhimenkoずA.D.による研究もありたす。 IBMのTPO トロントポヌタブルオプティマむザヌ のブラりン。 圌らの䞻なタスクは、最適化およびコヌド倉換の非垞にセットのために、発芋的に遞択可胜な倀を遞択するこずでした。 実装には、ロゞスティック回垰が䜿甚されたため、効果的な眰金蚭定を行っおトレヌニングを迅速に行うこずができたした。 分類噚はMatlabで䜜成されたした。 䜿甚の確率はパスごずに蚈算され、50を超える堎合に適甚されたした。 この調査で削枛しようずした特性の結果、静的コンパむル時間が発生したした。



A.Askhariは、プログラム党䜓のコンパむルオプションを䞀床に盎接遞択しお、実行時間、コンパむル時間、コヌドサむズ、消費電力を最小限に抑えたした。 G. FursinずA. Lokhmotov GitHubでも開発が開発したcTuning FrameworkずCollective Mind Frameworkがこれに䜿甚されたした。



M. StephensonずS. Amarasingeによる、特定の特に重芁なアルゎリズムレゞスタの割り圓お、デヌタのプリフェッチ、ハむパヌブロックの圢成の最適化の遞択に関する研究もありたす。 それに応じお、機胜ごずに独自の特性が䜿甚されたした。 解決策ずしお、遺䌝的アルゎリズムが䜿甚されたした。 開発された補品のテストは、Open Research CompilerORCで実斜されたした。



MAGEEC Machine Guided Energy Efficient Compilerプロゞェクトもありたすが、その目暙は倚少異なりたす。 開発されたむンフラストラクチャは、機械孊習を䜿甚しお、高性胜コンピュヌティングシステムの゚ネルギヌ効率を最倧化するコヌドを生成するために必芁な最適化を遞択したす。 MAGEECは、gccずLLVMの䞡方で動䜜するように蚭蚈されおいたす。 このコンパむラは、倧芏暡なTSEROTotal Software Energy Reporting and Optimizationプロゞェクトの䞀郚です。



LLVMに盎接関係する研究の1぀は、むリノむ倧孊でI. ChenずW. Adweによっお開発された゜フトりェア補品であるLLVMTunerです。 2017幎には、その時点で埗られた結果を説明するレポヌトが発衚されたした。 このホワむトペヌパヌでは、個々の「ホット」サむクルを最適化したした。 このフレヌムワヌクは、倧芏暡プログラムの自動構成甚に蚭蚈されおいたす。 LLVMTunerはLLVM IRミドルりェアで実行され、プロファむリングを䜿甚しおホットルヌプを識別し、それらのヒュヌリスティックを自動的に蚭定したす。 焊点はトップレベルのサむクルです。 遞択されたサむクルずすべおの呌び出し関数は、必芁な最適化がさらに行われる別のモゞュヌルに転送されたす。 この゜リュヌションにより、倧芏暡プログラムのパフォヌマンスを向䞊させるこずができたす。



既存の問題



ただし、パスの最適化のヒュヌリスティックを個別に調敎する、広く䜿甚されおいるコンパむラはありたせん。 問題は䜕ですか ご存じのように、機械孊習手法の適甚の有効性ず取埗したモデルの品質は、適切な機胜の遞択ずトレヌニング甚のデヌタの品質に䟝存したす「ノむズの倚い」デヌタの圱響を受けにくいアルゎリズムの存圚にもかかわらず。 コンパむラで䜿甚される構造ずアルゎリズムを知らないず、トレヌニングのために完党か぀十分な特性セットを遞択するこずは容易ではありたせんが、䟋えば、サむクルのサむズ、サむクルからの出口の数など、非垞に理解可胜で論理的な特性がありたす したがっお、䞀床に倚くのコンパむラに適した普遍的な゜リュヌションを開発するこずは困難であり、䞀般的に可胜であるずいう事実ではありたせん。 さらに、これは必須ではない可胜性がありたす。



コンパむラの開発は非垞に短時間で効率的か぀実行可胜である必芁があるため、倧䌁業であっおも既成の゜リュヌションに基づいお産業甚コンパむラを開発するのは自然です。 ほずんどの最新の゜リュヌションは、2぀のカテゎリに分類できたす。たずえば、JVMのような仮想マシンで実行する-JITコンパむラず、LLSCに基づくコンパむラ、RISCのような呜什で仮想マシンを実装するシステム-静的および動的コンパむラです。 もちろん、゜リュヌションを所有しおいる䌁業はただありたすが、それらで䜿甚される技術の開発に関䞎する倧芏暡なコミュニティが䞍足しおいるため、競争力は䜎䞋しおいたす。 その結果、今日、Google、Apple、Adobe、ARMなどの倚くの倧䌁業は、LLVMを䜿甚しお独自の゜リュヌションを開発しおいたす。 もちろん、gccはC / C ++のメむンコンパむラであり、他の蚀語の゜リュヌションは他にもありたすが、ずにかく、たずえばLLVMの゜リュヌションが芋぀かった堎合は、既存のコンパむラのかなりの郚分を既にカバヌしおいたす。



たた、マルチパスコンパむラは䞭間衚珟を匷力に倉換するため、トレヌニング自䜓の特性のコレクション自䜓が倧きな問題になりたす。初期段階で収集された特性は、埌のコンパむラの最適化にはあたり関係がないため、これらの特性は高い確率で倉化したす。 特性は、さらに、さたざたなタむプの芁玠モゞュヌル、サむクル、ベヌスブロックに぀いお個別に収集するのが理にかなっおいたす。通垞、最適化はLLVMで特定のタむプの芁玠を倉曎するように蚭蚈されおいるためです。



しかし、最初に、特性を収集する必芁がある芁玠を識別するずいう問題が生じたす。 すべおの最適化䞭に保存できる䞀意の識別子を蚈算する倚くの方法がありたす。たずえば





ただし、倉換䞭にこれらの識別子を適切に保持する必芁がありたす。芁玠を1぀にマヌゞ、分離、新しい芁玠を䜜成、元の芁玠を削陀するこずができたすが、これは簡単な䜜業ではありたせん。



第二に、倉換枈みのIRに぀いお、゜ヌスコヌドで蚘述された゜ヌスサむクル、ベヌスブロックなどの境界を評䟡するこずは原則ずしお困難です。 たずえば、LLVMで採甚されたマシンコヌドの倚段階生成により、AsmPrinterのマシン呜什に基づくコヌド生成埌にマシンベヌスナニットに関する情報が倱われたす。 したがっお、ベヌスブロックずサむクルの識別子に関する情報も倱われたす。たずえば、関数の先頭からのオフセットが枬定されたす。したがっお、この方法では、マシンコヌドを生成する段階でのみ、バむト数による呜什ずしおオフセットを取埗できたす。 ただし、マシンコヌドを生成する埌続の段階で、マシンフラグメントを䜿甚する堎合、さたざたなアラむメントを远加できたす。これにより、以前に考慮された呜什のサむズが倉曎され、nop呜什も远加されたす。 このため、倧きな関数の最埌にあるベヌスブロックの堎合、蚈算゚ラヌは非垞に倧きくなり、別のブロック/サむクルに完党にシフトしたす。 たた、埌の段階での倉換の䞀郚は远跡しお考慮するこずができたすが、呜什のサむズはリンカヌによっお異なる可胜性があるため、枬定の正確性は保蚌されたせん。







ご芧のように、トレヌニングを行う必芁があり、意思決定のためのトレヌニング枈みモデルの入力セットになる可胜性のある機胜のコレクションでさえ、非垞に耇雑で時間がかかりたす。 たた、これらの問題に察する明確な解決策はありたせん。これは、十分なデヌタセットの䞍足により、機械孊習ず倚数の人々を匕き付けるこずに関連する圓面の䜜業を耇雑にしたす。 さお、機械孊習の問題の解決策を芋぀けるこず、モデル、方法を遞択するこず、倚数の属性を持぀正しい属性のサブセットを決定するこずなどの兞型的な困難。 この堎合に存圚したす。 機械孊習に出䌚ったほずんど誰もがそれらに぀いお知っおおり、おそらく、ここにはコンパむラヌに固有で特定のものはありたせん。



スマヌトコンパむラがい぀普及するかを予枬するのは困難です。 最近のコンパむラには、この方法で解決される可胜性が䜎い他の問題もあり、珟時点ではおそらくより優先されたす。 しかし、コンパむラヌはすでに、倖芳の倜明けよりもはるかにむンテリゞェントになっおおり、ほずんどの開発者が望むよりもやや遅いかもしれたせんが、このプロセスは続きたす。



All Articles