计算化学公社

 找回密码 Forget password
 注册 Register
Views: 14118|回复 Reply: 20
打印 Print 上一主题 Last thread 下一主题 Next thread

[并行运算] openmpi安装运行问题

[复制链接 Copy URL]

26

帖子

0

威望

349

eV
积分
375

Level 3 能力者

我刚刚装了openmpi-1.10.2版本,按照网上的方法安装的,设置好环境变量之后运行了下,mpirun -np 4 hello_c,但是结果并没有4个进程,只有一个进程,却重复了4次;但在运行mpirun -np 4 hello_usempi.f90时,出现提示:mpirun noticed that the job aborted, but has no info as to the process that caused that situation。
请问这是什么原因?                              

300

帖子

0

威望

4192

eV
积分
4492

Level 6 (一方通行)

2#
发表于 Post on 2017-1-6 12:58:59 | 只看该作者 Only view this author
你应该发下代码

26

帖子

0

威望

349

eV
积分
375

Level 3 能力者

3#
 楼主 Author| 发表于 Post on 2017-1-6 16:37:53 | 只看该作者 Only view this author
archer 发表于 2017-1-6 12:58
你应该发下代码

我用了两个测试的例子,一个是程序自带的hello_c,还有一个是下载的hello_c,但出现的结果都是一样的。
#include <stdio.h>
#include "mpi.h"

int main(int argc, char* argv[])
{
    int rank, size, len;
    char version[MPI_MAX_LIBRARY_VERSION_STRING];

    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &size);
    MPI_Get_library_version(version, &len);
    printf("Hello, world, I am %d of %d, (%s, %d)\n",
           rank, size, version, len);
    MPI_Finalize();
}
另一个是
   #include<stdio.h>
    #include"mpi.h"

    int main(int argc, char *argv[]){
            int totalTaskNum, rankID;

            int rt = MPI_Init(&argc, &argv);
            if(rt != MPI_SUCCESS){
                    printf("Error starting MPI.\n");
                    MPI_Abort(MPI_COMM_WORLD, rt);
            }

            MPI_Comm_size(MPI_COMM_WORLD, &totalTaskNum);
            MPI_Comm_rank(MPI_COMM_WORLD, &rankID);

            printf("Hellow, world! %dth of totalTaskNum = %d\n", rankID, totalTaskNum);

            MPI_Finalize();

            return 0;
    }
程序应该没问题,因为在集群上运行是正常的。我对并行计算不太熟悉,只是看过一些mpi和openmp的资料,所以想问问是不是对单机安装有什么特殊的地方?

300

帖子

0

威望

4192

eV
积分
4492

Level 6 (一方通行)

4#
发表于 Post on 2017-1-6 17:21:55 | 只看该作者 Only view this author
本帖最后由 archer 于 2017-1-6 17:29 编辑

每个进程应该输出一个hello,就是4个,你的输出是什么样的?Hello, world, I am 1 of 4, (Intel(R) MPI Library 5.0 Update 3 for Linux* OS
, 48)
Hello, world, I am 2 of 4, (Intel(R) MPI Library 5.0 Update 3 for Linux* OS
, 48)
Hello, world, I am 3 of 4, (Intel(R) MPI Library 5.0 Update 3 for Linux* OS
, 48)
Hello, world, I am 0 of 4, (Intel(R) MPI Library 5.0 Update 3 for Linux* OS
, 48)
应该没有问题


300

帖子

0

威望

4192

eV
积分
4492

Level 6 (一方通行)

5#
发表于 Post on 2017-1-6 17:26:34 | 只看该作者 Only view this author
本帖最后由 archer 于 2017-1-6 17:29 编辑

编译:mpicc hello.c
运行 mpirun -np 4 ./a.out
mpirun -np 4 hello_c这既不是编译,也不是运行。

26

帖子

0

威望

349

eV
积分
375

Level 3 能力者

6#
 楼主 Author| 发表于 Post on 2017-1-6 18:02:28 | 只看该作者 Only view this author
