基于
Python
的大规模高性能
LBM
多相流模拟
徐传福
;
王曦
;
刘舒
;
陈世钊
;
林玉
【期刊名称】
《计算机科学》
【年
(
卷
),
期】
(047)001
【摘要】
Python
由于具有丰富的第三方库、开发高效等优点
,
已成为数据科学、
智能科学等应用领域最流行的编程语言之一
.Python
强调了对科学与工程计算
的支持
,
目前已积累了丰富的科学与工程计算库和工具
.
例如
,SciPy
和
NumPy
等
数学库提供了高效的多维数组操作及丰富的数值计算功能
.
以往
,Python
主要作
为脚本语言
,
起到连接数值模拟前处理、求解器和后处理的
"
胶水
"
功能
,
以提升数
值模拟的自动化处理水平
.
近年来
,
国外已有学者尝试采用
Python
代码实现求解
计算功能
,
并在高性能计算机上开展了超大规模并行计算研究
,
取得了不错的效果
.
由于自身特点
,
高效大规模
Python
数值模拟的实现和性能优化与传统基于
C/C++
和
Fortran
的数值模拟等具有很大的不同
.
文中实现了国际上首个完全基
于
Python
的大规模并行三维格子玻尔兹曼多相流模拟代码
PyLBMFlow,
探索
了
Python
大规模高性能计算和性能优化方法
.
首先
,
利用
NumPy
多维数组和通
用函数设计实现了
LBM
流场数据结构和典型计算内核
,
通过一系列性能优化并
对
LBM
边界处理算法进行重构
,
大幅提升了
Python
的计算效率
,
相对于基准实
现
,
优化后的串行性能提升了两个量级
.
在此基础上
,
采用三维流场区域分解方法
,
基于
mpi4py
和
Cython
实现了
MPI+OpenMP
混合并行
;
在天河二号超级计
算机上成功模拟了基于
D3Q19
离散方法和
Shan-Chen
BGK
碰撞模型的气液
两相流
,
算例规模达百亿网格
,
并行规模达
1024
个结点
,
并行效率超过
90
%
.
【总页数】
7
页
(17-23)