JIT編譯典型流程
『壹』 jit的含義是什麼
1. JIT是"Just-In-Time"的縮寫,廣泛應用於兩個領域:工業准時生產系統和編程中的即時編譯器。
2. 工業准時生產系統(JIT)是指產品生產能夠精確地滿足客戶在時間、質量和數量上的需求。無論客戶是最終用戶還是生產線上的其他環節,JIT都能確保產品按時交付。
3. 在JIT系統中,企業不會為防止配送延遲而儲備多餘的材料和部件。相反,配送到生產現場的部件和材料正好滿足生產需求,從而減少庫存成本。
4. 在編程領域,JIT代表即時編譯器。這種編譯器在程序運行時將機器碼即時編譯並保存,以便下次使用。理論上,這可以提高程序性能,使其接近傳統的編譯器編譯技術。
5. JIT的工作過程強調按需生產。企業根據客戶實際需求生產產品,確保產品種類、數量和時間與客戶需求完全匹配。這種方法可以減少庫存積壓,降低企業成本。
『貳』 jit的含義是什麼
jit是just in time的縮寫,常用的有兩個領域,一個是工業中的准時生產系統,一個編程中即時編譯編譯器的縮寫。
准時生產方法是指生產的產品能夠精準地滿足客戶在時間、質量和數量上的需求,無論客戶是產品的最終用戶還是處於生產線上的其他流程。採用JIT時,配送到生產現場的部件和材料正如生產所需,企業不會為防止發生配送延遲的情況而儲備材料和部件。
工業准時生產方法的核心
准時生產方法就是強調企業生產產品的時候,應該完全按照客戶的需求來生產,客戶什麼時間需要,就什麼時間生產出來,客戶需要什麼品種,就生產什麼品種,客戶需要多大量,就生產多大量,如果真正能做到這種程度,意味著企業生產出的產品馬上就可以轉移出去。
所以這種方法的核心就是按需生產,如果能實現按需生產,伴隨著產品及時地轉移,企業的存貨庫存就會不斷降低,伴隨著存貨的不斷降低,企業有關的成本也就會不斷降低。
『叄』 Windows 下編譯 LuaJIT
這里使用 Visual studio 自帶的命令行工具來進行編譯,所以需要安裝好VS。
首先打開VS命令行工具。可以按 Win + S ,輸入 prompt 來找到它。如圖。
解壓 LuaJIT 源碼,並進入到解壓目錄 /src 下。輸入 msvcbuild 開始編譯。
看到 === Successfully built LuaJIT for xxxxx === 則是編譯成功了。
在解壓目錄 /src 下可以找到編譯生成的 luajit.exe 和 lua51.dll .
打開cmd。
如果沒有添加環境變數則先定位到LuaJit安裝目錄。
輸入 luajit +文件名 即可運行Lua腳本。
輸入 luajit -b +Lua腳本+目標文件名,即可編譯腳本。
『肆』 使用MLIR完成一個端到端的編譯流程 -- 一條通路
本文將深入探討如何使用 MLIR 實現一個端到端的編譯流程。以 TensorFlow 倉庫中的簡單示例作為起點,我們將通過一個具體的編譯通路,詳細介紹從 pbtxt 到最終執行的全過程。
首先,考慮 TensorFlow 倉庫中提供的示例,我們將計算圖保存為名為 add.pbtxt 的文件。接下來的關鍵步驟是將 pbtxt 文件翻譯為 MLIR 格式。這一步通過使用 tf-mlir-translate 工具完成,該工具可以根據指定的輸入輸出類型和尺寸進行翻譯,最終生成 MLIR 文件。
接下來,我們將沿著一條特定的通路,從 TensorFlow Dialect 逐步轉換至最終的 linalg Dialect。這一系列轉換包括:
- 從 TensorFlow Dialect 轉換至 hlo Dialect
- 從 hlo Dialect 轉換至 lhlo Dialect
- 從 lhlo Dialect 轉換至 linalg Dialect
這些轉換由 TensorFlow 社區維護,確保了計算圖的合理表示。而從 linalg Dialect 之後的編譯過程及基礎設施,則由 MLIR 社區負責。
在這一階段,為了使計算圖能夠運行,我們需要手動修改代碼。這是因為在原始的計算圖中,僅表示了中間的計算過程,而忽略了輸入數據。我們關注的是將計算圖轉換為 linalg Dialect 這一層次的表示,此時計算圖已轉變為一個包含 main 函數的程序,輸入輸出參數為 memref<10xi32>,其中的計算過程為將輸入輸出進行加和。
接下來,我們有兩條路徑可以選擇,以運行代碼:
- 使用 MLIR 的 JIT 即時編譯引擎(mlir-cpu-runner)
- 通過 C 程序調用 MLIR 的函數並生成可執行文件
採用 JIT 編譯引擎方法時,我們需要在 MLIR 文件中提供輸入數據。具體實現包括在 MLIR 文件中定義 @alloc_filled_i32 函數用於提供輸入數據,並在 main 函數中調用 @print_memref_i32 函數以列印計算結果。然後,使用 mlir-cpu-runner 執行 MLIR 程序。
另一種方法是使用 C 程序調用 MLIR 的函數,最終生成可執行文件。這要求修改 MLIR 代碼,將 linalg Dialect 層次的函數重命名,並在 C 程序中調用。具體步驟包括定義 C 程序中的輸入輸出參數,並在程序中調用 MLIR 函數。生成 C 介面時,使用選項 `-convert-std-to-llvm='emit-c-wrappers=1'`,確保生成的介面為 `_mlir_ciface_tf_add`。最終,通過鏈接 MLIR 目標文件和 C 程序,生成可執行文件。