在openSUSE上用C编译mpi中的hello world程序时出错

时间:2014-02-24 06:57:47

标签: c mpi opensuse mpich

计划:

#include <stdio.h>
#include <mpi.h>


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

    MPI_Init (&argc, &argv);    /* starts MPI */
    MPI_Comm_rank (MPI_COMM_WORLD, &rank);  /* get current process id */
    MPI_Comm_size (MPI_COMM_WORLD, &size);  /* get number of processes */
    printf( "Hello world from process %d of %d\n", rank, size );
    MPI_Finalize();
    return 0;
}

错误:

/usr/lib/gcc/i586-suse-linux/4.4/../../../../i586-suse-linux/bin/ld: cannot find -lopen-rte
collect2: ld returned 1 exit status

编译命令:mpicc hello.c -o ./hello。 我正在尝试构建一个openSUSE节点集群。 所以我正在测试mpich2程序是否在每个节点上运行。

2 个答案:

答案 0 :(得分:1)

libopen-rte.so是指OpenMPI,而不是MPICH2。使用mpi-selector工具检查默认的MPI实现。我个人更喜欢OpenMPI。

答案 1 :(得分:0)

看起来您同时安装了两个MPI库。虽然这是可能的,但如果您不是非常小心,配置和使用通常会很痛苦。我建议卸载Open MPI或MPICH。这应该照顾你的问题。