1
运行时
fortran移植手册中例子mpi编译失败
2022-09-15 21:03:24
139

正在测试4.2 Fortran程序移植简介 中最后的例子,程序见附件(粘贴复制,未作修改)。无mpi版本编译运行通过,mpi版本(intel-mpif90编译器+-DUSE_MPI flag)。错误信息和系统环境如下图所示。
其他信息,hipfort是利用ifort和icc编译的,已经测试过,并且4.2节中的例子在无串行版本已经通过了,所以应该不是hipfort的问题。使用前已经export HIPFORT_COMPILER=ifort和   <span class="hljs-keyword">export</span> HIPFORT_GPU=gfx906  了。其中makefile是按照手册4.2.2.3中的例子改的,那个例子中虽然有mpi的相关语句,但是似乎已经过时了,比如-lhip_hcc对应的libhip_hcc.so/.a 就无法在对应的路径里寻找到。所以,非常希望能完完整整提供一个现在昆山机器上能够编译运行成功的mpi+dcu的例子以及makefile和登录节点的系统环境以及所有需要export的环境变量。这样大家可以照葫芦画瓢,学的更快,也可以减少官方的负担。谢谢,辛苦了。

全部评论(8)
只看楼主
C
cooper_peng
楼主
3楼
多谢,搞定!另外有个相关的小问题,如果一个节点上有4张DCU,编号分别为0,1,2,3。其中一张编号为1的DCU被某个用户的程序申请并占用(例如call hipCheck(hipSetDevice(mod(myrank,1)))),然后我的任务脚本申请了剩下的3张DCU(编号为0,2,3),那么对于我的程序而言,这3张DCU是保持原有的编号0,2,3,还是重新连续编号为0,1,2呢?同样的问题对于多节点呢?比如2个节点一共8张卡,原先在各自节点是0-3的编号,现在同时被一个用户申请并使用,是对于各自节点上的进程保持原有的0-3的编号,还是统一编号为0-7呢?谢谢!
2022/9/16
T
tianlh
2楼
若运行多卡,脚本可参考下图
2022/9/16
C
cooper_peng
回复 @tianlh
多谢,搞定!另外有个相关的小问题,如果一个节点上有4张DCU,编号分别为0,1,2,3。其中一张编号为1的DCU被某个用户的程序申请并占用(例如call hipCheck(hipSetDevice(mod(myrank,1)))),然后我的任务脚本申请了剩下的3张DCU(编号为0,2,3),那么对于我的程序而言,这3张DCU是保持原有的编号0,2,3,还是重新连续编号为0,1,2呢?同样的问题对于多节点呢?比如2个节点一共8张卡,原先在各自节点是0-3的编号,现在同时被一个用户申请并使用,是对于各自节点上的进程保持原有的0-3的编号,还是统一编号为0-7呢?谢谢!
2022/9/16
T
tianlh
回复 @tianlh
跟研发同事讨论了一下,slurm调度应该会对用户可见DCU重新连续编号。正在跟负责slurm的同事确认,等有消息再告知您
2022/9/19
T
tianlh
回复 @tianlh
跟slurm同事确认了下,scontrol show job -d 可以查看申请到的DCU卡的物理索引,如(IDX:0-1,3),表示申请到了物理索引为0,1,3的3张DCU,对于程序而言,会重新连续编号为0,1,2。对于2节点,加入节点名称,进程号是0~7,DCU号仍为0~3。
2022/9/19
全部4条回复
T
tianlh
1楼

您好,环境变量没有问题,makefile和vasp.job中有几处修改,如下图所示,请对比看下。另外,如果在登录节点make,请提前export HIPFORT_GPU=gfx906

2022/9/16
C
cooper_peng
回复 @tianlh
多谢,搞定!
2022/9/16
没有更多内容了
--
楼主
Level.1
0 帖子
楼主热帖
暂无数据