![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LLVM/TVM/编译理论
文章平均质量分 91
学习编译相关的记录
红鲤鱼遇绿鲤鱼
只要思想不滑坡,办法总比困难多~
展开
-
tvm tutorial (1.2)
紧接着上一篇实现了array packing对矩阵乘法进行优化的策略,接下来记录cache写回优化(block writing throung caching)cache的写回说头比较多,有两种情况,一种叫write back,另一种是write through,详细内容可以参考下面链接:https://blog.csdn.net/xingzhe22222/article/details/81988101矩阵C的写回操作也是跳跃式的,不利于...原创 2022-02-09 10:46:42 · 203 阅读 · 0 评论 -
tvm tutorial (1.1)
接着上次 tensor_expr_get_started.py 没记录完的部分继续剩下的代码如下,给出的样例是Nvidia GPU设备端的代码run_cuda = Falseif run_cuda: # Change this target to the correct backend for you gpu. For example: cuda (NVIDIA GPUs), # rocm (Radeon GPUS), OpenCL (opencl). tgt_gpu = tv原创 2022-02-08 13:26:09 · 1403 阅读 · 0 评论 -
tvm tutorials 记录(1)
第一篇文章记录了relay_quick_start.py文件中的内容,主要是展示了如何使用relay构建网络结构图,以及调用什么接口可以实现对网络进行编译优化并部署。接下来看一下tensor_expr_get_started.py这个文件,文件900多行,注释占了绝大部分,提供这个demo的作者人很实在。作者上来来了一段解释,原文如下:In this tutorial we will turn our attention to how TVM works with Tensor Expression原创 2022-02-03 19:32:01 · 1097 阅读 · 0 评论 -
tvm tutorials 记录(0)
个人学习tvm的笔记在tutorial目录下面有个get_started的目录,里面是很基础使用教程,就像目录说的一样,get start代码中的注释很多写的很清楚了,这里主要用于记录并扩充relay_quick_start完整源码如下,原始代码中使用的resnet18,这里我替换成了mobilenet,因为是在cpu上跑,使用Mobilenet会快一些。这里代码的目的就是加载一个mobilenet的网络模型,然后对网络模型进行计算图优化,得到优化后的图结构,并运行这个优化后的图。原创 2022-01-31 15:10:32 · 1953 阅读 · 0 评论 -
makefile && shell 记录
以 caffe中的Makefile为例,学习一下makefile的使用流程导入Makefile.config文件ifeq ($(wildcard $(CONFIG_FILE)),)$(error $(CONFIG_FILE) not found. See $(CONFIG_FILE).example.)endifinclude $(CONFIG_FILE)$(info info $(CONFIG_FILE))这部分是将Makefile.config的内容导入进来wildcard是扩展通配原创 2021-08-29 23:00:08 · 459 阅读 · 0 评论 -
first集&follow集&select集
first集:一些符号和定义:文法四元组G=(VT, VN, S, P)VT (vocabulary terminated): 终结符集合VN(vocabulary not terminated):非终结符集合S(start):开始符号P(production):产生式ε:表示空#:表示输入结束符,类似EOF→∗\stackrel{*}{\rightarrow}→∗:表示经过0次至多此推导句子:短语:句型:一般大写字母表示非终结符,小写字母表示终结符。文法式一套有限的规则,可以创原创 2021-06-12 18:54:12 · 1062 阅读 · 0 评论 -
mlir toy 教程(2)
本文翻译自MLIR 官网 TOY教程,附带个人理解与批注,内容仅用于个人学习与记录Chapter 2: Emitting Basic MLIRIntroduction: Multi-Level Intermediate Representation多级中间表示Other compilers, like LLVM (see the Kaleidoscope tutorial ), offer a fixed set of predefined types and (usually low-level原创 2021-02-11 21:09:55 · 1819 阅读 · 0 评论 -
C++ 性能相关(2)
视频网站上看到的内容,随手记录下来概念:instructions : 指令条数这里注意指令和机器指令的区别,指令包含数个机器指令,一个指令一半对应一个汇编的语句。uops: 微指令intel官方的解释是uOp, or micro-op, is a low-level hardware operation. The CPU Front-End is responsible for fetching the program code represented in architectural inst原创 2021-02-10 14:45:41 · 476 阅读 · 0 评论 -
mlir toy 教程(1)
本文翻译自MLIR 官网 TOY教程,附带个人理解与批注Chapter 1: Toy Language and AST第一章:Toy语言与AST注:ast为抽象语法树,这里需要有编译原理的基础,至少要知道各个组件是做什么的This tutorial will be illustrated with a toy language that we’ll call “Toy” (naming is hard…). Toy is a tensor-based language that allows you原创 2020-12-30 00:33:34 · 1488 阅读 · 0 评论 -
LLVM教程 (零)
文章简单翻译自LLVM totorial原始链接该教程需要有C++语言的编程基础,不过不需要有编译器相关的经验(要是有更好)这里完整的介绍了一个简单的语言实现,这个教程会展示的使用LLVM生成代码的一个具体例子。教程介绍了一个简单的语言,叫做“Kaleidoscope”,以迭代的方式在后面的几个教程章节中不断完事这个语言的构建。这样可以让我们涵盖大量的语言设计和LLVM的技术思想,随着搭建程序的过程不断展示和实验程序,并且减少大量的细节问题。注意:为了专注于编译器技术和LLVM,该教程不会展示一原创 2020-08-29 13:58:02 · 1614 阅读 · 0 评论