當前位置:首頁 » 編程軟體 » 深入編譯器

深入編譯器

發布時間: 2025-05-15 07:41:35

㈠ C璇璦鍏ラ棬錛岀敤浠涔堢紪璇戝櫒姣旇緝濂斤紵

姝ュ叆C璇璦鐨勪笘鐣岋紝瀵繪壘浣犵殑鏈浣崇紪璇戝櫒涓嶪DE浼欎即


緙栫▼涔嬭礬濮嬩簬閫夋嫨錛屽逛簬鍒濆﹁呰岃█錛岄夋嫨涓嬈懼悎閫傜殑緙栬瘧鍣ㄥ拰闆嗘垚寮鍙戠幆澧冿紙IDE錛夊挨涓洪噸瑕併傝╂垜浠娣卞叆鎺㈣ㄥ嚑涓澶囧彈鎺ㄥ磭鐨勯夐」錛屽府浣犺交鏉捐搗姝ャ


緙栬瘧鍣ㄧ瘒


1. Tiny C Compiler (TCC): 璁╂柊鎵嬪叆闂ㄧ殑涓嶄簩涔嬮夛紝TCC浠ユ儕浜虹殑緙栬瘧閫熷害钁楃О錛屾棤闇鎷呭咖鎬ц兘褰卞搷錛屽畠浠ョǔ瀹氬拰楂樻晥钁楃О錛屾槸鍒濆﹁呯殑緇濅匠璧風偣銆


2. GNU C Compiler (GCC): 鉶界劧涓嶆槸涓繪祦錛屼絾GCC鍥犳敮鎸佷紬澶氱壒鎬ц屽囧彈灝濊瘯錛屽敖綆″瓨鍦ㄤ竴浜涘巻鍙查仐鐣欓棶棰橈紝浣嗗畠鍦ㄧ壒瀹氬満鏅涓嬩粛鍊煎緱涓璇曘


3. Microsoft Visual C++ Compiler (MSVC): 浣滀負Windows騫沖彴涓婄殑鑰佺墝鐜嬭咃紝MSVC鍑鍊熷氬勾鐨勬妧鏈縐緔錛屽挨鍏舵槸浠嶣orland鎸栨潵鐨勫洟闃燂紝濡備粖鍦ㄧǔ瀹氭у拰鍏煎規т笂琛ㄧ幇鍑鴻壊錛屾槸涓嶪DE鎼閰嶇殑棣栭夈


4. LLVM/Clang: 楂樼涔嬮夛紝鏁堢巼鍜岄熷害騫墮噸錛岀壒鍒閫傚悎榪芥眰楂樻ц兘鐨勫紑鍙戣咃紝Visual Studio鏂扮増鏈涔熸敮鎸佸叾瀹夎咃紝濡傛灉浣犺拷奼傛瀬鑷存ц兘錛孋lang鏄涓涓嶉敊鐨勯夋嫨銆


IDE綃


1. Visual Studio: 鏃犻渶榪囧氳禈榪幫紝Visual Studio鏃犵枒鏄疘DE涓鐨勭繕妤氾紝2017鐗堟湰錛圴isual Studio 2017錛夋敮鎸丆++17錛岃櫧鐒舵湁鏃舵洿鏂板甫鏉ュ皬闂棰橈紝浣嗗逛簬鍒濆﹁呭拰Windows鐢ㄦ埛錛岀ぞ鍖虹増鐨勫厤璐圭増鏈鏄寮虹儓鎺ㄨ崘鐨勩


2. CLion: 鉶界劧鏀惰垂錛屼絾鐟曚笉鎺╃憸錛岃法騫沖彴鏀鎸佷嬌寰桵ac鐢ㄦ埛涔熻兘浜鍙楋紝鐩歌緝浜嶸S鐣ラ婁竴絳癸紝浣嗘暣浣撴ц兘浼樼銆


3. Eclipse: 鉶界劧瀹夎呰繃紼嬪彲鑳界箒鐞愶紝浣嗕綔涓烘浘緇忕殑Java涓誨姏IDE錛岀幇鏀鎸丆/C++錛屽挨鍏舵槸鎼閰峂ingw x64緙栬瘧鍣錛孍clipse浠嶇劧鍊煎緱鎺ㄨ崘銆


4. Code::Blocks: 閫傚悎瀛︽牎鏁欏︼紝寮婧愪笖鏀鎸佸氱嶇壒鎬э紝浣嗗規柊鎵嬫潵璇達紝鍏墮敊璇鎻愮ず鍙鑳戒笉澶熸槑紜錛岄櫎闈炴湁鐗規畩闇奼傦紝鍚﹀垯涓嶆槸棣栭夈


5. Notepad++: 鉶界劧鑳藉彉鎴愮畝鍗旾DE錛屼絾鐩告瘮鍏朵粬閫夐」錛屾帹鑽愮▼搴﹁緝浣庯紝闄ら潪浣犵壒鍒鍠滄㈠叾瀹氬埗鍖栥


6. Visual Studio Code: VS鐨勮法騫沖彴鐗堟湰錛屽厤璐逛笖鍔熻兘寮哄ぇ錛岃櫧鐒舵湁灝戣稿崱欏匡紝浣嗗逛簬Linux鐢ㄦ埛鎴朚ac鐨勮交搴﹀紑鍙戣咃紝瀹冩槸涓涓嶉敊鐨勯夋嫨銆


7. Qt Creator: 綆媧佷笖鏀鎸丵t搴旂敤寮鍙戱紝閫傚悎鏈変竴瀹氱粡楠岀殑寮鍙戣咃紝浣嗗瑰垵瀛﹁呮潵璇達紝閰嶇疆榪囩▼鍙鑳界暐鏄懼嶆潅銆


