计算机图形学编程语言 Taichi(太极)v1.2.0 发布


Taichi(太极)v1.2.0 已经发布,这是专为高性能计算机图形学设计的编程语言。从 v1.2.0 版本开始,Taichi 遵循语义版本控制,其中从 master 分支 cutting 的常规版本会增加 MINOR 版本,而 PATCH 版本只有在挑出关键的 bug 修复时才会增加。

具体更新内容如下:

弃用通知

  • 在未来的版本中将不允许使用单个循环索引对多维的ti.ndrange()进行索引。

新的功能

离线缓存

v1.1.0 中引入了 CPU 和 CUDA 后端的离线缓存。在新版本中,Vulkan、OpenGL 和 Metal 后端也支持此功能。

  • 如果你的代码行为异常,官方建议通过在 ti.init() 方法调用中设置环境变量 TI_OFFLINE_CACHE=0 或 offline_cache=False 来禁用离线缓存,并在 Taichi 的 GitHub repo 上向提交一个 issue。
  • 有关详细信息,可参阅 Offline cache。

GDAR (Global Data Access Rule)

提供了一个 checker,用于检测可能违反全局数据访问规则的情况。

  1. 该 checker 仅在调试模式下工作。要启用它,可在调用ti.init()时设置debug=True
  2. 在使用时ti.ad.Tape()设置validation=True,以验证ti.ad.Tape()所捕获的内核
    如果发生违规,检查器会查明违反规则的代码行。

例如:

 

import taichi as ti
ti.init(debug=True)

N = 5
x = ti.field(dtype=ti.f32, shape=N, needs_grad=True)
loss = ti.field(dtype=ti.f32, shape=(), needs_grad=True)
b = ti.field(dtype=ti.f32, shape=(), needs_grad=True)

@ti.kernel
def func_1():
for i in range(N):
loss[None] += x[i] * b[None]

@ti.kernel
def func_2():
b[None] += 100

b[None] = 10
with ti.ad.Tape(loss, validation=True):
func_1()
func_2()

"""
taichi.lang.exception.TaichiAssertionError:
(kernel=func_2_c78_0) Breaks the global data access rule. Snode S10 is overwritten unexpectedly.
File "across_kernel.py", line 16, in func_2:
b[None] += 100
^^^^^^^^^^^^^^
"""

