查看原文
其他

Taichi v0.9.0 发布,Mac 终于支持 GGUI 了!

太极图形 太极图形 2023-03-21
2022 年 2 月 22 日,太极图形团队发布了 Taichi v0.9.0。该版本公布的新功能包括:动态矩阵下标、Vulkan 后端在 macOS 上的支持、Google Colab 适配。重要改进包括:更稳定且组织更合理的 API、更优的报错信息、文档站优化等。


新功能


1. 矩阵的动态下标(实验功能)在之前的 Taichi 版本中,矩阵只能通过常量下标访问。因此,你没有办法直接完成一些诸如把一个向量的最小值抹成 0 的常用操作:


当然你也可以用下面的方法(强制循环展开)绕过去,但这不够直观,效率也较低:


有了矩阵动态下标这一实验功能之后,你就可以顺畅地用前一种方式来写程序了,通过设置 ti.init(dynamic_index=True) 即可开启
在 v0.9.0 中,我们还加入了一个新的示例程序——隐式有限元弹性物体仿真 (ti example implicit_fem),同样展现了动态下标功能的好处。在这个示例程序中,我们构建了一个较大(12 × 12)的海森矩阵用于隐式时间积分。如果没有动态下标功能,整个矩阵的构造循环需要被展开,使得编译时间需要 70 秒;而有了动态下标功能,直接按传统方式写循环就可以,编译时间减少到了 2.5 秒。


2. Vulkan 后端在 macOS 上的支持v0.9.0 添加了 macOS 10.15 以上系统版本的 ti.vulkan 后端支持,因此 Mac 上也可以和其他平台一样使用 GGUI 了。


以下是一些简单的 GGUI 样例程序的使用方式:



3. 与 Google Colab 适配如果之前你曾尝试在 Colab 上使用 Taichi,你可能发现 Colab 的系统会崩溃。在 v0.9.0 中,我们修复了导致该问题的代码,从而使 Taichi 可以在 Colab 上顺利运行。欢迎大家在 Colab 上畅享 Taichi 新版本!


改进


1. 更稳定、组织更合理的 API我们非常重视保持 API 的长期稳定性, 并希望用户使用正确的 API 集合。为此,在这次的发布中我们重新整理了模块的结构,废弃了一些过时的 API,并隐藏了一些内部的 API。一些主要的改动有:


2. 更简洁精准的报错信息在 Taichi 以往的版本中,编译错误经常会抛出很长的报错信息,其中大部分都对用户没有任何帮助。因此,用户往往需要花费很长的时间来阅读报错信息和定位出错的代码。在此次的更新中,我们精简了报错信息,只留下对用户有用的部分,大幅改善了用户的调试体验。
例如,对于下面的代码,


之前,Taichi 的报错信息像这样:





滑动可看,此处有 41 行


在 v0.9.0,报错信息变成了这样:


3. 更新的文档站为了提升可读性和用户体验,我们重构了 Taichi 的文档站,并把新的 API 参考站(文档站右上角)整合其中。


加入我们的讨论共同打造下一个 Taichi 版本!Taichi 社区始终是 Taichi 编程语言发展的核心动力。我们希望,每一个使用 Taichi 的你,都可以积极参与到 Taichi 发展道路的讨论中来,自由地发表自己的想法,一起打造更好的下一个 Taichi 版本。除了提 issue 外,我们还非常欢迎大家到 GitHub 的讨论区发言。
在讨论区内,最近一个比较热门的话题是类型定义和对象构造的方式(#4086, #4183)。简单来说,由于刚接触 Taichi 的同学有时会对 ti.Vector,ti.types.vector,ti.Vector.field 等一系列相似却又不同的 API 感到困惑,我们希望让他们变得更清晰,一种可能的改变方向是:
  • 类型名一律用小写;

  • 用 ti.types.vector 来定义一个向量类型;

  • 定义完类型如 my_vec2i = ti.types.vector(2, ti.i32) 后,用 my_vec2i([5, 10]) 来构造一个向量对象;

  • 为了方便,依然保留 ti.vector([1, 2]) 作为 ti.types.vector()([1, 2]) 的等价表达,由编译器完成对缺失类型信息的自动推导;

  • 使用 ti.field(dtype=my_vec2i, shape=100) 来构造一个 field 对象。 


太极图形研发团队期待聆听你们的观点!阅读原文前往 GitHub 查看完整发布信息。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存