사용자 도구

사이트 도구


mpi

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
mpi [2018/03/16 04:14] rex8312mpi [2024/03/23 02:38] (현재) – 바깥 편집 127.0.0.1
줄 1: 줄 1:
 ====== MPI ====== ====== MPI ======
  
-===== Windows =====+===== Docker에서 MPI 실행 ===== 
 + 
 +  * https://siddharths2710.wordpress.com/2017/03/06/working-with-mpi-in-docker/ 
 + 
 +===== MS-MPI =====
  
   * https://msdn.microsoft.com/en-us/library/bb524831   * https://msdn.microsoft.com/en-us/library/bb524831
  
 +  * worker
 +<code>
 +activate <env>
 +smpd -d
 +</code>
 +
 +  * master
 +<code>
 +mpiexec -host <ip> -dir <working dir> -n <n processes> python helloworld.py
 +</code>
 +
 +
 +<code>
 +mpiexec -machinefile hosts.txt -dir <working dir> -n <n processes> python helloworld.py
 +</code>
 +
 +  * hosts.txt
 +<code>
 +127.0.0.1 1
 +192.168.0.1 2
 +</code>
  
 ====== mpi4py ====== ====== mpi4py ======
줄 126: 줄 151:
  
 몇 가지 예제가 더 있으며, demo 폴더의 compute-pi는 $\pi$값을 구하는 3가지 예제가 있습니다. 몇 가지 예제가 더 있으며, demo 폴더의 compute-pi는 $\pi$값을 구하는 3가지 예제가 있습니다.
 +
 +
 +====== Ubuntu에 MPI 설치하기 ======
 +
 +4개의 노드(ub0, ub1, ub2, ub3)를 사용
 +
 +===== /etc/hosts 에 노드를 정의 =====
 +
 +  127.0.0.1     localhost
 +  192.168.0.200   cilab00
 +  192.168.0.201   cilab01
 +  192.168.0.202   cilab02
 +  192.168.0.203   cilab03
 +  192.168.0.204   cilab04
 +  192.168.0.205   cilab05
 +  192.168.0.206   cilab06
 +  192.168.0.207   cilab07
 +  192.168.0.208   cilab08
 +  192.168.0.209   cilab09
 +
 +
 +아래와 같이 절대로 하지 말 것
 +
 +  127.0.0.1     localhost
 +  127.0.1.1     cilab00
 +  192.168.133.100 cilab00
 +  192.168.133.101 cilab01
 +  192.168.133.102 cilab02
 +  192.168.133.103 cilab03
 +
 +또는, 
 +
 +  127.0.0.1     localhost
 +  127.0.1.1     cilab00
 +  192.168.133.101 cilab01
 +  192.168.133.102 cilab02
 +  192.168.133.103 cilab03
 +
 +===== NFS 서버 설치(마스터) =====
 +
 +  $ sudo apt-get install nfs-kernel-server
 +  $ sudo /etc/init.d/nfs-kernel-server start
 +===== 마스터 노드 공유 =====
 +
 +모든 노드에 mirror 디렉토리 생성, user는 사용자 이름
 +
 +  $ sudo mkdir -p /mirror/user
 +  
 +마스터에 있는 home 디렉토리를 모든 노드가 공유하도록 한다.
 +
 +  $ sudo echo  /mirror/user *(rw,sync) >> /etc/exports
 +  $ ln -s /mirror/user /home/user/mirror
 +  
 +  
 +===== 마스터의 /home을 모든 노드에 마운트 한다. =====
 +
 +수작업으로 마운드 할때는
 +
 +  sudo apt-get install nfs-common
 +
 +  omid@ub1:~$sudo mount.nfs ub0:/home /home
 +  omid@ub2:~$sudo mount.nfs ub0:/home /home
 +  omid@ub3:~$sudo mount.nfs ub0:/home /home
 +
 +부팅할 때마다 자동으로 마운트하도록 모든 노드의 /etc/fstab에 추가,
 +사용자의 uid:gid가 같아야 쓰기/지우기가 되더라
 +
 +  # cilab00:/home /home nfs4 _netdev,auto 0 0
 +  cilab00:/mirror/user /home/user/mirror nfs _netdev,auto 0 0
 +  
 +
 +  
 +===== ssh-server 설치 (서버)=====
 +
 +서버에 ssh 서버 설치
 +
 +  $ sudo apt­-get install openssh-server
 +  
 +===== SSH 사용자 설정 (서버) =====
 +
 +암호입력 없이 ssh 로그인 가능하도록 설정
 +
 +  $ su - user #user 로 로그인
 +  
 +  $ ssh­-keygen ­-t dsa
 +  
 +  $ cd .ssh
 +  
 +  user@cilab00:~/.ssh$ cat id_dsa.pub >> authorized_keys
 +  
 +  # $ ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser@slave # 원격으로 보낼때는 다음 명령 사용
 +  
 +로그인 확인, 암호없이 로그인이 가능해야 함
 +
 +  $ ssh user@cilab00  
 +===== GCC 설치 =====
 +
 +  mpiu@ub0:~$ sudo apt-get install build-essential
 +  
 +===== 다른 컴파일러 설치 =====
 +
 +MPICH를 설치하기 전에 미리 설치
 +
 +
 +  sudo apt-get install gfortran
 +===== MPICH2 설치 =====
 +
 +  sudo apt-get install mpich2
 +  
 +
 +===== 테스트 =====
 +
 +<code c>
 +#include <stdio.h>
 +#include <mpi.h>
 +
 +int main(int argc, char** argv)
 +{
 +    int myrank, nprocs;
 +
 +    MPI_Init(&argc, &argv);
 +    MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
 +    MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
 +
 +    printf("Hello from processor %d of %d\n", myrank, nprocs);
 +
 +    MPI_Finalize();
 +    return 0;
 +}
 +</code>
 +
 +  mpicc test.c -o test
 +  mpiexec -n 10 ./test
 +  
 +만약 -lcr을 못찾을 때는
 +
 +  sudo apt-get install libcr-dev
 +
 +  mpiu@ub0:~$ mpiexec -n 4 cpi
 +  
 +flops 코드 링크
 +  * http://rex8312.iptime.org/webhard/public/11e5aada35a4d6f432611da980817e0e.php
 +  
 +포트란 컴파일
 +
 +  mpif90 flops.f -o flops
 +  
 +  
 +실행
 +
 +  mpirun -hosts rex831200,rex831201 -n 10 ./flops
 +  
 +  mpiexec -f ./hosts -n 10 ./flops
 +  
 +  
 +hosts 파일 설정, "host이름:core개수" 형식으로 입력
 +
 +  cilab00:6
 +  cilab01:2
 +  cilab02:2
 +  cilab03:2
 +  
 +===== 모니터링 도구 ======
 +
 +==== htop ====
 +
 +  sudo apt-get install htop
 +  
 +어짜피 몇대 안되니까 htop 여러개 실행해놓고 실행 확인하자..
 +
 +====== Cluster에 mpi4py 설치 ======
 +
 +numpy, scipy 설치하기
 +
 +  sudo apt-get install python-numpy python-scipy
 +  
 +python mpi4py 설치
 +  sudo apt-get install python-mpi4py
 +
 +또는,
 +
 +  apt-get install python-pip python-dev
 +  
 +nfs로 마운트된 home에 로그쓰기를 못해서 에러가 발생할 수 있으므로 ..
 +
 +  sudo su
 +  pip install mpi4py 
 +
 +===== Link =====
 +
 +  * https://help.ubuntu.com/community/MpichCluster
 +  * https://help.ubuntu.com/community/NFSv4Howto
 +  * http://iserlohn-opensource.blogspot.com/2011/02/ganglia-slackware-131.html
 +  * http://wiki.mcs.anl.gov/mpich2/index.php/Using_the_Hydra_Process_Manager
 +
 +
 +===== Hydra Process Manager =====
 +
 +  * https://wiki.mpich.org/mpich/index.php/Using_the_Hydra_Process_Manager
mpi.1521173655.txt.gz · 마지막으로 수정됨: (바깥 편집)