mpi
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판이전 판다음 판 | 이전 판 | ||
mpi [2018/03/16 04:14] – rex8312 | mpi [2024/03/23 02:38] (현재) – 바깥 편집 127.0.0.1 | ||
---|---|---|---|
줄 1: | 줄 1: | ||
====== MPI ====== | ====== MPI ====== | ||
- | ===== Windows | + | ===== Docker에서 MPI 실행 ===== |
+ | |||
+ | * https:// | ||
+ | |||
+ | ===== MS-MPI | ||
* https:// | * https:// | ||
+ | * worker | ||
+ | < | ||
+ | activate <env> | ||
+ | smpd -d | ||
+ | </ | ||
+ | |||
+ | * master | ||
+ | < | ||
+ | mpiexec -host <ip> -dir <working dir> -n <n processes> | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | mpiexec -machinefile hosts.txt -dir <working dir> -n <n processes> | ||
+ | </ | ||
+ | |||
+ | * hosts.txt | ||
+ | < | ||
+ | 127.0.0.1 1 | ||
+ | 192.168.0.1 2 | ||
+ | </ | ||
====== 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 | ||
+ | 192.168.0.200 | ||
+ | 192.168.0.201 | ||
+ | 192.168.0.202 | ||
+ | 192.168.0.203 | ||
+ | 192.168.0.204 | ||
+ | 192.168.0.205 | ||
+ | 192.168.0.206 | ||
+ | 192.168.0.207 | ||
+ | 192.168.0.208 | ||
+ | 192.168.0.209 | ||
+ | |||
+ | |||
+ | 아래와 같이 절대로 하지 말 것 | ||
+ | |||
+ | 127.0.0.1 | ||
+ | 127.0.1.1 | ||
+ | 192.168.133.100 cilab00 | ||
+ | 192.168.133.101 cilab01 | ||
+ | 192.168.133.102 cilab02 | ||
+ | 192.168.133.103 cilab03 | ||
+ | |||
+ | 또는, | ||
+ | |||
+ | 127.0.0.1 | ||
+ | 127.0.1.1 | ||
+ | 192.168.133.101 cilab01 | ||
+ | 192.168.133.102 cilab02 | ||
+ | 192.168.133.103 cilab03 | ||
+ | |||
+ | ===== NFS 서버 설치(마스터) ===== | ||
+ | |||
+ | $ sudo apt-get install nfs-kernel-server | ||
+ | $ sudo / | ||
+ | ===== 마스터 노드 공유 ===== | ||
+ | |||
+ | 모든 노드에 mirror 디렉토리 생성, user는 사용자 이름 | ||
+ | |||
+ | $ sudo mkdir -p / | ||
+ | | ||
+ | 마스터에 있는 home 디렉토리를 모든 노드가 공유하도록 한다. | ||
+ | |||
+ | $ sudo echo / | ||
+ | $ ln -s / | ||
+ | | ||
+ | | ||
+ | ===== 마스터의 /home을 모든 노드에 마운트 한다. ===== | ||
+ | |||
+ | 수작업으로 마운드 할때는 | ||
+ | |||
+ | sudo apt-get install nfs-common | ||
+ | |||
+ | omid@ub1: | ||
+ | omid@ub2: | ||
+ | omid@ub3: | ||
+ | |||
+ | 부팅할 때마다 자동으로 마운트하도록 모든 노드의 / | ||
+ | 사용자의 uid:gid가 같아야 쓰기/ | ||
+ | |||
+ | # cilab00:/ | ||
+ | cilab00:/ | ||
+ | | ||
+ | |||
+ | | ||
+ | ===== ssh-server 설치 (서버)===== | ||
+ | |||
+ | 서버에 ssh 서버 설치 | ||
+ | |||
+ | $ sudo apt-get install openssh-server | ||
+ | | ||
+ | ===== SSH 사용자 설정 (서버) ===== | ||
+ | |||
+ | 암호입력 없이 ssh 로그인 가능하도록 설정 | ||
+ | |||
+ | $ su - user #user 로 로그인 | ||
+ | | ||
+ | $ ssh-keygen -t dsa | ||
+ | | ||
+ | $ cd .ssh | ||
+ | | ||
+ | user@cilab00: | ||
+ | | ||
+ | # $ ssh-copy-id -i $HOME/ | ||
+ | | ||
+ | 로그인 확인, 암호없이 로그인이 가능해야 함 | ||
+ | |||
+ | $ 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 < | ||
+ | #include < | ||
+ | |||
+ | int main(int argc, char** argv) | ||
+ | { | ||
+ | int myrank, nprocs; | ||
+ | |||
+ | MPI_Init(& | ||
+ | MPI_Comm_size(MPI_COMM_WORLD, | ||
+ | MPI_Comm_rank(MPI_COMM_WORLD, | ||
+ | |||
+ | printf(" | ||
+ | |||
+ | MPI_Finalize(); | ||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | mpicc test.c -o test | ||
+ | mpiexec -n 10 ./test | ||
+ | | ||
+ | 만약 -lcr을 못찾을 때는 | ||
+ | |||
+ | sudo apt-get install libcr-dev | ||
+ | |||
+ | mpiu@ub0:~$ mpiexec -n 4 cpi | ||
+ | | ||
+ | flops 코드 링크 | ||
+ | * http:// | ||
+ | | ||
+ | 포트란 컴파일 | ||
+ | |||
+ | mpif90 flops.f -o flops | ||
+ | | ||
+ | | ||
+ | 실행 | ||
+ | |||
+ | mpirun -hosts rex831200, | ||
+ | | ||
+ | mpiexec -f ./hosts -n 10 ./flops | ||
+ | | ||
+ | | ||
+ | hosts 파일 설정, " | ||
+ | |||
+ | 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:// | ||
+ | * https:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | |||
+ | ===== Hydra Process Manager ===== | ||
+ | |||
+ | * https:// |
mpi.1521173655.txt.gz · 마지막으로 수정됨: (바깥 편집)