Taichi Lang:用 Python 语法写出 GPU 高性能代码

Taichi Lang 是一个嵌入 Python 的并行编程语言,目前在 GitHub 上获得了 2.8 万星标。它的核心目标很明确:让你用接近 Python 的语法写出能跑在 GPU 和 CPU 上的高性能代码,不用碰 C++ 或 CUDA。

正文顶部截图

物理模拟、数值计算、视觉特效这些场景对性能要求很高,传统做法是用 C++ 写核心计算逻辑,再封装成 Python 库调用。这个流程门槛高、调试麻烦。Taichi Lang 的做法是在 Python 里加几个装饰器,代码写完直接 JIT 编译成 GPU 或 CPU 指令执行。

安装很简单,pip 直接装:

pip install taichi
ti gallery

第二行命令会弹出一个 demo 画廊,里面有各种物理模拟示例,几分钟就能跑起来看效果。

它的语法和 Python 几乎一样。比如下面这段分形渲染代码:

import taichi as ti
ti.init(arch=ti.gpu)
n = 320
pixels = ti.field(dtype=float, shape=(n * 2, n))

@ti.kernel
def paint(t: float):
    for i, j in pixels:
        c = ti.Vector([-0.8, ti.cos(t) * 0.2])
        z = ti.Vector([i / n - 1, j / n - 0.5]) * 2
        iterations = 0
        while z.norm() < 20 and iterations < 50:
            z = ti.Vector([z[0]**2 - z[1]**2, z[1] * z[0] * 2]) + c
            iterations += 1
        pixels[i, j] = 1 - iterations * 0.02

整体代码结构跟普通 Python 没太大区别,只是多了 @ti.kernel@ti.func 装饰器。编译器会自动把这部分代码转成并行的 GPU 或 CPU 机器码。

README区域截图

Taichi Lang 的应用面挺广。官方示例里有流体模拟、弹性体变形、3D 渲染、烟雾效果等,覆盖物理仿真、AR、机器人、影视特效、通用计算等方向。它支持 CUDA、Vulkan、Metal、OpenGL 等主流后端,写一次代码能在不同硬件上跑。

它内置了一种叫 SNode 的数据结构,用来组织分层多维字段。这个机制对空间稀疏计算很实用,比如处理大场景中只有局部区域需要精细模拟的情况,能省不少内存和算力。

Taichi Lang 还集成了可微编程。用 @ti.kernel 写的函数可以自动求导,这对物理仿真和机器学习场景很实用。官方仓库里有个 DiffTaichi 项目,就是用这个特性做物理模拟的可微优化。

性能方面,Taichi Lang 的 JIT 编译器基于 LLVM,能把 Python 代码编译成高效的 GPU 或 CPU 机器码。实际测试中,它的执行速度接近手写 CUDA 的水平,但开发效率比 CUDA 高很多。

项目有 SIGGRAPH Asia 2019、ICLR 2020、SIGGRAPH 2021 等顶会论文支撑,代码按 Apache 2.0 协议开源。社区也比较活跃,Discord 和 GitHub Discussions 上都有人在讨论问题。

对于做图形学、物理仿真或需要榨干 GPU 性能的开发者来说,Taichi Lang 是个值得关注的选项。它把高性能计算的门槛拉低了不少,让更多人能用熟悉的 Python 语法写出接近底层性能的代码。

注的选项。它把高性能计算的门槛拉低了不少,让更多人能用熟悉的 Python 语法写出接近底层性能的代码。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