triton学习:源码结构解析
研读使用代码版本:Triton v3.5.1
源码结构目录
核心目录如下:
utils:存放项目配置文件unittest:存放单元测试代码third_party:存放第三方库的代码test:存放测试代码python:存放Python接口代码lib:存放功能实现的核心代码include:存放功能定义的核心代码
include和lib目录
两个目录中的子目录结构类似,都包含以下文件夹:
Analysis:用于进行相关分析Conversion:负责不同dialect之间的转换Dialect:各级中间表示(IR)的定义及优化pass,包含Gluon、Triton、Triton-GPU、TritonInstrument、TritonNvidiaGPUTarget:将LLVM-dialect降级到LLVM-IR,并链接外部数学库Tools:包含一些辅助工具的头文件,用于分析和调试生成的代码
Analysis目录
Alias.cpp:用于内存别名分析Allocation.cpp:用于共享内存分配相关的分析AxisInfo.cpp:实现轴分析相关的内容Membar.cpp:与线程同步内存屏障相关Utility.cpp:一些相关组件
Conversion目录
TritonToTritonGPU:负责将Triton-dialect降级到Triton-GPU-dialectTritonGPUToLLVM:负责将Triton-GPU-dialect降级到LLVM-dialect
Dialect目录
以 triton 目录为例,每一级中间表示目录下都包含以下两个文件夹:
IR:包含 dialect、算子、属性以及类型的定义Transforms:存放相应的中间表示上的优化pass
transforms 作用于各级中间表示 dialect 之上,而 conversion 作用于各级中间表示 dialect 之间。
Target目录
用于将 LLVM-dialect 降级到 LLVM-IR,并为其添加元数据以及链接外部数学库。
Tools目录
包含了一些辅助工具的头文件,帮助开发者更好地分析、调试和优化生成的代码。
以上目录结构解析参考自 Triton 源码目录结构