随笔:在超算-计算集群中编译安装OpenFOAM-5.x
安装的准备
现在OpenFOAM已经更新到了第十版,之所以安装5版本,是因为我个人现在做CFD-DEM耦合的工作,CFDEM耦合软件支持的OpenFOAM就是5.x版本。不管是哪一个版本,安装过程和准备文件是基本一致的。 安装过程主要参考如下博客和帖子: https://www.cfd-china.com/topic/4296/一种集群非root用户编译openfoam的方法-基于centos7 https://blog.csdn.net/weixin_41734903/article/details/105125214 https://blog.csdn.net/weixin_42230462/article/details/115555172
文件清单
采用编译安装方式,首要就是准备好OpenFOAM的源代码,这个通过git
clone或者下载官网上的源码压缩包就可以了。 1
2git clone git://github.com/OpenFOAM/OpenFOAM-5.x.git
git clone git://github.com/OpenFOAM/ThirdParty-5.x.git1
2su root #在本地虚拟机上输入密码,切换成为root用户
yum -y install yum-utils1
2
3
4
5
6
7
8
9
10
11
12cd ~/
mkdir packages #建立一个文件夹统一存放这些库
cd packages && mkdir binutils #在packages下面建立一个文件夹存放binutils库
yumdownloader binutils #下载这个库的软件包
#如果所有的库都按照这个顺序下载好了,可以先打包上传到集群中
#接下来就是解压库,然后将路径加入到bashrc,这里还是先在本地虚拟机操作,成功安装这些库,然后再在超算上实现一次
cd binutils
rpm2cpio binutils-2.27-44.base.el7_9.1.x86_64.rpm | cpio -idvm #解压包,然后可以在binutils文件夹下面发现多出一个usr文件夹
vim ~/.bashrc
export PATH=$PATH:$HOME/packages/binutils/usr/bin #将库文件目录加入到系统目录中,至此,这个库已经装好了
#重复以上步骤,依次安装所有的库,现在本地安装通过,再在超算上重复操作。保持两者一致性。1
2
3
4
5
6
7
8cd ~/
mkdir openmpi #建立openmpi的安装路径
cd OpenFOAM
cd Third-party-5.x/ #最好将openmpi源码解压到此文件夹下,因为可能会有一些找不到文件的错误
tar -zxvf openmpi-2.1.1.tar.gz #解压openmpi的源码
cd openmpi-2.1.1/
./configure --prefix=/home/username/openmpi/ #配置openmpi
make && make install #耐心等待安装完成1
./configure --prefix=/home/username/openmpi --with-ucx=/usr
1
2
3
4vim ~/.bashrc
export PATH=$PATH:$HOME/openmpi/bin
export LD_LIBRARY_PATH=/home/username/openmpi/lib:$LD_LIBRARY_PATH
source ~/.bashrc #让配置文件生效
编译OpenFOAM-5.x
到这里,我个人建议,是本地虚拟机和计算集群都执行一样的操作,保持一致性。这样也方便以后自己程序的调试,至于还有一个作用,在文末可以看到。
首先,需要将OpenFOAM的环境说明写入系统.bashrc文件里面: 1
source $HOME/OpenFOAM/OpenFOAM-5.x/etc/bashrc WM_LABEL_SIZE=64 WM_COMPILER_TYPE=system WM_COMPILER=Gcc WM_MPLIB=OPENMPI
1
2
3./Allclean
./Allwmake -j4
#如果在集群上,可以用更多核心编译,速度会变快 srun -c64 ./Allwmake -j641
2
3cd ~/OpenFOAM/OpenFOAM-5.x
./Allwmake -j4 #耗时数小时
#同理如果在集群上,可以用更多核心编译,速度会变快 srun -c64 ./Allwmake -j64
可能遇到的错误
目前我遇到的错误,绝大多数情况都是找不到mpi.h,这个是由于openmpi没有配置好。如果按照文中的步骤,最后能看到mpi的环境成功配置应该就没有问题。 其次,找不到****.h或者***.c大部分是因为缺少依赖库。例如我一开始在本地虚拟机安装了glibc,libtool库,但是集群中没有,编译一直不过,这个时候建议首先检查依赖库。 最后一个,如果Third-party能够成功编译,基本上OpenFOAM也能顺利编译,如果最后实在是编译不过,也找不到原因。可以将本地编译好的Thirdparty打包上传到集群再解压,然后再重新编译,这也是为什么要保持本地虚拟机和集群,操作系统以及安装操作一致性的原因。因为本地虚拟机,权限和上网可控,但是集群都不行,本地的编译出现问题较容易解决。 最后看一下我自己的.bashrc文件