当前位置: 首页 > news >正文

Triton Linalg编译

简介

triton-linalg是一个将Triton Dialect转换为Linalg Dialect的项目。

当前作为寒武纪Triton编译器的前端,几乎支持了所有Triton语言的特性。

在Triton转换为Linalg的过程中,遵从了几个原则:

  • 尽可能使用结构化(Structured)的Operator,避免使用linalg.generic(维持Operator的Coarse-Grained语义)。例如:

    • tt.reduce转换为linalg.reduce。

    • tt.dot转换为linalg.matmul。

    • arith和math中逐元素的Operator转换为对应的linalg.map版本

  • 尽早识别Operator的语义。例如:tt.reduce变换为linalg.pool。

源代码下载

clone源代码和submodule(triton):

git clone --recurse-submodules https://github.com/Cambricon/triton-linalg.git

查看triton-linalg的git log:

查看submodule triton的git log:

LLVM编译

查看配套的llvm的commit id:

clone llvm代码(可以选择任意目录,作者选择放到和triton-linalg平行的目录):

git clone https://github.com/llvm/llvm-project.git

再checkout到配套的commit id:

git checkout 10dc3a8e916d73291269e5e2b82dd22681489aa1

LLVM编译:

mkdir build && cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON ../llvm -DLLVM_ENABLE_PROJECTS="mlir;llvm;lld" -DLLVM_TARGETS_TO_BUILD="host;NVPTX;AMDGPU"
ninja -j$(nproc)

export LLVM路径,让后续Triton编译使用本地编译的这个LLVM:

export LLVM_BUILD_DIR=$HOME/llvm-project/build
export LLVM_INCLUDE_DIRS=$LLVM_BUILD_DIR/include
export LLVM_LIBRARY_DIR=$LLVM_BUILD_DIR/lib
export LLVM_SYSPATH=$LLVM_BUILD_DIR

Triton&Triton-Linalg编译

创建conda环境并激活:

conda create -n triton-linalg python=3.12
conda activate triton-linalg

安装依赖的包:

python3 -m pip install --upgrade pip
python3 -m pip install cmake==3.24 ninja pytest-xdist
sudo apt-get update -y
sudo apt-get install -y ccache clang lld

将triton-linalg加入triton的插件:

export TRITON_PLUGIN_DIRS=$(pwd)

启动编译:

pip install -e python --no-build-isolation -vvv

在编译过程中会下载编译所需的二进制,路径在~/.triton(老版本triton不支持配置):

http://www.dtcms.com/a/361967.html

相关文章:

  • 系统性学习数据结构-第二讲-顺序表与链表
  • K8S-etcd数据库的相关操作
  • DHT11-温湿度传感器
  • 基于单片机智能饮水机/智能热水壶
  • Redis 如何实现分布式锁,以及redis的适应场景分析
  • 【跨平台编译】【树莓派】在x86上编译树莓派上运行的CC++代码,搭建树莓派4B的跨平台编译环境
  • ccache编译加速配置
  • Meteor主题友链页面自研
  • Qt 的信号signal的参数是否会在内部被拷贝?
  • Vue3 中 Proxy 在组件封装中的妙用
  • 【网络安全入门基础教程】网络安全零基础学习方向及需要掌握的技能
  • Electron 应用生命周期管理:app 模块核心 API
  • 【 HarmonyOS 】错误描述:The certificate has expired! 鸿蒙证书过期如何解决?
  • 光学神经网络与人工智能应用
  • 网络流量分析——熟悉Wireshark
  • 【洛谷】【模板】栈、有效的括号、验证栈序列、后缀表达式、(stack相关算法题)
  • 腾讯位置商业授权微信小程序获取城市列表
  • rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(二十三)控件中常用文本格式
  • 玩转OurBMC第二十一期:前端页面仪表盘的设计与使用实践
  • js 海康视频插件的具体步骤
  • QMainWindow使用QTabWidget添加多个QWidget
  • Simulink库文件-一种低通滤波模块搭建方法
  • 优化正则表达式性能:预编译与模式匹配的最佳实践
  • 均值滤波和中值滤波的简介、C语言实现和实测
  • 边缘计算设备 RK3576芯片
  • CGroup 资源控制组 + Docker 网络模式
  • NLP大语言模型数据准备
  • NLP技术突破:浅层与深层语义分析全解析
  • 嵌入式学习(day37) 数据库 Sqlite相关命令函数
  • Salesloft OAuth漏洞影响范围大幅增加,波及所有集成应用