Performance

  • 改进 Vulkan performance with loops (#6072)

Python Frontend

  • 添加了 PrefixSumExecutor 以 prefix-sum operations 的性能。传统的 prefix-sum function 在每次函数调用时都会分配辅助 gpu 缓冲区,这会导致明显的性能问题。新的 PrefixSumExecutor 能够避免一次又一次地分配缓冲区。对于长度相同的数组,PrefixSumExecutor 只需要初始化一次,就可以执行任意次数的prefix-sum operations,而无需多余的字段分配。目前仅 CUDA 后端支持 prefix-sum operation。(#6132) 

    用法:

    N = 100 arr0 = ti.field(dtype, N) arr1 = ti.field(dtype, N) arr2 = ti.field(dtype, N) arr3 = ti.field(dtype, N) arr4 = ti.field(dtype, N) # initialize arr0, arr1, arr2, arr3, arr4, ... # ... # Performing an inclusive in-place's parallel prefix sum, # only one executor is needed for a specified sorting length. executor = ti.algorithms.PrefixSumExecutor(N) executor.run(arr0) executor.run(arr1) executor.run(arr2) executor.run(arr3) executor.run(arr4) 
  • 当调试模式打开时,现在可以对 Vulkan、CPU 和 CUDA 后端上的加法、减法、乘法和左移运算符进行运行时整数溢出检测。Vulkan 后端使用溢出检测需要弃用 printing,Vulkan 后端 64 位乘法溢出检测需要 NVIDIA driver 510 以上。(#6178) (#6279)

    For the following program:

    import taichi as ti ti.init(debug=True) @ti.kernel def add(a: ti.u64, b: ti.u64)->ti.u64: return a + b add(2 ** 63, 2 ** 63) The following warning is printed at runtime: Addition overflow detected in File "/home/lin/test/overflow.py", line 7, in add: return a + b ^^^^^ 
  • Unix/Windows 平台上的 Vulkan 后端现在支持 Printing。要在 vulkan 后端启用 printing,需要按照 https://docs.taichi-lang.org/docs/master/debugging#applicable-backends 中的说明进行操作 (#6075)

GGUI

  • 现在支持设置 GGUI 窗口的初始位置。参阅此链接 https://docs.taichi-lang.org/docs/master/ggui#create-a-window 查看详细信息和使用方法。(#6156)

更多详情可查看发布说明:https://github.com/taichi-dev/taichi/releases/tag/v1.2.0

 


相關推薦

2022-06-15

专为高性能计算机图形学设计的编程语言 Taichi(太极)已经发布 1.0.3 版本,这是一个维护版本,带来模块更新和一些 Bug 修复。主要内容如下: 模块 支持导入外部 Vulkan 缓冲区 ( #5020 ) 支持将 taichi 作为 AOT 模块的子目录 (

2022-07-19

v1.0.4 已经发布,这是专为高性能计算机图形学设计的编程语言。 具体更新内容如下: Highlights Documentation 修正错别字 (#5283) 更新 dev_install.md (#5266)  更新了 README 命令行 (#5199)  修改编译警告 (#5

2022-08-12

)v1.1.0 已经发布,这是专为高性能计算机图形学设计的编程语言。 具体更新内容如下: 新的功能 量化数据类型 高分辨率模拟可以提供出色的视觉质量,但通常受到板载 GPU 内存容量的限制。此版本添加了量化数据类型,

2022-09-21

Taichi 是专为高性能计算机图形学设计的编程语言。 目前 Taichi v1.1.3 发布了,此版本带来大量改进,摘录如下: 模块 添加纹理接口到 C-API ( #5520 )  Bug修复 使用 MacOS 禁用 vkCmdWriteTimestamp ,以在 Vulkan

2022-08-19

Taichi 是专为高性能计算机图形学设计的编程语言。 目前 Taichi v1.1.2 发布了,这是 v1.1.0 的错误修复版本。 完整的变更日志: [杂项] 升级版本到 v1.1.2 [Bug] [type] 修复 codegen 中存储 quant 浮点数的错误类型 ( #5818 ) [bug]

2023-02-06

ng 是一种开源的、命令式的、用于高性能数值计算的并行编程语言。它被嵌入到Python中,并使用即时编译器 (JIT) 框架,例如LLVM,将计算密集型的Python代码 offload 到本地GPU或CPU指令中。 具体更新内容如下: [ci] 注册版本时

2024-04-18

ng 是一种开源的、命令式的、用于高性能数值计算的并行编程语言。它被嵌入到 Python 中,并使用即时编译器 (JIT) 框架,例如 LLVM,将计算密集型的 Python 代码 offload 到本地 GPU 或 CPU 指令中。 亮点更新内容如下: Bug 修复

2023-05-15

ng 是一种开源的、命令式的、用于高性能数值计算的并行编程语言。它被嵌入到 Python 中,并使用即时编译器 (JIT) 框架,例如 LLVM,将计算密集型的 Python 代码 offload 到本地 GPU 或 CPU 指令中。 具体更新内容如下: 弃用通知

2024-05-29

MathLabTool 是一款数学仿真、图形化工具,可为数学相关的实验、仿真、图形化等各类需求,提供便捷工具。 可以为数据绘制各类 2D、3D 图形,视频、图像处理,显示实时串口数据图形,封装各类算法。 https://www.oschina.net/p/mathlab

2023-08-29

模型与底层技术 >>> 1985 年,Bjarne Stroustrup 首次发布 C++ 编程语言;38 年后的今天,他在与 Honeypot.io 平台的简短采访中提出了自己的一些人生建议。并调笑称,“提供建议很难,至少和接受建议一样困难”。 Bjarne Stroustrup 提

2023-02-26

MathLabTool 是一款数学仿真、图形化工具,可为数学相关的实验、仿真、图形化等各类需求,提供便捷工具。 可以为数据绘制各类 2D、3D 图形,显示实时串口数据图形,封装各类算法。 https://www.oschina.net/p/mathlabtool 更新功能列表

2023-07-04

SolidUI 是一个创新的项目,旨在将自然语言处理(NLP)与计算机图形学相结合,实现文生图功能。通过构建自研的文生图语言模型,SolidUI 利用 RLHF (Reinforcement Learning Human Feedback) 流程实现从文本描述到图形生成的过程。 https://git

2024-06-04

是大部分基础软件的实现语言,有着重要的地位。C和C++编程语言因为语法复杂,很多学生即使进行了系统学习,仍然难以编写出稳定且少错的程序,尤其是其中的指针和内存管理机制,令无数学生困扰不已。随着人工智能的发

2023-03-16

图像分类:  图像分类是指给定一张图像,通过计算机视觉技术来判断它属于哪一类别。图像分类是一种有监督学习任务,需要通过训练样本和标签来建立分类模型。在图像分类中,算法需要提取图像的特征,然后将其