Treaseven Blog

行胜于言

Bgbdsf Arxiv 2024


Operator

Various operator presentation

矩阵向量乘法GEMV: $O_i = A_{i,k} \circ B_k$ # 将矩阵A的每一行与向量B做内积运算,得到输出向量O A = [[1,2,3], [4,5,6]] B = [0.1,0.2,0.3] # 输出 O: # O[0] = 1*0.1 + 2*0.2 + 3*0.3 = 1.4 # O[1] = 4*0.1 + 5*0.2 + 6*0.3 = 3.2 O =...

HUMMINGBIRD OSDI 2020

A Tensor Compiler for Unified Machine Learning Prediction Serving

Motivation 传统机器学习模型缺乏共享的逻辑抽象,需要支持N各来自各种ML框架的操作符,M个部署环境,结果导致O(N*M)的组合爆炸问题,作者提出将N个操作符首先编译转换为K个核心张量操作,然后只需要确保K个核心操作在M个环境上高效运行,将复杂度从O(N*M)降低到O(N)+O(K*M),证明将传统机器学习运算统一到张量计算的可行性 面临的挑战: (1) 如何将传统预测流水线映...

SISTF OOPSLA 2020

A Sparse Iteration Space Transformation Framework for Sparse Tensor Algebra

Reference A Sparse Iteration Space Transformation Framework for Sparse Tensor Algebra

TVM 安装笔记

TVM install

安装依赖 CMake (>=3.24.0) LLVM (recommended >= 15) conda gcc 12.4.0 g++ 12.4.0 python (>=3.8) 官网教程 安装官网教程 按照官网教程安装,不过在编译的时候会出现问题 内存不够:将内存设置在20G,共享内存设置在8G gcc编译版本混乱: 使用anaconda环境,...

MLIR CGO 2021

MLIR Scaling Compiler Infrastructure for Domain Specific Computation

Motivation 解决软件碎片化问题 支持异构硬件编译 降低构建领域特定编译器的成本 连接现有编译器 Design principles Little Builtin, Everything Customizable [Parsimony] SSA and Regions [Parsimony] SSA是一种中间代码的表示形式,SSA形式要求每个变量只能被赋值一次...

CAT MICRO 2020

Optimizing the Memory Hierarchy by Compositing Automatic Transformations on Computations and Data

Motivation 内存密集型算子占据模型执行的大部分时间,为内存密集型算子优化设计相应的库是不可行由于其简单性,目前方法是采取融合的方法 在JIT内核融合技巧使用简单代码生成和融合搜索方法,它只关注内存访问优化,缺乏考虑计算特性,存在一个重复计算的问题 XLA使用的搜索的算法都是保守的 Overview data reuse fusionstitching system ...

AD HPCA 2022

Atomic Dataflow based Graph-Level Workload Orchestration for Scalable DNN Accelerators

Motivation 扩大计算资源不会带来成比例的加速由于其低利用率 Overview Optimizing techniques atomic tensor generation 优化原子的粒度的原因: 1.当执行原子每个引擎的高PE利用率 2.来自不同层的原子可以并行执行,它们应该有密切的计算延迟来避免负载不均衡 atomic DAG scheduling ...

CAT MICRO 2020

Optimizing the Memory Hierarchy by Compositing Automatic Transformations on Computations and Data

Motivation 在现有多面体编译器采取先融合后分块策略不能完全利用内存分层,作者提出通过重排分块和融合的顺序来避免分块、并行性和局部性之间的权衡 Overview constructing tile shapes extracting upwards exposed data tiling intermediate computation spaces the ...

TVM OSDI 2018

TVM An Automated End-to-End Optimizing Compiler for Deep Learning

源码阅读笔记 Get started Vector Add define the tvm computation creating a schedule compilation and execution # 原始程序 import numpy as np np.random.seed(0) n = 100 a = np.random.normal(size=n).ast...