2014-02-24 4 views
0

프로그램 :오류 오픈 수세에 C에서 MPI에 안녕하세요 세계 프로그램을 컴파일하는 동안

#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; 
} 

ERROR : 컴파일을위한

/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 프로그램이 실행되는지 테스트하고 있습니다.

+0

이 링크를 확인하면 시스템이 잘못 구성되어있는 것 같습니다 (예 : 일부 패키지가 누락되었습니다) http://www.lam-mpi.org/MailArchives/lam/2010/04/14195.php, http : // www .lam-mpi.org/MailArchives/lam/2010/04/14196.php – Oz123

+0

이것은 링커 오류입니다. 당신은 핵심 라이브러리 (''libopen-rte.so'')가 없습니다. –

+0

k 감사합니다 ... 나는 .....이 오류를 얻는 다른 노드에서도 수정하겠다 : mpi.h 그런 파일이나 디렉토리가 없다. – user3136546

답변

1

libopen-rte.so는 MPICH2가 아닌 OpenMPI를 나타냅니다. mpi-selector 도구를 사용하여 기본 MPI 구현을 확인하십시오. 나는 개인적으로 OpenMPI를 선호한다.

0

동시에 두 개의 MPI 라이브러리가 설치되어있는 것 같습니다. 이것이 가능할지라도, 매우 조심하지 않으면 구성하고 사용하는 것이 일반적으로 어렵습니다. Open MPI 또는 MPICH 중 하나를 제거하는 것이 좋습니다. 그것은 당신의 문제를 처리해야합니다.

관련 문제