当前位置:首页 » 编程软件 » 深入编译器

深入编译器

发布时间: 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:36:16 浏览:993
ehcache存储对象 发布:2025-05-15 10:35:31 浏览:526
搭建虚拟电脑的服务器 发布:2025-05-15 10:29:31 浏览:269
湖人双核配置哪个最好 发布: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