8. Dev-C++: 瀵逛簬鍠滄VC6鐣岄潰鐨勫嶅彜媧撅紝Dev-C++浠ョ畝鍗曡憲縐幫紝浣嗗姛鑳界浉瀵硅緝灝戙


9. C4DroidCPPDroid: 鍊懼悜浜庣Щ鍔ㄥ紑鍙戱紝鎵嬫満鍜屽鉤鏉誇笂鐨凜璇璦IDE錛屽挨鍏墮傚悎鍦ㄧЩ鍔ㄨ懼囦笂緙栫▼銆


緇撹


鍦╓indows涓婏紝灝界GCC鍙鑳介渶瑕侀濆栭厤緗錛屼絾涓嶅簲璁╅厤緗甀DE鎴愪負瀛︿範鐨勯噸鐐廣傞夋嫨涓嬈句笌浣犵殑鐩鏍囧拰闇奼傜浉鍖歸厤鐨勭紪璇戝櫒鍜孖DE錛屽皢鏈夊姪浜庝綘鏇翠笓娉ㄤ簬璇璦鏈韜錛屼負浣犵殑C璇璦涔嬫棶濂犲畾鍧氬疄鍩虹銆

㈡ 【從零開始學深度學習編譯器】九,TVM的CodeGen流程


GiantPandaCV導語:本文將帶你深入了解TVM的Codegen流程,從Relay前端到內存分配,再到代碼生成的多個步驟。雖然本文主要關注調用鏈,但後續會結合實例深化理解。建議先閱讀【從零開始學深度學習編譯器】六,了解TVM的編譯流程。


0x1. 代碼生成介面


首先,TVM的代碼生成介面主要通過tvm.build和tvm.relay.build完成,前者針對運算元,後者針對Relay計算圖。通過設置target(如c)生成可執行的機器碼。例如:


生成的代碼示例如下,但因其是機器碼,不可讀,暫不展示。


此外,可以藉助【知乎文章】鏈接來理解整個編譯流程,從IRMole到運行時Mole的轉換,涉及TIR和C語言代碼的生成。


0x2. Graph CodeGen核心流程


GraphCodegen的核心是LoweredOutput Codegen(relay::Function func),負責內存申請、IR到TIR轉換和調度優化。其中,內存申請涉及StorageAllocator和TokenMap的創建,通過節點設備信息推斷和優化內存分配。


0x3. GraphCodegen內存申請與節點處理


在GraphCodegen中,節點處理包括參數轉換為GraphInputNode,節點遍歷生成GraphNode,並對CallNode進行特定處理。FunctionNode的Codegen則根據是否為外部函數進行差異化處理。


0x4. Lower function和Schele優化


Lower function的生成在CreateSchele函數中,涉及IR到TIR轉換以及Schele的優化,這部分內容較為復雜,後續會結合實例深入研究。


0x5. 總結


本文概述了TVM Codegen的基本流程,從Relay前端到Graph節點處理,展示了核心函數的職責,但未深入講解Schele優化和Lower function的具體實現,後續將結合實例進行更詳細的探討。


0x6. 相關文章與參考


繼續閱讀【從零開始學深度學習編譯器】系列的後續篇章,以及參考鏈接中的詳細內容以深化理解。


㈢ windows系統下常用哪些Fortran編譯器我用的vs2008。

在Windows系統下,選擇合適的Fortran編譯器對於編寫高效、可靠的Fortran程序至關重要。以下是集成環境下的幾個Fortran編譯器選項:

1. 微軟Fortran Powerstation:這是微軟提供的一個集成開發環境,能夠提供全面的Fortran編程支持。

2. Digital Visual Fortran:這是Digital公司開發的Fortran編譯器,同樣提供了集成開發環境,支持Fortran 77、Fortran 90及Fortran 95標准。

3. Compaq Visual Fortran:Compaq公司的Fortran編譯器,能夠支持多種Fortran標准,並集成在Visual Studio中。

4. Intel Visual Fortran:Intel提供的Fortran編譯器,與Intel的其他開發工具緊密集成,提供了強大的性能優化功能。

5. PGIVisual Fortran:這是PGI公司開發的Fortran編譯器,同樣提供了集成開發環境,支持多種Fortran標准,適用於高性能計算領域。

對於那些尋求免費選項的用戶來說,還有一些非集成類的Fortran編譯器可以選擇:

1. gfortran:這是GNU編譯器集合(GCC)的一部分,支持Fortran 95標准,是免費且開源的。

2. g95:同樣基於GCC,支持Fortran 95標准,是一個開源的Fortran編譯器。

3. 後端載入之後的gcc:通過GCC的後端支持,可以提供Fortran編譯能力,同樣是一個開源選項。

這些編譯器各有特點,用戶可以根據自己的需求和項目特點進行選擇。對於有興趣深入了解的用戶,可以自行查閱相關資料,以便做出最適合自己的選擇。

熱點內容
湖人雙核配置哪個最好 發布:2025-05-15 10:09:48 瀏覽:979
手機熱點密碼怎麼查看 發布:2025-05-15 09:54:47 瀏覽:108
生意發力雲存儲 發布:2025-05-15 09:54:45 瀏覽:616
編寫一個shell腳本添加用戶 發布:2025-05-15 09:54:43 瀏覽:505
資料庫查看錶命令 發布:2025-05-15 09:52:27 瀏覽:914
p30是不是自帶方舟編譯器 發布:2025-05-15 09:51:48 瀏覽:599
追擊世界房間密碼是多少 發布:2025-05-15 09:51:46 瀏覽:995
cjavabyte 發布:2025-05-15 09:51:36 瀏覽:463
visa存儲卡 發布:2025-05-15 09:35:07 瀏覽:619
js調用php的方法 發布:2025-05-15 09:29:13 瀏覽:496