본문 바로가기

Lab/병렬 프로그래밍

[MVAPICH]MVAPICH설치 및 MPI 테스트

728x90
반응형

모든 과정은 우분투 과정에 진행 되었습니다.

MVAPICH 설치

설치하기

1. 링크(http://mvapich.cse.ohio-state.edu/downloads/)에 접속하여 사진과 같이 Source Tarball을 눌러 파일을 다운 받는다.

MVAPICH 설치

2. mvapich make을 해주기 위해서 bison과 fortran을 설치 해준다.

$ sudo apt-get install gfortran
$ sudo apt-get install bison

3. 다운로드 받은 파일을 압축을 풀어주고 설치를 한다.

$ tar –xzf mvapich2-2.3.1.tar.gz

$ cd mvapich2-2.3.1

$ ./configure with-device=ch3:sock

$ make

$ sudo make install

4. 설치후 mpicc와 mpirum 버전을 확인하며 설치가 되어있는지 확인한다.

$ mpicc —version

$ mpirum —version

MPI 테스트 코드 시행

1. 각각의 컴퓨터에 접속하기 위해 ssh을 접속 한다.

$ sudo apt-get install openssh-server

$ sudo apt-get install ssh

2. 접속을 하기 위해 나의 ip주소를 확인한다.

$ ifconfig

3. hosts을 등록 해준다

# hosts파일에 master(보내주는 사람) slave(받는 사람)을 등록 해준다.

$ sudo vim /etc/hosts

4. hosts파일을 열게되면 아래와 같이 쓰여져 있는 것을 바꿔준다.

-----------------변경 전---------------------

127.0.0.1  localhost

127.0.1.1  kimsungmin

---------------------변경 후-----------------

127.0.0.1 localhosts

192.168.0.43 kimsungmin #ifconfig을 통해 알게된 ip로 변경 해준다.

192.168.0.56 kimgm-linux #통신하게 될 slave의 ip와 이름을 적어준다.

5. hostname 파일을 열어 master의 이름이 적혀 있는지 확인한다.

$ sudo vim /etc/hostname

kimsungmin

6. master의 공개키를 생성 하고 설정 한다.

$ sudo vim /etc/ssh/sshd_config

# 주석 주석처리가 되어있는 부분을 주석을 제거한다.

PubkeyAuthentication yes

AuthorizedKeysFile     %h.ssh/authorized_keys
$ mkdir ~/.ssh #홈디렉토리에 .ssh폴더 생성

$ ssh-keygen –t rsa –P “”

7. master에서 생성된 공개키를 통신할 slave에게로 복사

$ scp /home/ssrlab/.ssh/id_rsa.pub ssrlab@kimgm-linux:/home/ssrlab/.ssh/authorized_keys

# master컴퓨터에 .ssh폴더에 있는 id_rsa.pub파일을 통신하는 kimgm slave의 /home/ssrlab/.ssh 디렉토리의 authorized_keys라는 이름으로 전송한다.

8. 예제코드를 작성하여 테스트 진행

#include <iostream>

#include <mpi.h>



int main(int argc,char *argv[])

{

    int numprocessors, rank, namelen;

    char processor_name[MPI_MAX_PROCESSOR_NAME];



    MPI_Init(&argc,&argv);

    MPI_Comm_size(MPI_COMM_WORLD,&numprocessors);

    MPI_Comm_rank(MPI_COMM_WORLD,&rank);

    MPI_Get_processor_name(processor_name,&namelen);



    if ( rank ==0 )

    {

        std::cout <<"Processor name: "<< processor_name <<"\n";

    std::cout <<"master ("<< rank <<"/"<< numprocessors <<")\n";

    }else {

        std::cout <<"Processor name: "<< processor_name <<"\n";

        std::cout <<"slave  ("<< rank <<"/"<< numprocessors <<")\n";

   }

   MPI_Finalize();

   return 0;

}

9. 소스 코드 컴파일

$ mpic++ test.c –o test

10. mpi을 이용하여 테스트

# mprirum –np [프로세스 코어수] -host [master] [slave] [컴파일 파일]

$ mpirun –np –4 –host  kimsungmin,kimgm-linux test

실행 화면

728x90
반응형


Calendar
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Visits
Today
Yesterday