Taichi v1.1.0 发布:更小的内存占用、更快的启动速度

2022 年 8 月 11 日,Taichi v1.1.0 发布。该版本的新功能包括:可节省 1~8 倍内存的量化数据类型、离线缓存加速、前向模式自动微分、SharedArray(试验)及纹理的支持(试验)。改进了 GGUI、Python 前端用户的使用体验等。

新功能

量化数据类型

高分辨率仿真具有极佳的视觉效果,但往往受限于 GPU 显存的容量。v1.1.0 版本新增量化数据类型,允许用户自定义任意低精度整数(ti.types.quant.int )、定点数(ti.types.quant.fixed )或浮点数(ti.types.quant.float ),在硬件限制和仿真效果之间取得平衡。借助量化数据类型,理论上能节约最高 8 倍显存。 为了有效地使用量化数据类型,Taichi 还引入了新 API ti.BitpackedFields 与 SNode quant_array

离线缓存

v1.1.0 增加了离线缓存功能,可以将编译产物存储到磁盘上,当程序二次启动时,会自动加载该缓存,以大幅减少 Taichi 程序重复运行时启动 kernel 的编译开销。此功能默认开启,目前仅在 CPU 和 CUDA 后端有效。

v1.1.0 前后 Taichi 程序二次启动后的流程

启用离线缓存前、后在 CUDA 后端运行 cornell_box 时的启动时间

前向模式自动微分

当一个函数的输出数量大于输入数量时,前向自动微分的效率比反向微分要高很多。v1.1.0 添加了前向自动微分功能 ti.ad.FwdMode,用户可以通过 Taichi examples 中的 jacobian.py 来了解前向模式和反向模式下的 Jacobi 矩阵的计算样例。

SharedArray(试验性功能)

共享内存 (Shared memory) 是 GPU 上每个线程块共享的一块访问性能较高的小内存,并广泛应用于对性能要求很高的场景中。v1.1.0 通过在 ti. simt .block`` 下新增 SharedArray API 支持访问 GPU 共享内存,目前该功能适用于 CUDA 和 Vulkan 后端。从下图可见,基于 SharedArray 编写的 Taichi N-body 与同等的 CUDA 代码性能基本持平,甚至超过了后者

纹理(试验性功能)

Taichi v1.1.0 支持了 Vulkan 和 OpenGL 后端上的纹理采样和提取。ti.Texture 利用了硬件上的纹理支持,避免了在图像处理任务中手动编写双线性插值代码。该功能同时为栅格化或光线追踪等任务中的纹理映射提供了一个简单的方法。在 Vulkan 后端,Taichi 还支持图像加载和存储。用户可以直接操作图像的纹理元素,并在随后的纹理映射中使用这个图像。运行 ti example simple_texture,即可查看使用纹理的示例。

图片

改进

GGUI

  1. 支持使用 Scene.lines(vertices, width) 绘制 3D 线条。

  1. 支持绘制网格实例。目前支持传入变换矩阵来设置不同网格实例的位置和形态。

640 (1)

  1. 支持在调用 Scene.mesh() 和调用 Scene.mesh_inst ance() 时显示网格线框。

Syntax 语法

  1. @ti.dataclass

在 v1.1.0 中,Taichi 提供装饰器 @ti.dataclass 来定义结构体类型,也可以封装一些结构体通用的函数,使用更加方便。

  1. 更灵活地初始化自定义矩阵类型

Taichi 可以自动将用户输入的参数转换为一个与目标矩阵形状相匹配的矩阵。

  1. 更便捷的轴顺序调整

提高 Taichi 程序性能的一个常见方法是在内存中排布 field 数据时调整轴顺序。此前版本中,调整轴顺序需要对 Taichi 的数据定义语言(SNode)有深入了解,但在不需要稀疏数据结构的情况下,这可能成为一种额外的负担。Taichi v1.1.0 版本支持在定义 Taichi field 时方便的指定轴顺序。

图片

弃用声明

Python3.6

Taichi v1.0.0 版本发布文档中公告从 v1.1.0 起官方将不再提供 Python3.6 的 pypi 安装包,因此 v1.1.0 版本仅提供 Python 3.7 ~ 3.10 在各个平台上的安装包。

Taichi_GLSL

从 v1.1.0 版本开始,Taichi 将不再维护 PyPI 上的 taichi_glsl 包。taichi_glsl 相关功能已经在 taichi.math 内实现,包括数值计算、shader 开发中常用的函数和数据类型如:

  • 向量类型:vec2vec3 vec4

  • 矩阵类型:mat2mat3 mat4

  • step()clamp()smoothstep() 等 GLSL 函数。

MacOS 10.14

Taichi 将从 v1.2.0 起停止对 MacOS Mojave(发布于 2018 年的 10.14 版本)的支持。

点击 Release Notes 前往 GitHub 查看更详细的 API 变更、新功能说明以及代码示例!

快来体验一键安装新版 Taichi Lang​:point_down:

python3 -m pip install taichi --upgrade

并运行 taichi gallery​:point_down:

python3 -m taichi gallery

2 个赞