|
Taichi起步于MIT的计算机科学与人工智能实验室(CSAIL),设计初衷是便利计算机图形学研究人员的日常工作,帮助他们快速实现适用于GPU的视觉计算和物理模拟算法。Taichi选择了一条创新的路径:嵌入于Python,使用即时编译(JIT)架构(如LLVM、SPIR-V),将Python源代码转化为GPU或CPU的原生指令,在开发时和运行时均提供优越性能。 m1 @( \( A& V
当然,以Python为前端的领域特定语言(DSL)不是什么新奇的创造。过去几年里,Halide、PyTorch、TVM等框架发展成熟,实际已塑造了图像处理、深度学习等领域的标准。Taichi与这些框架的最大区别在于其指令式编程范式。作为一种领域特定语言,Taichi并不专长于特定的某种计算模式。这意味着更大的灵活度。也许有人会假定灵活性需要牺牲优化程度,但对Taichi而言并非如此,主要有以下几个原因:
7 q: E+ i/ ~) o7 L Taichi的工作负荷呈现出不可利用的特点(如不支持逐元素运算),也就是说算法强度是固定不变的。只要切换到GPU后端,用户就可以收获明显的性能提升。 . y+ m/ E: j- w
传统深度学习框架使用的运算符都是简单的数学表达式,需要在计算图层面融合运算符,以实现更高的算法强度。但Taichi的指令式编程让用户能在一个kernel中轻松完成大量计算。我们将这样的kernel命名为mega-kernel。 # x4 g5 w8 B! k) s- | n
taichi使用各种编译器技术大幅优化源代码,包括公共子表达式消除、死码删除、控制流图分析。这些优化手段适用于各个后端,因为Taichi有自己的中间表示(IR)层。taichi https://taichi-lang.cn/
5 L/ n% W$ b* m8 H8 E: r% M- T |