Taichi是否可以作为工业CFD领域的生产力工具?

最近看到很多大佬在论坛秀出了流体模拟的代码,十分佩服,我本人是做计算流体的,但是仅仅限于使用开源软件的修修改改,所以对徒手撸出一套求解器非常向往,遂来此学习。

最近比较好奇的是,Taichi是否可以作为工业CFD领域的生产力工具呢?目前该领域的代码大部分是基于C++和mpi并行套件开发的,而mpi并行感觉还挺麻烦的,Taichi语言在并行这一块则感觉方便很多。不知道对于大规模的并行,Taichi的并行效率和mpi是否可以媲美呢?如果真的相差无几,感觉未来工业CFD领域或许也能使用Taichi来开发。

期待大佬们的回复~

2 Likes

同样的问题,过来学习下。

CFD老手,Taichi新手前来谈谈我的理解,说的不对的地方请大佬们指出。

Taichi是面向图形学领域研究的一门语言。对于研究来说,重要的是能快速实现idea,同时写出来的代码也要具有可观的性能。Taichi的优势在于兼具脚本语言的生产力和静态语言的高性能,当然还有其它吸引人的地方比如支持多backend(对生产环境不挑,有python就能干活了)、支持稀疏矩阵、可微分计算等等。

说回CFD,如果是从事CFD算法研究的话,Taichi应该是可以满足需求的。目前taichi内部不支持mpi,但是可以在taichi的外层套一层python的mpi(待验证)。

上述的生产力,都是指科学研究的生产力。对于工业CFD而言,计算规模越大,就越有必要做极致的优化,毕竟省下来的电都是钱。这个时候可能还是用c或c++更合适,能够更接近底层的硬件,甚至做一些领域相关的优化。

1 Like

工业领域够呛吧。
现有的软件不如直接学习 taichi 的架构,没有必要重写一遍。
或者把 taichi 嵌入到软件中,让你们用来写 UDF 然后执行编译好的 kernel。

学术领域还是有机会的。
弄一张好点的显卡,用 taichi 写一些新的求解器、验证一些新方法,这样就挺合适。
taichi 看样子目前还没打算做集群部署的支持,多显卡目前也没有。

对于算法的快速实现,taichi是一个很好的选择,但是工业级的应用,静态的语言很多地方不太好用,而且不支持mpi几乎是没办法部署的 。
因此taichi目前最大的意义还是在于学习和交流。

我觉得并不是,其实PyFR就是类似的思路,用python实现DSL(这块Taichi更加高级,是基于AST的变换的,按我的理解,而PyFR是基于template的),这样很容易达到很高的FLOPs,但是实际的CFD有很多子模型,怎么有效地嵌入还是需要研究的。

至于性能,我觉得DSL完全可以做到更极致的优化,因为high level的信息更多,更容易做一些高层级的优化,而且differentiable也将是一个很大的优势,比如在实现adjoint, VVUQ等方面。

1 Like