本帖最后由 西乡新丰客 于 2017-1-6 18:10 编辑
archer 发表于 2017-1-6 17:26
编译:mpicc hello.c
运行 mpirun -np 4 ./a.out
mpirun -np 4 hello_c这既不是编译,也不是运行。

编译后的文件hello_c,在例子中已经给出了,我用的是mpicc -o hello_c   hello_c.c命令来编译的,而openmpi并行运行文件我在集群上一直都是这么做的不过集群上是fortran,用的是mpif90来并行的。我上面给出的是hello.c的文件,我现在不知道为什么会出现只有一个进程重复4次的情况,结果如下
Hellow, world! 0th of totalTaskNum = 1
Hellow, world! 0th of totalTaskNum = 1
Hellow, world! 0th of totalTaskNum = 1
Hellow, world! 0th of totalTaskNum = 1
谢谢

300

帖子

0

威望

4192

eV
积分
4492

Level 6 (一方通行)

7#
发表于 Post on 2017-1-6 18:47:51 | 只看该作者 Only view this author
你的配置没有设置正确,按照教程再检查一遍看看,不行的话,我也没有办法,抱歉

26

帖子

0

威望

349

eV
积分
375

Level 3 能力者

8#
 楼主 Author| 发表于 Post on 2017-1-6 21:00:17 | 只看该作者 Only view this author
archer 发表于 2017-1-6 18:47
你的配置没有设置正确,按照教程再检查一遍看看,不行的话,我也没有办法,抱歉

嗯,我再试试,谢谢

3622

帖子

3

威望

1万

eV
积分
18442

Level 6 (一方通行)

第一原理惨品小作坊

9#
发表于 Post on 2017-1-7 03:22:32 | 只看该作者 Only view this author
一次跳出来n个相同的有可能是环境变量的问题,你该检查一下which mpicc看看路径的指向是不是你安装的目录。
日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。
本周忙

26

帖子

0

威望

349

eV
积分
375

Level 3 能力者

10#
 楼主 Author| 发表于 Post on 2017-1-7 10:17:21 | 只看该作者 Only view this author
本帖最后由 西乡新丰客 于 2017-1-7 11:20 编辑
卡开发发 发表于 2017-1-7 03:22
一次跳出来n个相同的有可能是环境变量的问题,你该检查一下which mpicc看看路径的指向是不是你安装的目录。

谢谢,which后不是我的安装目录,我的mpicc应该在/usr/local/openmpi/bin下,但which的路径是usr/bin/下,我重新安装了下,可以用了,但是还有两个问题:
1,我在重新安装时,config  --prefix=/×××/×××/   后面加上的F77=ifort  以及FC=ifort是在确定用的编译器么?但是,我的fortran编译器有gfortran以及ifort,但是当我加上这个F77=ifort FC=ifort参数后,会出现错误提示:是fortran编译器问题而不是openmpi的问题。然后就终止了。可是我的ifort -v是可以显示出版本号的,为什么还会说我的fortran编译器有问题?
2,我在网上下载的一个hello_c.c的程序mpicc 编译后mpirun执行可以显示出正确的进程结果。但是我用openmpi的example中的hello_c.c编译后还是错误的结果,就是一个进程显示np次。这又是为什么?(现在我which mpicc后的路径和我的安装路径是一样的了)。
谢谢

3622

帖子

3

威望

1万

eV
积分
18442

Level 6 (一方通行)

第一原理惨品小作坊

11#
发表于 Post on 2017-1-7 11:52:53 | 只看该作者 Only view this author
西乡新丰客 发表于 2017-1-7 10:17
谢谢,which后不是我的安装目录,我的mpicc应该在/usr/local/openmpi/bin下,但which的路径是usr/bin/下 ...

1、configure的过程只是生成编译过程的用到的一些本机的信息。同样检查ifort的所有环境变量是否正确设置,把你的错误信息发来看看;
2、ifort不正常的话icc也够呛工作正常,尚不清楚原因。
日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。
本周忙

26

帖子

0

威望

349

eV
积分
375

Level 3 能力者

