المفاهيم الأساسية
排程語言已經從自動調整程式庫和迭代編譯的發展中演變而來,使開發人員能夠更好地控制程式碼優化,並有望在未來實現更易於使用和可移植的自動化高效能程式碼生成。
這篇研究論文深入探討了排程語言的演變、應用和未來方向。排程語言作為一種表達編譯器優化順序的工具,在高效能運算領域中扮演著至關重要的角色。
過去:優化探索(1997-2012)
在高效能運算的早期,科學計算應用程式的複雜性和新興架構的出現,促使人們需要更精確地控制程式碼優化。這個時期的重點是自動調整程式庫和迭代編譯技術,這些技術主要應用於主流程式語言,並具有高度自動化和整合性的特點。
自動調整程式庫和程式碼產生器: ATLAS 和 FFTW 等自動調整程式庫的出現,旨在自動優化程式碼以適應不同的硬體架構。這些方法將函數分解成高效能的子程式,並根據經驗確定最佳參數,從而針對特定架構進行自動調整。
探索性編譯器和程式碼生成技術: 迭代編譯技術的發展,例如 OCEANS 編譯器專案,使開發人員能夠探索不同的程式碼轉換序列,並根據實際執行結果選擇最佳方案。然而,這些方法的搜尋成本較高,限制了它們在通用優化中的應用。
現在:專業化(2013-2023)
近年來,隨著特定領域硬體和軟體工具的普及,排程語言在特定領域中得到廣泛應用。Halide 的出現標誌著排程語言的一個重要里程碑,它提倡將排程與底層演算法分離,並引領了排程語言在圖像處理、張量代數等領域的應用。
圖像處理方法: Halide 作為一種領域特定語言,通過將演算法表達式與優化策略分離,簡化了圖像處理管道的優化過程。PolyMage 等後續工作則進一步探索了基於多面體模型的自動排程技術,以提高程式碼生成效率。
張量代數方法: 張量代數作為一種描述多維張量運算的數學框架,在深度學習等領域中得到廣泛應用。針對密集張量和稀疏張量,研究人員開發了不同的排程語言和優化技術,例如 CHiLL-I/E 和 TACO,以提高張量代數運算的效能。
未來:普及化(2024-)
展望未來,排程語言的發展趨勢是提高使用者可訪問性、擴展應用範圍以及與通用基礎設施的整合。未來的排程語言需要更高的自動化程度,並支援更通用的計算形式,例如資料佈局和資料移動。
提高抽象層次: 未來的排程語言需要提供更高級的抽象,以簡化程式碼優化過程,並降低使用門檻。
擴展到更通用的應用程式: 現有的排程語言主要針對特定領域,未來的研究需要擴展它們的應用範圍,以支援更通用的計算形式。
與通用基礎設施的整合: 未來的排程語言需要與現有的編譯器基礎設施和自動化工具整合,以提高程式碼生成效率和可移植性。