一個編譯器解決了Anthropic的VLIW最佳化挑戰
一位開發者建立了一個最佳化編譯器,用於解決Anthropic的面試挑戰:在模擬的VLIW SIMD虛擬機器上最佳化核心,以最小化樹遍歷和雜湊計算的週期數。該專案用高階IR描述核心,並編譯為高效的VLIW指令包。
近日,開發者fiigii在GitHub上開源了一個名為“ai-comp”的專案,該專案旨在解決Anthropic公司的一道VLIW(超長指令字)最佳化面試挑戰。該挑戰要求候選人在一個模擬的VLIW SIMD虛擬機器上最佳化一個核心,以減少樹遍歷和雜湊計算的週期數。與傳統的手動最佳化方法不同,fiigii選擇編寫一個最佳化編譯器,從高階中間表示(HIR)生成高效的VLIW指令包。
該專案結構清晰,主要包含編譯器核心、虛擬機器封裝、測試、文件等模組。編譯器採用了分層最佳化設計:HIR(高階中間表示)經過一系列最佳化pass降級為LIR(低階中間表示),再進一步降為MIR(機器中間表示),最終生成VLIW指令包。最佳化pass包括死程式碼消除(DCE)、公共子表示式消除(CSE)、SLP向量化等,有效提升了程式碼執行效率。
使用者可以透過簡單的Python命令編譯和執行樹雜湊核心,並靈活調整引數,如森林高度、輪數和批處理大小。編譯器還提供了豐富的診斷功能:可以列印每個最佳化pass後的IR、顯示效能度量指標、繪製資料依賴圖、輸出最終VLIW指令,以及生成暫存器壓力HTML圖表。這些工具極大地方便了效能分析和除錯。
此外,編譯器支援自定義pass配置,使用者可以透過修改JSON檔案來調整編譯管道的最佳化順序和引數設定,便於進行A/B測試或並行搜尋最佳配置。專案還整合了一個追蹤檢視器,可與Perfetto整合,幫助開發者分析執行時行為。
目前,該專案已在GitHub上獲得86顆星和14個fork,主要使用Python編寫(佔比98.8%),少量HTML(1.2%)。對於對編譯器最佳化或VLIW架構感興趣的開發者來說,這是一個極具價值的參考實現。Anthropic的這道面試題也因此獲得了更廣泛的關注,展示了編譯器技術在效能最佳化中的巨大潛力。