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工具生成,在单机单卡环境下运行成功。该用例支持并行区域划分,可在多卡多机环境运行。
网络资源
- rapidCFD Github
- rapidCFD Test Github
- problem with multi GPU execution
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)