TVM Tutorials阅读笔记

  1. Quick Start Tutorial for Compiling Deep Learning Models

    入门 ,构造计算图,编译计算图。

  2. Cross Compilation and RPC

    远程开发,嵌入式开发,交叉编译的开发方法等

  3. Get Started with Tensor Expression

    张量表达式的快速入门学习,如何指定schedule,如何编译一个张量表达式等

  4. Compile Deep Learning Models

    编译其他架构下的计算图,主要是通过relay前端导入。重点看在relay中调用外部库,tf的导入编译这两个。

  5. Tensor Expression and Schedules

    张量表达式和schedule

    1. TEDD可视化调试工具

    2. 使用外部函数

      利用cublas,cudnn中函数的调用。

    3. 使用tuple来输入和reduce

      看样子是一个批量处理,就是一下处理两个tensor表达

    4. Reduction

      用规约来定义计算。在迭代轴axis上做split等操作,生成schedule,然后并行化等。这一部分的 Reduction Factoring and Parallelization和Cross Thread Reduction没有看懂

    5. scan 和 循环

      一种迭代计算模式,提供state的init、update方法,scan函数会给出n次迭代之后的结果。具体没有细看。

    6. 指令和数学函数

      一个接口,实现平台无关的数学调用。这里用expr做了示例。可以给特定平台做特化,也可以自己创建接口。

    7. schedule原语

      schedule的生成方式,split,tile,fuse,reorder,bind,compute_at,compute_inline,compute_root,结合示例即可看懂。tile像是二维的split。

    8. 使用tensor来利用硬件特性

      计算中调用手工kernel,这里用gemm调用一个嵌入汇编语言的gemv来做例子。使用s[C].tensorize(yi, gemv),特定的kernel代替某个axis。

  6. Optimize Tensor Operators

    张量算子优化

    1. 在GPU上优化卷积

    2. 在CPU上优化GEMM

    3. 使用tensorCore优化卷积

    4. 使用自动tensorCore代码生成优化GEMM

  7. Optimize Tensor Operators

    1. auto-tuning简单入门。定义knob,然后生成tasks,对tasks进行tuning

    2. 对卷积算子进行调优。

    3. 在GPU上调优卷积网络。从代码中可以看到是直接从一个计算图中提取任务的,这不用设置schedule吗?还是说都有默认的scedule生成方式呢。

  8. Developer Tutorials

    1. 自定义pass 分为analyze 和 transform两个步骤。

    2. How to Use Relay Pass Infra。 这一节没看懂,领会不到要解决的问题,先贴个标题

  9. TOPI: TVM Operator Inventory

    1. 对常见计算,常用算子,例如conv2d,softmax等,给出了一种更方便生成schedule的方法。解放了手动编写调优模板的过程。