关于编译器:CS-496-Homework-Assignment-3

CS 496: Homework Assignment 3 Due: 25 February, 11:55pm1 Assignment PoliciesCollaboration Policy. It is acceptable for students to collaborate in understanding the material but not in solving the problems or programming. Use of the Internet is allowed, but should not include searching for existing solutions.Under absolutely no circumstances code can be exchanged between students from different teams. Excerpts of code presented in class can be used.Assignments from previous offerings of the course must not be re-used. Viola- tions will be penalized appropriately.2 AssignmentThis assignment consists in implementing a series of extensions to the interpreter for the language called LET that we saw in class. The concrete syntax of the extensions, the abstract syntax of the extensions (ast.ml) and the parser that converts the concrete syntax into the abstract syntax is already provided for you. Your task is to complete the definition of the interpreter, that is, the function eval_expr so that it is capable of handling the new language features.Before addressing the extensions, we briefly recall the concrete and abstract syntax of LET. The concrete syntax is given by the grammar in Fig. 1. Each line in this grammar is called a production of the grammar. We will be adding new productions to this grammar corresponding to the extensions of LET that we shall study. These shall be presented in Section 3.Next we recall the abstract syntax of LET, as presented in class. We shall also be extending this syntax with new cases for the new language features that we shall add to LET.1 ...

February 18, 2024 · 6 min · jiezi

关于编译器:开源项目分享实习宝典传授直播课程报名开启

你是否须要 AI 初学者入门级的开源教程? 你是否期待和顶尖开发者一起学习,向深度学习畛域的大佬看齐? 你是否心愿通过课程解说,理解我的项目实际,把握深度学习、大模型相干的前沿 AI 技术? 如果你的答案是必定的,那么 「MegEngine 开发者说」系列课程正是你想要的! 「MegEngine 开发者说」是由旷视天元(MegEngine)官网推出的线上课程,由不同行业畛域、不同 AI 工龄的优良开源我的项目开发者进行前沿技术、我的项目教训分享,更有实习、找工作、保研、较量等满满干货,助力正处于不同阶段的开发者学习技术、升学、升职! 第一期重磅来袭!本期课程咱们邀请到了两位优良开发者进行主题分享: 邱忠喜-北方科技大学 善于畛域:智能医疗影像畛域演讲主题:SAM-集体想法与瞻望亮点领先看:从 SAM 简要介绍,到一些基于 SAM 的利用与钻研算法,SAM 时代咱们该何去何从,分享 SAM 带来的思考与启发。李成远-中国人民大学 善于畛域:AI 模型推理减速演讲主题:基于 MegCC 的模型推理优化教训分享亮点领先看:从开源我的项目介绍到实习经验分享,深度学习模型编译器 MegCC 介绍及 ONNX 接入 MegCC,更有多家大厂实习经验,为在校开发者传授实习宝典。课程工夫:9 月 9 日(周六)晚 19:00-20:00 填写报名问卷并参加直播,更有直播间有奖互动答疑环节,精美的 MegEngine 周边礼品等你来拿! 背景介绍: 开源深度学习框架旷视天元(MegEngine)是旷视自主研发的国产工业级深度学习框架,是旷视新一代AI生产力平台Brain++的最外围组件,在2020年3月正式向寰球开发者开源。MegEngine 凭借其训练推理一体、超低硬件门槛和全平台高效推理 3 大外围劣势,可能帮忙企业与开发者大幅节俭产品从实验室原型到工业部署的流程,真正实现小时级的转化能力。 更多 MegEngine 信息获取,您能够退出 MegEngine 用户交换 QQ 群:1029741705。欢送参加 MegEngine 社区奉献,成为 Awesome MegEngineer,荣誉证书、定制礼品享不停。

August 26, 2023 · 1 min · jiezi

关于编译器:编译-TFLite-模型

本篇文章译自英文文档 Compile TFLite Models 作者是 FrozenGene (Zhao Wu) · GitHub更多 TVM 中文文档可拜访 →Apache TVM 是一个端到端的深度学习编译框架,实用于 CPU、GPU 和各种机器学习减速芯片。 | Apache TVM 中文站 本文介绍如何用 Relay 部署 TFLite 模型。 首先装置 TFLite 包。 # 装置 tflitepip install tflite==2.1.0 --user或者自行生成 TFLite 包,步骤如下: # 获取 flatc 编译器。# 具体可参考 https://github.com/google/flatbuffers,确保正确装置flatc --version# 获取 TFLite 架构wget https://raw.githubusercontent.com/tensorflow/tensorflow/r1.13/tensorflow/lite/schema/schema.fbs# 生成 TFLite 包flatc --python schema.fbs# 将以后文件夹门路(蕴含生成的 TFLite 模块)增加到 PYTHONPATH。export PYTHONPATH=${PYTHONPATH:+$PYTHONPATH:}$(pwd)用 python -c "import tflite" 命令,查看 TFLite 包是否装置胜利。 无关如何用 TVM 编译 TFLite 模型的示例如下: ...

June 19, 2023 · 2 min · jiezi

关于编译器:MegEngine-使用小技巧如何解读-MegCC-编译模型几个阶段-Pass-的作用