12#
 楼主 Author| 发表于 Post on 2017-1-7 15:56:52 | 只看该作者 Only view this author
本帖最后由 西乡新丰客 于 2017-1-7 21:21 编辑
卡开发发 发表于 2017-1-7 11:52
1、configure的过程只是生成编译过程的用到的一些本机的信息。同样检查ifort的所有环境变量是否正确设置 ...

*** Fortran compiler
checking whether we are using the GNU Fortran compiler... no
checking whether ifort accepts -g... no
configure: WARNING: Open MPI now ignores the F77 and FFLAGS environment variables; only the FC and FCFLAGS environment variables are used.
checking whether ln -s works... yes
checking if Fortran compiler works... no
**********************************************************************
* It appears that your Fortran compiler is unable to produce working
* executables.  A simple test application failed to properly
* execute.  Note that this is likely not a problem with Open MPI,
* but a problem with the local compiler installation.  More
* information (including exactly what command was given to the
* compiler and what error resulted when the command was executed) is
* available in the config.log file in the Open MPI build directory.
**********************************************************************
configure: error: Could not run a simple Fortran program.  Aborting.
这就是在用./configure  --prefix=/***/  F77=ifort   FC=ifort出现的提示,但我已經检查了一遍环境配置which ifort是我安装的目录。而且我的ifort可以编译*.f90的fortran文件,为什么还说我的ifort安装有问题?

26

帖子

0

威望

349

eV
积分
375

Level 3 能力者

13#
 楼主 Author| 发表于 Post on 2017-1-7 16:06:23 | 只看该作者 Only view this author
本帖最后由 西乡新丰客 于 2017-1-7 21:04 编辑
卡开发发 发表于 2017-1-7 11:52
1、configure的过程只是生成编译过程的用到的一些本机的信息。同样检查ifort的所有环境变量是否正确设置 ...

而且,现在我把openmpi的example中的hello_c.c文件cp到我的主目录~/下,再编译运行,就能得到正确的进程数了,但如果还在openmpi的目录下运行,还是会出现一个进程重复np次的情况。(说明下,我的openmpi装在了/usr/local/下,例子也就在/usr/local/openmpi/example下)而且我在修改路径时只修改了~/.bashrc,中的PATH和LIB,我想,问题是不是出在了只修改了用户主目录下的.bashrc而没有修改根目录下的环境变量,所以我又修改了/etc/profile中的PATH和LIB,但在openmpi目录下编译运行的结果还是同上面一样,这是为什么?

26

帖子

0

威望

349

eV
积分
375

Level 3 能力者

14#
 楼主 Author| 发表于 Post on 2017-1-7 21:30:58 | 只看该作者 Only view this author
卡开发发 发表于 2017-1-7 11:52
1、configure的过程只是生成编译过程的用到的一些本机的信息。同样检查ifort的所有环境变量是否正确设置 ...

还有一点,就是,我把/usr/local/openmpi/example下的*.f90的并行例子cp到主目录~/下用mpifort编译,然后用mpirun运行,是可以正常运行得出正确的进程数的。这和mpicc那个编译出现的问题一样,都是在根目录下没法正常运行,但到了主目录下就可以了,即使我也改变了根目录下/etc/profile内的路径,仍然会出现只有一个进程重复np次的情况。请问,这是为什么?谢谢

3622

帖子

3

威望

1万

eV
积分
18442

Level 6 (一方通行)

第一原理惨品小作坊

15#
发表于 Post on 2017-1-8 06:19:45 | 只看该作者 Only view this author
本帖最后由 卡开发发 于 2017-1-8 06:23 编辑
西乡新丰客 发表于 2017-1-7 21:30
还有一点,就是,我把/usr/local/openmpi/example下的*.f90的并行例子cp到主目录~/下用mpifort编译,然 ...

哦,你有mpiifort,那看来环境变量有冲突,看看能否在bashrc或profile先注释掉intel的mpi的环境变量,然后再试试。
日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。
本周忙

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-27 08:07 , Processed in 0.159296 second(s), 20 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list