![](https://img-blog.csdnimg.cn/20190604215744654.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
TVM深度学习编译器
TVM是一个端到端优化堆栈,该端到端优化编译器堆栈可降低和调整深度学习工作负载,以适应多种硬件后端。TVM 的设计目的是分离算法描述、调度和硬件接口。
Mars_WH
微信:75582029 欢迎交流。从事图像深度学习相关开发,主方向:目标检测分割、模型压缩、引擎优化,常用语言:C++、Python,常用框架:Caffe、Pytorch、TensorFlow,常用技术:CUDA、TensorRT、TVM、Boost,常用系统:Linux、Windows,常用IDE:CLion、PyCharm、VS,常用编译工具:CMake、GCC,常用硬件:Jetson TX1/2,Tesla P4,海思Hi3559A,昇腾310,比特大陆BM1682
展开
-
TVM tutorials代码学习-from_darknet.py
TVM tutorials代码学习-from_darknet.py准备环境详解小结准备环境要运行tvm源码下tutorials/frontend/from_darknet.py代码需要额外安装cffi和cv2包 pip install cffi pip install opencv-python详解#导入包import numpy as np #计算库import matpl...原创 2019-10-05 10:49:36 · 989 阅读 · 1 评论 -
TVM Compiler中文教程:TVM为NVIDIA GPU自动调优卷积网络
文章目录TVM为NVIDIA GPU自动调优卷积网络加载依赖库定义网络设置调优选项开始调优使用多个设备扩展测量范围TVM为NVIDIA GPU自动调优卷积网络针对特定设备和工作负载进行自动调优对于获得最佳性能至关重要。这篇教程是关于TVM如何为NVIDIA GPU调优整个卷积网络。TVM中NVIDIA GPU的算子实现是以模板template形式编写的。模板有许多可调旋钮knobs(平铺ti...翻译 2019-06-16 19:46:15 · 3330 阅读 · 2 评论 -
TVM Compiler中文教程:TVM使用autotvm调优NVIDIA GPU上的高性能卷积
文章目录TVM使用autotvm调优NVIDIA GPU上的高性能卷积加载依赖库步骤一:定义搜索空间步骤二:搜索空间TVM使用autotvm调优NVIDIA GPU上的高性能卷积这是为NVIDIA GPU编写高性能可调模板的高级教程。通过在此模板上运行自动调优器,在许多情况下,我们可以胜过供应商提供的CuDNN库。加载依赖库安装步骤与TVM Compiler中文教程:使用TVM编写可调模板...翻译 2019-06-15 10:34:25 · 6298 阅读 · 5 评论 -
TVM Compiler中文教程:使用TVM编写可调模板和使用自动调优器
文章目录使用TVM编写可调模板和使用自动调优器加载依赖库第一步:定义搜索空间参数化调度使用更好的空间定义API第二步:搜索空间在TVM中使用自动调优器开始调优使用TVM编写可调模板和使用自动调优器这是TVM中auto-tuning模块的入门教程。auto-tuning分两个步骤:第一步定义搜索空间;第二步是运行搜索算法来探索这个空间。在本教程中,你可以了解如何在TVM中执行这两个步骤。下面通...翻译 2019-06-14 23:26:26 · 4876 阅读 · 1 评论 -
TVM Compiler中文教程:TVM如何优化CPU GEMM(矩阵乘法)
文章目录TVM如何优化CPU GEMM(矩阵乘法)准备和基线Opt1:分块Opt2:向量化Opt3:循环排布permuteOpt4:数组打包Opt5:为块写cacheOpt6:并行TVM如何优化CPU GEMM(矩阵乘法)TVM提供抽象接口,允许用户分别描述算法和算法的实施组织(所谓的调度Schedule)。通常,写高性能调度的算法时,会破坏算法的可读性和模块性。此外,尝试各种看似有用的调度是...翻译 2019-06-13 23:06:42 · 5067 阅读 · 2 评论 -
TVM Compiler中文教程:TVM如何生成优化GPU卷积
文章目录TVM如何优化GPU卷积准备和算法内存层次结构分块虚拟线程分裂并发数据获取生成CUDA内核TVM如何优化GPU卷积本教程,我们将演示如何在TVM中编写高性能卷积实现。我们使用方形尺寸的输入张量和滤波器作为示例,并假设卷积的输入具有大批量。在此示例中,我们使用不同的布局来存储数据,以实现更好的数据局部性。缓冲区布局为HWCN,代表高度,宽度,通道,批次。准备和算法我们使用固定尺寸14...翻译 2019-06-12 22:51:02 · 3707 阅读 · 2 评论 -
TVM Compiler中文教程:TVM使用张量化Tensorize利用硬件内联函数
文章目录TVM使用Tensorize利用硬件内联函数定义矩阵乘法调度矩阵乘法定义GEMV张量内联函数TVM使用Tensorize利用硬件内联函数这篇教程是关于在TVM中如何执行张量化的介绍。通过使用调度原语tensorize,人们可以用相应的内联函数替换计算单元,从而可以轻松利用手工制作的微内核函数,和扩展TVM来支持新的硬件架构。本教程的目的是展示tensorize的功能和用法,而不是提...翻译 2019-06-11 13:07:16 · 3826 阅读 · 1 评论 -
TVM Compiler中文教程:TVM调度原语(Schedule Primitives)
文章目录TVM调度原语(Schedule Primitives)分裂split平铺tileTVM调度原语(Schedule Primitives)TVM是用于高效内核代码构建的版本领域专用语言(Domain-Specialed-Language,DSL) 。这篇教程,我们将展示通过TVM提供的各种原语怎么去调度计算。from __future__ import absolute_impor...翻译 2019-06-10 13:03:22 · 8060 阅读 · 1 评论 -
TVM Compiler中文教程:TVM使用内联和数学函数
文章目录TVM使用内联和数学函数直接声明外部数学函数调用统一内联函数调用内部Lowering规则总结TVM使用内联和数学函数TVM支持基础算术运算操作,但是在很多情况下我们需要更复杂的內建函数。例如exp指数函数。这些內建函数取决于目标系统,在不同的平台可能有不同的名字。这个教程中,我们将学习调用目标特定的內建函数,和怎么能够通过TVM内联API统一接口。from __future__ i...翻译 2019-06-09 22:06:10 · 1916 阅读 · 0 评论 -
TVM Compiler中文教程:TVM中Compute和Reduction如何使用元组输入
Compute和Reduction使用元组输入我们通常希望在单个循环内计算具有相同维度的多个输出,或者,执行涉及argmax等多个值的缩减。在这篇教程,我们将介绍在TVM中元组输入。from __future__ import absolute_import, print_functionimport tvmimport numpy as npbatch计算对于具有相同维度的运算...翻译 2019-06-07 10:51:45 · 1691 阅读 · 0 评论 -
TVM Compiler中文教程:TVM调用外部张量函数的三种方法
外部张量函数虽然TVM支持透明代码生成,但有时将手动编写的代码合并到管道中也很有帮助。例如,我们想去为部分卷积和使用cuDNN和定义其他阶段。TVM原生支持黑盒函数调用。TVM支持兼容DLPack的所有张量函数。这意味着我们可以使用POD类型(pointer,int,float)或指向DLTensor的指针作为参数调用任何函数。from __future__ import absolute_...翻译 2019-06-04 21:53:12 · 1602 阅读 · 0 评论 -
TVM Compiler中文教程:TVM.Relay使用外部库
文章目录TVM.Relay中使用外部库创建一个简单的网络使用cuda后端构建和运行卷积层使用cuDNN实现验证结果结论TVM.Relay中使用外部库这篇教程介绍怎么在Relay中使用cuDNN、cuBlas这样的外部库。Relay在内部使用TVM生成特定目标的代码。例如,使用cuda作为后端,TVM为用户提供的网络生成所有层的cuda kernel代码。但是有时,将设备厂商提供的外部库合并到...翻译 2019-06-03 22:21:21 · 3593 阅读 · 1 评论 -
TVM Compiler中文教程:TVM部署SSD模型
部署SSD模型我们使用GluonCV预训练SSD模型和转换成Relay IR中间表示import tvmfrom matplotlib import pyplot as pltfrom tvm.relay.testing.config import ctx_listfrom tvm import relayfrom tvm.contrib import graph_runtimef...翻译 2019-06-03 09:46:22 · 2021 阅读 · 3 评论 -
TVM Compiler中文教程:TVM编译ONNX模型并执行
编译ONNX模型下面描述使用Relay如何部署ONNX模型:#安装onnx,https://github.com/onnx/onnxpip install onnx --user首先导入所需要的python包:import onnx import numpy as npimport tvmimport tvm.relay as relayfrom tvm.contrib.dow...翻译 2019-06-03 09:45:24 · 3552 阅读 · 0 评论