ai編譯器視頻
① AI編譯器技術剖析(二)-傳統編譯器
AI技術的廣泛應用中,智能家居和自動駕駛都依賴於NLP和計算機視覺等AI模型,這些模型部署在雲、專用設備和物聯網設備中。在將AI模型從研發到實際應用的過程中,編譯器的作用日益凸顯,特別是在處理非標准運算元的模型部署上。AI編譯器的興起預示著未來十年的快速發展。
AI編譯器技術建立在傳統編譯器的基礎之上。它首先在IR層面優化模型,然後通過lowering將高級IR轉換為傳統編譯器理解的低級IR,最後依賴傳統編譯器生成機器碼。要理解AI編譯器,先要掌握傳統編譯器的基本原理,包括其預處理、編譯和鏈接流程,以及前端、優化器和後端的分工。
傳統編譯器的核心是源代碼到機器碼的轉換過程。它通常由預處理器、編譯器(分前端、優化器和後端)和鏈接器組成。編譯器負責將高級語言轉換為機器代碼,而解釋器則在運行時進行轉換。AOT和JIT編譯的區別在於執行時間:AOT在編譯前完成,JIT則在運行時動態優化。
主流編譯器如GCC,其源代碼龐大且復雜,包含語言相關的代碼、通用代碼和根據機器描述生成的代碼。GCC的流程包括詞法分析、語法分析、優化,以及目標代碼生成。而LLVM提供了一種模塊化的編譯器框架,支持自定義前端和後端,比如Apple的Clang,它直接支持C++等語言並轉化為LLVM IR。
編譯器優化是提升性能的關鍵,包括常量傳播、常量折疊、復寫傳播等。它們通過消除冗餘計算和改進代碼結構來提高執行效率。例如,通過公共子表達式消除,可以避免不必要的計算;通過函數調用優化,如尾遞歸優化,減少函數調用的開銷。
總的來說,本文概述了傳統編譯器的基礎,以及AI編譯器如何在其基礎上發展,展示了編譯器的架構、優化策略和不同編譯器工具的特性,為理解AI編譯器技術提供了基礎。
② 為什麼需要改變編譯器
答案如下:
1.編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機可以直接以機器語言來運行此程序,速度很快;
2.解釋器則是只在執行程序時,才一條一條的解釋成機器語言給計算機來執行,所以運行速度是不如編譯後的程序運行的快的.
3.因為計算機不能直接認識並執行我們寫的語句,它只能認識機器語言(是二進制的形式).
4.編譯是將源程序翻譯成可執行的目標代碼,翻譯與執行是分開的;而解釋是對源程序的翻譯與執行一次性完成,不生成可存儲的目標代碼。這只是表象,二者背後的最大區別是:對解釋執行而言,程序運行時的控制權在解釋器而不在用戶程序;對編譯執行而言,運行時的控制權在用戶程序。
4.編譯器在優化過程中採用了自動或半自動的代碼生成用以替代人工優化。人的精力是有限的,通過(接近無限)的算力去適配每一個應用場景看到的網路,改變編譯器,這是編譯技術比人工路線強的所在。