2015-12-10 42 views
2

我想問一下它是否有意義,如果有,是否有任何嘗試?設計優化編譯器時是否考慮過遺傳算法?

澄清的問題:

當編譯器製造商的優化工作,他們試圖使編譯器根據目標架構右吐最好的裝配順序?因此,從這個意義上說,他們必須想象在X情況下最好的指令是什麼。因此,我想象在設計過程中,他們通過直覺使用他們的裝配知識,以及一些試驗/錯誤過程和典型案例的基準測試(代碼片段),它們針對優化器。

但是,如果彙編代碼的編譯器輸出選擇可以通過遺傳算法來決定,那麼遺傳算法只會用兩個標準來嘗試一切:「尊重客戶意圖不變」和「執行測試中速度越快越好」。
使用這個,似乎有可能通過向元優化器提供數千個代碼片段來優化,學習優化它們的最佳方法,然後最終優化器作業來準備優化器(例如「最終的優化器編譯器「)將檢測哪個片段與要解析的客戶端代碼相似並應用翻譯。

我希望我很清楚。我並不是建議編譯器在客戶端代碼編譯期間使用GO,而是編寫一個嵌入GO(在編譯器製造商的實驗室中運行)中找到的靜態結果的編譯器。

+0

遺傳算法鏈接到一個PDF似乎最適合的問題本質上是模擬的。很難想象,將一個指令(序列)的一半與另一個指令(序列)結合起來,從而獲得可行的結果 - 更不用說更好的解決方案了。 –

回答

1

是的,它有。早期的支持者是蒙特利爾大學的Marc Feeley,他利用遺傳算法爲大型項目找到了gcc選項的最佳組合,特別是Gambit Scheme編譯器。

他還合着的論文,你可能會感興趣:

遺傳指令調度和寄存器分配。在對系統的定量評價國際會議(QEST'04),76-83頁,2004年

你可以找到他的research page

+0

是的,謝謝,這是我想到的:http://www.iro.umontreal.ca/~feeley/papers/KriFeeleyQEST04.pdf與我的問題相比唯一的限制是他們將這項技術應用於「寄存器分配「而不是最佳操作碼的選擇。但是這個概念非常接近我的問題。 –

+0

@ v.oddou:你可能想直接給Marc發電子郵件。我想你也分享一種語言 – rici