使用 Taichi 在 A100 显卡实现五千核并行速度的计算流体程序 Taichi-LBM3D
时间:2022-10-16 22:53:25 阅读:150
流体流动是科学和工程中十分关注的问题:从风力发电设备,飞机和高铁的设计,天气预报,可回收的火箭,心脑血管疾病,到怎么端咖啡不会洒出来,流体流动和我们的生活息息相关。精准的计算可以帮助我们更好的预测、优化和控制流体的状态,而计算流体力学(CFD)则提供了准确的三维复杂流动的分析工具。
格子玻尔兹曼方法(Lattice-Boltzmann-Method,以下简称为LBM方法)是一种模拟流体流动的数值方法。和传统的计算流体力学不同,LBM方法的研究对象比宏观尺度小,主要变量是密度分布函数,流体的宏观质量和动量可以通过分布函数表达。由于方程不需要建立在连续介质假设之上,LBM方法在微纳尺度流动,多相流,多孔介质流,稀薄气体仿真和汽车空气动力学等众多领域都有广泛的应用。
LBM方法的在时间步推进上采用了纯显式的局部计算,非常适合并行运算。相对传统N-S方程求解的方法,LBM方法在复杂的几何结构上更容易生成网格。由于LBM方法的这些优点和广泛的用途,业界也诞生了一些以LBM方法为主要求解器的商用软件,例如Powerflow。
使用Taichi-LBM3D计算城市中的空气流动
LBM方法中,流体区域被分割为一块块的规则格子粒子的集合,其运动和相互作用被限制在规则的格子内,每一个格子有Q个方向,每个方向的粒子分布用分布函数表述。这些假想粒子比真实的流体分子大得多,但它们在密度和速度上表现出与宏观尺度上的真实流体相同的行为。流体的运动可以通过求解碰撞和迁移来实现。其中,碰撞过程只与格子本身有关,而迁移过程只与邻居格子有关。可以看出,LBM方法的运算都是显式(没有全局矩阵求逆)和局部运算,非常适合在图形处理单元(GPU)上进行并行计算。但是在具体实现时往往有以下的问题:
GPU语言,例如CUDA,OpenCL的编程难度较高,维护和扩展比较复杂
GPU程序的跨平台运行困难
多孔介质流中需要稀疏数据的存储和运算
taichi编程语言的出现很好地解决了以上问题,使得用户可以快速开发用于跨平台共享内存的多核CPU和GPU的LBM算例程序。taichi https://taichi-lang.cn/
格子玻尔兹曼方法(Lattice-Boltzmann-Method,以下简称为LBM方法)是一种模拟流体流动的数值方法。和传统的计算流体力学不同,LBM方法的研究对象比宏观尺度小,主要变量是密度分布函数,流体的宏观质量和动量可以通过分布函数表达。由于方程不需要建立在连续介质假设之上,LBM方法在微纳尺度流动,多相流,多孔介质流,稀薄气体仿真和汽车空气动力学等众多领域都有广泛的应用。
LBM方法的在时间步推进上采用了纯显式的局部计算,非常适合并行运算。相对传统N-S方程求解的方法,LBM方法在复杂的几何结构上更容易生成网格。由于LBM方法的这些优点和广泛的用途,业界也诞生了一些以LBM方法为主要求解器的商用软件,例如Powerflow。
使用Taichi-LBM3D计算城市中的空气流动
LBM方法中,流体区域被分割为一块块的规则格子粒子的集合,其运动和相互作用被限制在规则的格子内,每一个格子有Q个方向,每个方向的粒子分布用分布函数表述。这些假想粒子比真实的流体分子大得多,但它们在密度和速度上表现出与宏观尺度上的真实流体相同的行为。流体的运动可以通过求解碰撞和迁移来实现。其中,碰撞过程只与格子本身有关,而迁移过程只与邻居格子有关。可以看出,LBM方法的运算都是显式(没有全局矩阵求逆)和局部运算,非常适合在图形处理单元(GPU)上进行并行计算。但是在具体实现时往往有以下的问题:
GPU语言,例如CUDA,OpenCL的编程难度较高,维护和扩展比较复杂
GPU程序的跨平台运行困难
多孔介质流中需要稀疏数据的存储和运算
taichi编程语言的出现很好地解决了以上问题,使得用户可以快速开发用于跨平台共享内存的多核CPU和GPU的LBM算例程序。taichi https://taichi-lang.cn/
郑重声明:文章内容来自互联网,纯属作者个人观点,仅供参考,并不代表本站立场 ,版权归原作者所有!
上一篇:初探Taichi图形编程语言
相关推荐