TaiChi v0.9.0 发布,引入矩阵动态索引和更稳定的 API
时间:2022-10-08 23:39:25 阅读:86
taichi(太极)0.9.0 已经发布,这是专为高性能计算机图形学设计的编程语言。该版本引进了矩阵的动态索引(实验功能)、改善了当前 API 集的稳定性...
新特性
1、矩阵的动态索引(实验功能)
之前版本的矩阵只能通过常量索引访问,导致有些操作无法执行。比如无法将向量中的最小元素钳制(clamp 运算)到 0 :
@ti.kernel
def clamp():
... # assume we have a n-d vector A
min_index = 0
for i in range(n):
if A < A[min_index]:
min_index = i
A[min_index] = 0
当然也可以利用循环展开,但这样写既不直观也不高效:
@ti.kernel
def clamp():
... # assume we have a n-d vector A
min_index = 0
for i in ti.static(range(n)):
if A < A[min_index]:
min_index = i
for i in ti.static(range(n)):
if i == min_index:
A = 0
有了这个矩阵动态索引的新特性,现在就可以平稳地运行第一段代码。此外,v0.9.0 版本添加了一个新的隐式 FEM(有限元方法)示例(),在这个例子中,为隐式时间积分构造了一个巨大的 (12 × 12) Hessian 矩阵。如果没有动态索引,整个矩阵构造循环需要展开,编译需要 70 秒;使用动态索引,可以应用传统的循环版本,编译时间缩短到 2.5 秒。
该矩阵动态索引特性可以通过设置 ti.init(dynamic_index=True) 来启用。
2、macOS 上的 Vulkan 后端
在 macOS 10.15+ 上添加对 ti.vulkan 后端的支持,现在可以在 MacBook 上运行 GGUI,运行以下 GGUI 示例:
# prerequisites: taichi >= v0.9.0 and macOS >= 10.15
# run GGUI examples
ti example fractal3d_ggui
ti example fem128_ggui
3、与 Google Colab 的兼容性
0.9.0 版本重构了编译器实现,使 Taichi 与 Google Colab 兼容。(如果在 Google Colab 笔记本环境中运行早期版本的 Taichi ,系统会崩溃 #235)
在 Google Colab 中运行 !pip install taichi 以安装 Taichi 。
功能改进
1.、更稳定、更完善的 API
0.9.0 版本重新组织包结构,并弃用一些过时或内部 API :
种类 已弃用的 API 替代品
Builtin max() ti.max()
Builtin min() ti.min()
Atomic operation obj.atomic_add() ti.atomic_add()
Image-specific ti.imread() ti.tools.imread()
Image-specific ti.imwrite() ti.tools.imwrite()
Image-specific ti.imshow() ti.tools.imshow()
Profiler-specific ti.print_profile_info() ti.profiler.print_scoped_profiler_info()
Profiler-specific ti.print_kernel_profile_info() ti.profiler.print_kernel_profiler_info()
完整的 API 更改列表请参阅此 Google 文档 。taichi https://taichi-lang.cn/
新特性
1、矩阵的动态索引(实验功能)
之前版本的矩阵只能通过常量索引访问,导致有些操作无法执行。比如无法将向量中的最小元素钳制(clamp 运算)到 0 :
@ti.kernel
def clamp():
... # assume we have a n-d vector A
min_index = 0
for i in range(n):
if A < A[min_index]:
min_index = i
A[min_index] = 0
当然也可以利用循环展开,但这样写既不直观也不高效:
@ti.kernel
def clamp():
... # assume we have a n-d vector A
min_index = 0
for i in ti.static(range(n)):
if A < A[min_index]:
min_index = i
for i in ti.static(range(n)):
if i == min_index:
A = 0
有了这个矩阵动态索引的新特性,现在就可以平稳地运行第一段代码。此外,v0.9.0 版本添加了一个新的隐式 FEM(有限元方法)示例(),在这个例子中,为隐式时间积分构造了一个巨大的 (12 × 12) Hessian 矩阵。如果没有动态索引,整个矩阵构造循环需要展开,编译需要 70 秒;使用动态索引,可以应用传统的循环版本,编译时间缩短到 2.5 秒。
该矩阵动态索引特性可以通过设置 ti.init(dynamic_index=True) 来启用。
2、macOS 上的 Vulkan 后端
在 macOS 10.15+ 上添加对 ti.vulkan 后端的支持,现在可以在 MacBook 上运行 GGUI,运行以下 GGUI 示例:
# prerequisites: taichi >= v0.9.0 and macOS >= 10.15
# run GGUI examples
ti example fractal3d_ggui
ti example fem128_ggui
3、与 Google Colab 的兼容性
0.9.0 版本重构了编译器实现,使 Taichi 与 Google Colab 兼容。(如果在 Google Colab 笔记本环境中运行早期版本的 Taichi ,系统会崩溃 #235)
在 Google Colab 中运行 !pip install taichi 以安装 Taichi 。
功能改进
1.、更稳定、更完善的 API
0.9.0 版本重新组织包结构,并弃用一些过时或内部 API :
种类 已弃用的 API 替代品
Builtin max() ti.max()
Builtin min() ti.min()
Atomic operation obj.atomic_add() ti.atomic_add()
Image-specific ti.imread() ti.tools.imread()
Image-specific ti.imwrite() ti.tools.imwrite()
Image-specific ti.imshow() ti.tools.imshow()
Profiler-specific ti.print_profile_info() ti.profiler.print_scoped_profiler_info()
Profiler-specific ti.print_kernel_profile_info() ti.profiler.print_kernel_profiler_info()
完整的 API 更改列表请参阅此 Google 文档 。taichi https://taichi-lang.cn/
郑重声明:文章内容来自互联网,纯属作者个人观点,仅供参考,并不代表本站立场 ,版权归原作者所有!
相关推荐