CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    集群上OF不能跨节点并行

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

      各位大佬,最近我尝试在课题组的集群上运行OF,由于之前一直在工作站上跑,因此遇到一些问题,可能比较初级,求各位指点。

      课题组集群买后一直没什么人用,更别提Openfoam了。管理员给我开了一个普通账户,和我说在自己的账户下编译需要的程序即可。所以我参考咱们论坛上的一些方法,在我的普通账户下先编译了OpenMPI,然后又编译了OFv2006。

      目前,在我的账户下,可以向工作站那样运行算例,提交到单节点上也可以并行。但是,一旦我想采用多节点并行,就会出现如下问题:

      --------------------------------------------------------------------------
      By default, for Open MPI 4.0 and later, infiniband ports on a device
      are not used by default.  The intent is to use UCX for these devices.
      You can override this policy by setting the btl_openib_allow_ib MCA parameter
      to true.
      
        Local host:              cu07
        Local adapter:           mlx5_0
        Local port:              1
      
      --------------------------------------------------------------------------
      --------------------------------------------------------------------------
      WARNING: There was an error initializing an OpenFabrics device.
      
        Local host:   cu07
        Local device: mlx5_0
      --------------------------------------------------------------------------
      [cu07][[41116,1],0][btl_tcp_endpoint.c:626:mca_btl_tcp_endpoint_recv_connect_ack] received unexpected process identifier [[41116,1],11]
      [cu07:16231] 29 more processes have sent help message help-mpi-btl-openib.txt / ib port not selected
      [cu07:16231] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages
      [cu07:16231] 29 more processes have sent help message help-mpi-btl-openib.txt / error in device init
      

      错误提示为“ received unexpected process identifier”,我查了下,意味着节点之间通信阻塞了。我以前没接触过MPI相关的内容,不知道这个是什么原因导致?我看课题组的其他人在跑fluent的时候可以多节点并行,所以是否我的设置有问题?

      我使用的脚本如下。当nodes=2且ntasks-per-node=15时,会有上述问题,但当nodes=1且ntasks-per-node=30时,就没有问题了。

      #!/bin/sh
      #SBATCH --job-name=dambreak
      #SBATCH --nodes=2
      #SBATCH --ntasks-per-node=15
      #SBATCH --time=999:00:00
      #SBATCH --error="error.txt" 
      
      mpirun -np 30 interIsoFoam -parallel 2>&1 > log.interIsoFoam  
      

      刚开始学,请各位大佬给点建议,非常感谢:chitang:

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

        课题组集群买后一直没什么人用

        豪啊。另外多少钱买的,多少核?

        我看你说有管理员,他给你开了个普通账户。软件设置应该是管理员的工作。管理员平时干什么。。

        https://cfd-china.com/topic/5502 你先看一下这个,这就是跨节点跑openfoam的基本流程。

        当nodes=2且ntasks-per-node=15时,会有上述问题,但当nodes=1且ntasks-per-node=30时,就没有问题了。

        另外,你的意思跑2个节点,每个节点15核,一共30核没问题。1个节点30核就有问题了?你这个每个节点多少核。是不是30超过了物理核心数。

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

        C 1 条回复 最后回复 回复 引用
        • C
          CFDngu @李东岳 最后由 CFDngu 编辑

          @李东岳 感谢李老师回复,我之前还真没搜到你的这个帖子,我去学习一下,感谢!

          另外多少钱买的,多少核?

          我刚来这边,不太知道价格,一个计算节点信息如下:

          cu01
              state = free
              np = 56
              ntype = cluster
              status = rectime=1657244447,state=free,slurmstate=idle,size=0kb:0kb,ncpus=56,boards=1,sockets=2,cores=28,threads=1,availmem=380000mb,opsys=linux 3.10.0-862.el7.x86_64 #1 smp fri apr 20 16:44:24 utc 2018,arch=x86_64
          

          一个CPU节点56个核(还是28核56线程我也不太清楚。。。),共18个CPU节点,另外还有2个GPU节点,每个节点48核。

          我看你说有管理员,他给你开了个普通账户。软件设置应该是管理员的工作。管理员平时干什么。。

          这个事情一言难尽。买了节点后,实际上是我们这边的一个普通老师负责分配账户与资源,但是安装软件什么的他完全不懂。管理员就在买节点的时候拉了个群,后面我在群里提问,他很少回复,加好友也加不上。比如这个问题,我问了他就不理我,再解决不了我只找他电话打过去了。这个故事告诉我们买节点不要一下把钱都付了,否则人家都不理你。:136:

          另外,你的意思跑2个节点,每个节点15核,一共30核没问题。1个节点30核就有问题了?你这个每个节点多少核。是不是30超过了物理核心数。

          是单节点30核并行没问题;两个节点,每个15核就不行了,测试算例为dambreak。

          X 1 条回复 最后回复 回复 引用
          • X
            xpqiu 教授 @CFDngu 最后由 编辑

            @cfdngu

            https://www.open-mpi.org/faq/?category=openfabrics#ofa-device-error
            这个链接里面的 53 应该是对应你的情况。

            C 1 条回复 最后回复 回复 引用
            • C
              CFDngu @xpqiu 最后由 CFDngu 编辑

              @xpqiu 感谢邱老师回复。

              这个贴子我也搜到过,但我不确定前面的warning是否是问题所在,因为当我在一个节点上并行时,会出现如下提示(此时并行没问题,可以计算):

              By default, for Open MPI 4.0 and later, infiniband ports on a device
              are not used by default.  The intent is to use UCX for these devices.
              You can override this policy by setting the btl_openib_allow_ib MCA parameter
              to true.
              
                Local host:              cu01
                Local adapter:           mlx5_0
                Local port:              1
              
              --------------------------------------------------------------------------
              --------------------------------------------------------------------------
              WARNING: There was an error initializing an OpenFabrics device.
              
                Local host:   cu01
                Local device: mlx5_0
              --------------------------------------------------------------------------
              [cu01:51824] 29 more processes have sent help message help-mpi-btl-openib.txt / ib port not selected
              [cu01:51824] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages
              [cu01:51824] 29 more processes have sent help message help-mpi-btl-openib.txt / error in device init
              

              这里大部分信息与上面的一样,就是少了刚才的“ received unexpected process identifier”,所以我猜想,可能“ received unexpected process identifier”才是主要的,其他的或许没那么重要?也不知道按照您帖子里的方法能不能解决“ received unexpected process identifier”的问题,我一会试一下。

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

                @cfdngu 在 集群上OF不能跨节点并行 中说:

                这个事情一言难尽。买了节点后,实际上是我们这边的一个普通老师负责分配账户与资源,但是安装软件什么的他完全不懂。管理员就在买节点的时候拉了个群,后面我在群里提问,他很少回复,加好友也加不上。比如这个问题,我问了他就不理我,再解决不了我只找他电话打过去了。这个故事告诉我们买节点不要一下把钱都付了,否则人家都不理你。

                插一句非技术类的。我这面出机架式主动跟客户说可以压15%尾款。不过要是付全款那就更好了,哈哈!!并且软件都设置好,也都教好客户如何使用。基本就是傻瓜式,客户上来直接用就行了。

                你说那个问题我没遇到过。你可以试试节点之间ib通讯是否有问题,如果没问题,可能是openmpi的问题。这两个节点fluent可以跑?openfoam跑不了?那可能是openmpi的事。

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

                C 1 条回复 最后回复 回复 引用
                • C
                  CFDngu @李东岳 最后由 编辑

                  @李东岳 好的,谢谢李老师,我再研究一下,FLUENT是可以跑的,我看他们一个作业用了四个节点。

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

                    各位老师,最近比较忙,这几天终于抽出时间把这个问题解决了,但是也出现了新的问题。现在来和大家讨论一下,希望能帮到有需要的人,也希望各位能再给我一些建议。

                    首先,我参考这篇文章,解决了不能夸节点并行的问题:
                    链接文本

                    其方法就是在运行时通过添如下参数指定通信的地址:

                    --mca btl_tcp_if_include "通信地址“
                    

                    其中“通信地址”是通过ip addr命令获得的。

                    其次,参考邱老师提供的链接,通过添加如下参数解决“There was an error initializing an OpenFabrics device.”的问题

                    --mca btl '^openib'
                    

                    通过添加上述两个参数,现在运行时不会出现任何warning,跨节点并行也成功了。

                    然而,也出现了新的问题,就是跨节点并行的速度太慢了!我运行的算例是dambreak,所有设置保持默认不变,计算所需时间如下。

                    • 4核并行时:
                      双节点 (通信地址1) -- 686.79s
                      双节点 (通信地址2) -- 381.22s
                      单节点 -- 47.34s

                    • 30核并行时:
                      双节点 (通信地址1) -- 3030.08s
                      双节点 (通信地址2) -- 2183.42s
                      单节点 -- 90.28s

                    单节点并行时,由于网格总数较少(9000左右),4核并行的时间较短,这个我认为是合理的。但相较于单节点并行,跨节点并行非常消耗时间,且指定不同通信地址时计算时间也不一样,说明节点之间的通信占据了大部分时间,这个现象是不正常的吧?

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

                      各位,我发现问题所在了,是OpenMPI的问题。我换成intelMPI后,跨节点并行速度得到了极大的提升,双节点(每个节点双核,共4核)运行所需的时间缩短至72s左右。尽管还是比单节点上的运行时间(47s)长,但是这个结果也算是可以接受了。

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

                        单节点4核47秒,双节点每个2核72秒?

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

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