rapidCFD
rapidCFD项目基于OpenFOAM 2.3.x开发,利用Thrust库,增添OpenFOAM的CUDA支持,目的是提高求解器速度。该项目对OpenFOAM原始项目改动较大,从前处理到矩阵元计算,到迭代求解器,都涉及Thrust库使用。
rapidCFD通过MPI启动分布式并行运行模式,支持多卡多机运行.
rapidCFD开发者主要使用CUDA8.0+K20 GPU开发测试环境,有些老旧。在CUDA11.2上环境上,需要对项目几处进行修改,可成功编译构建,对测试用例运行成功。
编译构建
-
编译环境
环境 | 说明 | 备注 |
---|
CPU | Xeon Gold 5220 | 6核 | CentOS 8.5/gcc 8.5.0 | | | CUDA 11.2 | A40 vGPU | 显存4G,计算能力8.6 | OpenMPI v4.1.1 | | |
-
构建细节, 变动说明
变动 | 说明 | 备注 |
---|
etc/bashrc | export WM_MPLIB=SYSTEMOPENMPI | 使用系统openmpi | wmake/rules/linux64Nvcc/c | cc = nvcc -ccbin=mpicxx -m64 -arch=sm_86 | 设置c编译器 | wmake/rules/linux64Nvcc/c++ | CC = nvcc -ccbin=mpicxx -Xptxas -dlcm-cg -std=c++14 -m64 -arch=sm_86 | 设置c++编译器 | src/dynamicFvMesh/solidBodyMotionFvMesh/multiSolidBodyMotionFvMesh.C | [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U653BVCz-1651543675288)(stuff/rapidcdf.1.png)]]] | forAllConstIter编译报错,需要加typename关键字 | src/OpenFOAM/matrices/lduMatrix/preconditioners/AINVPreconditioner/AINVPreconditioner.C | [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lxX3DkBn-1651543577179)(stuff/rapidcdf.2.png)] | 模板函数实例化,否则连接会报找不到符号错误 |
测试用例运行说明
cavity用例附带有生成的网格,运行成功。
damBreak-rapidCFD用例的网格用OpenFOAM-v2112的blockMesh工具生成,在单机单卡环境下运行成功。该用例支持并行区域划分,可在多卡多机环境运行。
网络资源
|