CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    一种集群非root用户编译OpenFOAM的方法-基于CentOS7

    OpenFOAM
    3
    5
    1411
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • S
      shepherd 最后由 编辑

      近期尝试了在集群环境下,使用非root用户编译OpenFOAM-7,成功了。
      主要参考了这个教程:集群系统centos7上OpenFOAM6的安装。

      非root用户在集群上采用编译安装的方法往往会失败,失败的原因基本上是因为缺乏必要的运行库。:135:
      因此成功编译安装OpenFOAM的关键就是解决非root用户无法在集群上安装自己想要的库的问题。
      上述引用教程里介绍了两种方法,这里主要介绍第一种方法——依赖库方法。
      同时根据实际操作我对教程内容也进行了一点内容补充与修改。

      一、 依赖库方法编译安装OpenFOAM的思路

      建立一个与集群系统版本一致的虚拟机,将编译OpenFOAM需要的库下载到虚拟机上,将下载下来的库从虚拟机中上传到集群系统,安装库,然后就能顺利编译OpenFOAM。

      二、建立虚拟机并下载所需库

      1)建立一个与集群系统版本一致的虚拟机。查看系统版本指令:

      uname -a
      

      这个是我的集群系统的内核版本,CentOS-7
      image001.jpg
      这是虚拟机内核版本
      image002.jpg
      (2)使用yum-utils的yumdownloader下载依赖库到虚拟机,所需的库应该有

      gcc, openmpi, binutils, cmake, hwloc, m4, scotch, zlib, libtool, flex, bison, boost, glibc
      

      (ps:这是根据我集群上成功编译之后所列出的OpenFOAM-7所需的依赖库列表,在实际操作的时候,集群只缺少了glibc和binutils,因此我只安装了这两个库)(这里的操作都需要root权限)

      • 安装yum-utils,指令:
      yum -y install yum-utils
      
      • 使用yumdownloader下载库,这里以下载boost和binutils为例
      su root
      yumdownloader boost binutils
      

      下载完成后就能在当前操作路径里看见这两个文件
      image003.png
      可以看见boost有下载了两个包,根据步骤(1)我们可以知道系统内核版本,这里是x86_64,因此保留此版本的包并上传到集群即可。

      三、上传依赖包至集群并安装(以binutils为例)

      (1)将依赖库上传到集群并解包。

      • 集中选择一个目录,比如~/packages/binutils,在里面解压包:
      rpm2cpio binutils-2.27-44.base.el7.x86_64.rpm | cpio idvm
      

      (2)将依赖包添加至~/.bashrc,添加binutils路径至文件底部

      vi ~/.bashrc
      export PATH=$PATH:/gpfs/<username>/packages/binutils/usr/bin/
      
      • 保存退出vim并
      source ~/.bashrc
      

      至此,第三方依赖库在集群上就安装全了,可以进行OpenFOAM的编译安装了。:chitang:

      四、编译安装OpenFOAM-7

      编译安装的步骤与普通步骤并无区别。

      (1)从官网下载OpenFOAM-7的源码包并放到主目录里的OpenFOAM目录文件夹下,即~/OpenFOAM/OpenFOAM-7/ 和~/OpenFOAM/ThirdParty-7/。

      (2)将OpenFOAM-7安装路径写入~/.bashrc并source ~/.bashrc。

      (3)根据集群上安装的gcc版本指定OpenFOAM的gcc编译器版本。

      • 在OpenFOAM-7目录下
      vi etc/bashrc
      
      • 找到以下内容
        image004.jpg
        我的集群版本的gcc是5.3.0,因此就写成WM_COMPILER=Gcc53。

      (4)编译ThirdParty

      • 打开ThirdParty-7目录
      ./Allwmake
      

      这里我们不在集群上安装paraview,下一步直接进行本体编译。

      (5)编译OpenFOAM本体

      • 打开OpenFOAM-7目录
      ./Allwmake
      

      耐心等待,过程比较漫长,应该能顺利编译完成。:142:

      1 条回复 最后回复 回复 引用
      • 李东岳
        李东岳 管理员 最后由 编辑

        感谢分享!!!

        线上CFD课程开始报名:http://www.dyfluid.com/class.html

        CFD高性能服务器 http://dyfluid.com/servers.html

        1 条回复 最后回复 回复 引用
        • S
          shepherd 最后由 编辑

          谢谢李老师!:yes:

          1 条回复 最后回复 回复 引用
          • cfd_xfx
            cfd_xfx 最后由 编辑

            太棒了,马克!!
            以前没有想到这么操作:136: 所以一直没用上超算orz

            逢山开路,遇水架桥
            对流换热强化

            S 1 条回复 最后回复 回复 引用
            • S
              shepherd @cfd_xfx 最后由 编辑

              @cfd_xfx 我也是,买了工作站之后才弄明白的:xinlei:

              1 条回复 最后回复 回复 引用
              • First post
                Last post