728x90
반응형
모든 과정은 우분투 과정에 진행 되었습니다.
MVAPICH 설치
설치하기
1. 링크(http://mvapich.cse.ohio-state.edu/downloads/)에 접속하여 사진과 같이 Source Tarball을 눌러 파일을 다운 받는다.
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
반응형