Triton : OpenAI 开发的用于Gpu开发语言
Triton : OpenAI 开发的用于Gpu开发语言
https://openai.com/blog/triton/
1、介绍
https://openai.com/blog/triton/
2、git地址
https://github.com/openai/triton
3、论文
http://www.eecs.harvard.edu/~htk/publication/2019-mapl-tillet-kung-cox.pdf
SIMD : Single Instruction Multiple Data,单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集
SP : stream processor,为一个线程thread运行的资源,有指针,和register file
SM : 包括多个SP,有取指单元。SM取一个指令,多个thread在多个SP上公用这个指令处理不同的数据
1、wrap
32个thread被封为一个wrap,跑在一个SM(8个sp)上
为什么不是8个thread?因为每个thread会有四个周期的延迟,这样32个thread形成4级流水线。
同一个wrap内的多个线程的执行速度不同,因此会存在一个barrier的操作,等待一个wrap内的所有线程执行完毕,即统一。
2、block
一个block里面有多个wrap。
多个wrap在一个SM上切换,为什么要切换呢?因为有的wrap可能因为等待数据之类的操作而延迟,切换就会让速度快起来。
只有一个block里面的wrap都已经执行完毕之后,SM才会跑下一个block的程序。
3、grid
多个block组成了grid。
grid即网格,一般是一个gpu对应一个grid,当然随着发展,也会一个gpu对应多个grid