由人工智慧驱动的设计应用
英文原文:
2023年3月7日於《Semiconductor Engineering》刊登
在先前的中我們曾探討過使用自動化方式提高系統效能的好處。在該文章中提到的一項應用實例是編譯器標誌探勘 (compiler flag mining)─其實際效能成果大幅優於多數編譯器的標準優化程度。要達到這種未曾開發的效能是一項難題,但幸運的是現在有一種簡單的解決方法。
可供探索的选项
編譯器是一種程式,可以將人類所描述處理的高階語言指令集,轉譯成機器可讀取的指令。編譯器的輸出结果是可以交由機器執行的二進制文件。在大多數情況下,都會希望其生成的可執行文件能盡快運行,這也是人們投入大量精力改良編譯器的原因。在高效能运算(贬笔颁)領域尤是如此,因為編譯器對程式效能的影響有時會比處理器架構的影響更大。因此,編譯器在進行編譯時會提供大量可調用選項,讓工程師得以根據應用程式類型、運行硬體的平台以及目標工作負載來調整編譯器的功能。
然而,編譯器提供的選項通常高達數百種。在如此海量的選項中,要找出正確的編譯器標誌組合以生成最佳效能二進制文件,是一項艱鉅的任務。試想一下:僅是使用100 個參數(其中許多參數取值範圍非常大),可能的編譯器標誌排列組合就會超過10157个。相较之下,已知的宇宙中原子数量大约也「只有」1082 個, 看來大海撈針還容易得多!
确定正确的编译器标誌组合,以生成效能最佳的二进制文件,几乎是一项不可能的任务。笔者之所以会说「几乎」,是因為实际上确实有一种利用自动化和人工智慧(础滨)有效进行分析的方法。
本文将说明使用草榴社区 SLM Optimizer Studio软体进行的编译器标誌探勘实验,并展示使用自动化础滨工具為工作负载找出最佳编译器配置的方法。
实验概述
针对此一挑战,我们决定优化广泛採用的配置。我们的目标是找出编译器标誌的正确组合,将二进制文件执行时间降到最低。这代表着我们需要準备一个目标应用程式进行编译,以及工作负载作為运行测试。為此我们选择了业界认可的。XSbench的優勢在於每一個週期只需數分鐘的運行時間,能幫助我們快速收集測試樣本。此外,運行之間的平均偏差相當低(平均 0.3%),意味著在實驗中收集的结果具代表性並可有效重現。齿厂产别苍肠丑基準提供可在測試期間執行一系列查詢功能的應用程式,因此其效能是以每秒平均查詢次數來衡量。這也是我們透過優化 LLVM 編譯器設置進行改良的指標。
在運行Optimizer Studio前,我們需要將LLVM編繹器與基準測試連結。幸運的是,這項工作非常簡單,只需確定三個項目:允許該工具於整個實驗過程中修改編譯器標誌列表、調用基準測試的命令行(command line)以及基準測試運行的每秒查詢次數指標的獲取方式。完成第一步後,接著我們就可以執行 Optimizer Studio,輕鬆享用一杯咖啡,並觀看圖像使用者介面(GUI)所顯示的即時資料。
结果
由於我們選用每次運行僅需數分鐘的基準測試,因此能夠在短短數個小時內看到顯著的结果和效能改善。然而,因應而生的點狀圖所顯示的不僅僅是效能提升而已(如圖 1所示)。
圖 1:Optimizer Studio互動式使用者界面
該圖中的每一個點都代表優化器測試的配置(換句話說,也就是尝尝痴惭编译器標誌的特定組合)。縱軸顯示每秒的查詢次數,也是我們的目標指標,而橫軸則代表時間戳記,使我們能夠隨著實驗進度觀察效能是否隨時間提升。我們的起點以綠色標記─這是我們的基準配置。在本範例中,我們選擇基線配置為編譯器調用(compiler call)且並未定義任何標誌,然而,我們也可以採用任何配置作為起點。此外,該工具還以紅色顯示最佳配置及,使我們能夠快速識別最好的配置。讓我們一起看看更詳細的结果。
我們留意到的第一件事是在運行數十種配置後,就看到效能的大幅躍升,而在測試另外10種配置後,效能又再一次遽增。使用Optimizer Studio進行實驗時,這種快速收斂的改善相當典型。這是由於所使用的底層演算法性質(源自基因進化演算法(genetic evolutionary algorithms))特別適合在大型的解决方案空間內解決此類優化問題。事實上,在此實驗中,我們同時操作390個尝尝痴惭编译器標誌─這是不可能透過手動方式達成的優化任務!
我們也發現圖中幾個「步驟」。對於每項配置,我們皆能訪問已設置的標誌列表,經進一步檢查後,我們發現將編譯器的內置優化標誌(“O”)從-Og轉換到-Ofast可以顯著提升效能(如圖2所示) 。
图2:首次效能跃升图
Optimizer Studio很快就能明白這一情況並專注於使用-Ofast標誌來優化配置。 請記住,我們不只能利用標誌O來執行優化,因為每種配置都有一百種以上的標誌可供選擇!
如果以手动方式执行这项工作,人们很可能会以為在效能大获提升之后就足够了,进一步的优化工作都是徒劳。但其实并非如此,因為翱辫迟颈尘颈锄别谤在执行自动分析时能够产生第二次效能大跃升(如图3所示)。
图3:第二次效能跃升
结语
最終,Optimizer Studio確定181個個別標誌設置為特定值的特定配置可提供最佳性能。即使對編譯器專家來說,在合理的時間範圍內以手動方式找出最佳配置也根本不可能。這個實驗說明人工智慧導向的智慧型自動化功能,可用來解決含有大量變數、極度複雜的解决方案空間問題。
在實驗的後續,我們十分好奇是否有辦法能夠設置更少標誌,並達成類似效能水平?Optimizer Studio的自動化功能可否幫助人們讓優化工作更臻完善?又或者,能否協助我們更加理解特定標誌對效能的影響?答案是肯定的,我們將在往後的文章中進一步探討。
欢迎至草榴社区 SLR Optimizer Studio瞭解更多资讯。