cuTile 历险记,第0集:心智模型

首先,(在通常意义上来说)cuTile不是一个库,是一门语言,因为他捕获了Python的源码并且使用了自己的编译器对这段代码进行编译、Lower、执行等操作。这一点在宏观上可以对比triton。

因此在使用cuTile的时候,要一直告诉自己 “This is not Python”.

Abstraction Level

作为用户需要知道的:这门语言工作在哪个抽象层级。这里指的是这门语言提供的接口,并不直接对应硬件。cuTile的compiler magic会把我们写的代码map到硬件上,但这并不是写cuTile的程序员需要关心的。

内存

从逻辑上来说,cuTile暴露给用户的内存分为两种:

编程模型

Global Array
Tile Array
示意图:

编程问题

问题输入

Tensor 级别的计算过程,比如:

cuTile是用来解决什么问题的

对于同一个算法,如何明智地加载数据、进行计算,可以减少Load/Store的数据量、增大计算密度,并且减少需要在Gmem上materialize的中间数据。

奇怪的想法

据nv的编译器工程师在各种talk里面所说,cuTile将会屏蔽所有硬件特异性的功能,交由编译器处理。如果是这样的话,其他硬件厂商是不是更方便在这一层级往下做?

参考