专为高性能计算机图形学设计的编程语言 Taichi(太极)已经发布 1.0.0 版本,这是一个里程碑版本,同时带来大量新特性,另外需要注意的是:许可证从 MIT 改成了 Apache 2.0 。
许可证变更
Taichi 的许可证在公开投票后从 MIT 更改为 Apache-2.0 。#4607
Python 3.10 支持
此版本在所有受支持的操作系统(Windows、macOS 和 Linux)上支持 Python 3.10。
Manylinux2014 兼容
在 v1.0.0 之前,Taichi 仅适用于支持 glibc 2.27+(例如 Ubuntu 18.04+)的 Linux 发行版。从 v1.0.0 开始,除了普通的 Taichi 轮子,Taichi 还提供了 manylinux2014 兼容的轮子,可以在大多数现代 Linux 发行版上运行,包括 CentOS 7。
新功能
非 Python 部署解决方案
通过与 OPPO 美国研究中心合作,Taichi 提供了 Taichi AOT,这是一种用于在非 Python 环境(例如移动设备)中部署内核的解决方案。
编译的 Taichi 内核可以从 Python 进程中保存,然后由提供的 C++ 运行时库加载和运行。通过一组 API, Python/Taichi 代码可以轻松部署在任何 C++ 环境中。点此查看taichi-aot-demo
repo。
注意,目前 Taichi 仅支持 C++ 运行时库中的 Vulkan 后端。
real 函数(实验)
所有 Taichi 函数在编译期间都内联到 Taichi 内核中。但是,如果太极函数调用过多,内核就会变得冗长并且需要更长的编译时间。如果 Taichi 函数涉及编译时递归,这一点尤其明显。
这个版本引入了“real function”,一种新型的 Taichi 函数,它可以独立编译而不是内联到内核中。这是一项实验性功能,目前仅支持标量参数和标量返回值。
文字的类型注释
从 v1.0.0 开始,可以为文字编写类型注释:
@ti.kernel
def foo():
a = ti.u32(2891336453) # similar to 2891336453u in C
math
模块
此版本添加了一个math
模块来支持 GLSL 标准矢量操作,并使其更容易将 GLSL 着色器代码移植到 Taichi。
CLI 命令 ti gallery
此版本引入了 CLI 命令 ti gallery,允许在弹出窗口中选择和运行 Taichi 示例。比如:
ti gallery
弹出一个窗口:
单击可运行弹出窗口中的任何示例,控制台会同时打印相应的源代码。
改进
增强矩阵类型
从 v1.0.0 开始,Taichi 接受矩阵或向量类型作为参数和返回值,可以使用ti.types.matrix
或ti.types.vector
作为类型注释。
Taichi 还支持基本的只读矩阵切片,使用mat[:,:]
语法快速检索矩阵的特定部分。
assert
语句中的 f 字符串支持
此版本支持在assert
语句中包含 f 字符串作为错误消息,可以在 f 字符串中包含标量变量。
更多详细内容可在发行公告中查看。