Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. 集群上OF不能跨节点并行

集群上OF不能跨节点并行

已定时 已固定 已锁定 已移动 OpenFOAM
10 帖子 3 发布者 6.7k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • C 离线
    C 离线
    CFDngu
    写于 最后由 编辑
    #1

    各位大佬,最近我尝试在课题组的集群上运行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 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #2

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

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

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

    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超过了物理核心数。

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    C 1 条回复 最后回复
  • C 离线
    C 离线
    CFDngu
    在 中回复了 李东岳 最后由 CFDngu 编辑
    #3

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

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

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

    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 在线
    X 在线
    xpqiu 超神
    在 中回复了 CFDngu 最后由 编辑
    #4

    @cfdngu

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

    C 1 条回复 最后回复
  • C 离线
    C 离线
    CFDngu
    在 中回复了 xpqiu 最后由 CFDngu 编辑
    #5

    @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 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #6

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

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

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

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

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    C 1 条回复 最后回复
  • C 离线
    C 离线
    CFDngu
    在 中回复了 李东岳 最后由 编辑
    #7

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

    1 条回复 最后回复
  • C 离线
    C 离线
    CFDngu
    写于 最后由 CFDngu 编辑
    #8

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

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

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

    --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 离线
    C 离线
    CFDngu
    写于 最后由 CFDngu 编辑
    #9

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

    李东岳李 1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    在 中回复了 CFDngu 最后由 编辑
    #10

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

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]