MegCC 是一个真真实实的深度学习模型编译器,具备极其轻量的 Runtime 二进制体积,高性能,不便移植,极低内存应用以及快启动等外围特点。用户可在 MLIR 上进行计算图优化,内存布局,最初通过事后写好的 code 模版进行代码生成。 MegCC 中次要的 Pass MGBToKernelPass:这个 Pass 次要将 MGB IR 转换为 Abstract Kernel IR,转换过程中次要实现几件事件: 将 MGB IR 中的所有输入输出 Tensor 类型转换为 Buffer 类型。将 MGB IR 中的所有枚举参数转换为对应的字符,这样 Abstract Kernel IR 就能够齐全和 MegEngine 解耦。将一些内存搬运相干的 Opr 全副转换为 Relayout,如:Concat,SetSubtensor 等 Opr(node-level optimizations)。将判断 Opr 是动态 shape 还是动静 shape,动静 shape 就是输出 tensor 的 shape 须要依赖输出的值能力计算出来的,如:输入一个 tensor 中所有大于 1 的数。如果是动态 shape 间接转换到 Abstract Kernel IR,如果是动静 shape 间接转换到 Kernel IR 的 Instruction 中。MGBFuseKernelPass:利用在 MGB IR 上,基于 mlir 的模板匹配的办法尽可能的实现 kernel 的交融,比方间断两个 typecvt 合并成为一个 typecvt 等(block-level optimizations,算子交融)。MemoryForwardingPass:将遍历 Abstract Kernel IR 所有可能不必计算,间接 share 输出内存的 Opr,如果这些 Opr 的确不必计算,则间接 forward memory,如果这些 Opr 须要进行内存搬运,则会用 Relayout Opr 替换原来的 Opr(node-level optimizations)。KernelMaterializationPass:将所有 Abstract Kernel IR 都装载上真正 Kernel code 并转化为 KernelCall,而后增加对应的 KernelDef。KernelCall 和 KernelDef 之间通过 symbol 进行匹配。StaticMemoryPlanningPass:将所有动态 shape 的 memref 进行内存布局,内存布局算法应用改良的 MegEngine 的内存布局算法--PushDown 算法,可能极大水平的压缩运行时内存使用量。同时将 mlir 的 memref.Alloc 替换为 Kernel IR 的 MemPlan,MemPlan 中次要记录了内存布局的一整块 memref 以及该 Tensor 在布局的内存中的偏移量(dataflow-level optimizations,动态内存布局)。下面的 Pass 就实现模型的图优化、内存布局以及 Kernel 生成,上文提到的后端优化即在 Kernel 生成阶段体现,目前 MegCC 次要应用人工优化的 Kernel 模版。最终能够依据 Runtime 中定义的模型格局 dump 编译之后的模型,以及生成计算模型所需的 Kernel 文件。 上面以一个简略的模型为例,应用 MegCC 的辅助工具(下载 Release 包) mgb-importer 和 megcc-opt,察看通过各个 Pass 的解决 IR 的变动。也可应用 mgb-to-tinynn 工具间接实现模型的编译过程,详见 MegCC 入门文档。 ...

May 30, 2023 · 6 min · jiezi

关于编译器:终于放弃了使用5年的Markdown笔记编辑器

问大家一个问题:你最罕用的笔记软件是哪一款? 想必大家可能列举很多笔记软件,印象笔记、有道云笔记、为知笔记、语雀.... 我最喜爱用的是Typora,目前曾经应用超过5年,一款口碑和应用体验俱佳的Markdown编辑器。 然而,本文的配角并不是Typora。 Typora很好,然而它也有很多弊病,比方团队协同、跨设施应用。 换句话说,Typora是一款实用于单机应用,场景比拟繁多的笔记软件。 而且,自2021年11月23日起公布1.0版本,开始成为免费软件。 明天要给大家介绍的这款工具名字叫Eraser,一款实用于团队合作的多合一构思工具。 Eraser容许用户应用markdown笔记编辑器、轻量级画布以思维导图进行迅速交换想法。 应用Eraser进行头脑风暴、图表绘制、线框设计等场景! Eraser是一个为近程合作而建设的可视化画布,它是轻量级的,无烦扰的,所以你能够专一于实现工作。 另外,Eraser是一款网页端工具,因而,不须要下载客户端,就能够在Windows、macOS、Linux、Android、iOS等设施下应用。 注册账号,登录Eraser网页端之后,会发现它有两个外围性能,能够应用Markdown作笔记,也能够应用画布绘制流程图。 笔记方面,它反对代码块、行内代码、题目、加粗等罕用的Markdown语法。 画布方面,能够反对绘制架构图、实体关系图、仪表盘等。 而且,它内置了很多罕用的模板,能够在这些模板的根底上疾速绘制想要的图形。 此外,它还有一点比拟吸引我的性能,就是能够间接导出为PDF文档。 这对于Markdown是一个十分亟待解决的问题,Markdown尽管应用起来十分不便,然而分享却是一个大问题,有一些工具须要借助插件能力实现PDF导出,然而格局和复杂度都能劝退很多人。 在这方面,Eraser也是十分吸引人的。 最初,Eraser目前完全免费,感兴趣的同学能够尝试一下。

May 27, 2022 · 1 min · jiezi