taichi的物理仿真效率

在从1.4.1版本升级taichi1.5.0后,我发现物理仿真的帧率有着显著性下降,这在后续会优化吗?
在从源码编译taichi1.6.0后,我尝试了unity 隐式有限元的demo,发现几个问题:
1、在更换更复杂的四面体模型后,现有的参数无法保证数值稳定,必须减小时间步长,或者降低杨氏模量,但是隐式有限元不是无条件稳定的吗?
2、在减小时间步长后,同等参数下,graph.py可以以较高帧率运行,但是kernel.py与unity中运行的帧率都会显著下降,这又是为什么呢?

1 个赞

我也遇到了同样的问题,通过对比不同版本的profile发现我的代码在运行示例的3D隐式有限元时,隐式积分的计算kernel有较大的运行时间差距

Hi,想问一下是在跑python脚本的时候性能有问题还是unity中性能有问题呢?

隐式方法理论上确实是无条件稳定,但是用迭代法求解线性系统可能因为迭代次数不够导致没解干净,所以出现了不稳定;在换更复杂模型后可以试试增加迭代次数,或者换用direct solver试试

都存在性能问题。
对于python脚本,使用相同模型相同参数,substeps=40时,cgraph.py计算效率显著高于kernel.py,cgraph.py的帧率能够达到35fps,执行kernel.py的帧率则只有4.6fps。
对于unity,在参数相同的情况下,帧率基本与kernel.py相同,在4帧左右,即使脚本是在执行计算图。

@tianlajiangjun 在python 环境下使用cgraph 能够有效的降低python 的launch overhead 所以在kernel 计算量比较小的情况下确实速度优势会大一些。
但是unity 里面应该cgraph 和kernel 的速度应该都差不多,但是理论上都该是35fps 这个级别,如果方便的话能否提供一个unity的复现脚本呢?