>> Edit article
이름
제목
패스워드
혹.. 필요하신 분 있으시다면.. -.-.. 참고하세요. -------------------------------------------------------- Beowulf-Class Cluster 구성기 1. 시작 2. 설치 3. 이용 4. 끝으로... 이 문서는 http://rainy.sarang.net/docs/cluster.txt 에서 최신버젼을 얻으실수 있습니다. 1. 시작 parallel computing... 개념은 간단하지만 구현은 복잡하다. 개념 - 작업을 parallel 하게 연결된 system 들에게 분산시켜 수행한뒤 결과를 얻는다 이점 - 수학적 문제나 과학적 계산에서 탁월한 성능을 보인다 참고 도서 : Parallel computing : theory and practice / Michael J. Quinn. / McGraw-Hill 2. 설치 동방에 띵굴띵굴 놀고 있는 컴퓨터를 연결해보자는 생각해서 시작하였다. -.- 그래서 기존에 쓰여진 글들에서 보이던 설정들과는 약간 다르게 적혀진다. 가정하길 동방에서 돌고 있는 컴퓨터들은 모두 개별컴퓨터가 인터넷에 연결되어 있는 상황이고 관리자에게 말하여 겨우 rsh 만 열여달라고 하였다. -.- rsh 에 의한 보안문제는 ipchains 으로 다른곳에서 들어오는 패킷들은 막아두는걸로 하였다. 1) parallel computing 에 연결될 컴퓨터들을 생각해보고 각각 이름을 붙인다 2) rsh 로 각 컴퓨터들이 연결 가능하게 설정을 해둔다 [rainy@sscc rainy]$ rsh sscc0 "pwd" /home/rainy [rainy@sscc rainy]$ rsh sscc1 "pwd" /home/rainy 3) parallel computing 에 필요한 라이브러리를 선택한다. (여기선 LAM / MPI 를 선택하였다) http://www.lam-mpi.org/ 에서 LAM을 구할수 있다 rpm을 구할수 있다면 더 편리하게 깔수 있다. 여기서는 rpm을 선택하였다. http://www.lam-mpi.org/download/files/lam-6.5.4-tcp.1.i386.rpm 4) LAM 을 구동시키면 설치가 끝난다 lamhost 파일은 병렬 컴퓨팅으로 연결할 컴퓨터 들을 적어준다. [rainy@sscc rainy]$ cat lamhost sscc0 sscc1 <- sscc1 의 경우 SMP 시스템이라 2개를 적어주었다 sscc1 [rainy@sscc rainy]$ lamboot -v lamhost LAM 6.5.4/MPI 2 C++/ROMIO - University of Notre Dame Executing hboot on n0 (sscc0 - 1 CPU)... Executing hboot on n1 (sscc1 - 2 CPUs)... topology done [rainy@sscc rainy]$ 이 상태가 parallel computing 을 하기 위한 상태가 구축된것이다. 3. 이용 1) 예제 프로그램을 만들어 돌려본다 #include <stdio.h> #include <mpi.h> #include <math.h> #define N 6000000000 main(int argc, char** argv) { int i,node,numtask,iroot; double sum, sumt, subN; MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD,&node); MPI_Comm_size(MPI_COMM_WORLD,&numtask); subN = N/numtask; sum = 0.0; sumt = 0.0; iroot = 0; for (i = 0; i < subN; i++) sum = sum + (float)(i + 1 + node*subN); MPI_Reduce(∑,&sumt,1,MPI_DOUBLE,MPI_SUM,iroot, MPI_COMM_WORLD); if (node == iroot) printf("total sum = %f",sumt); MPI_Finalize(); exit(0); } 이 프로그램은 1-600000000 (6억) 까지의 합을 계산하는 것이다. 체크에 이용된 시스템은 Dual 펜2-400 CPU 컴(sscc1), 펜3-500 CPU 컴(sscc0) [rainy@sscc /tmp]$ mpicc -o sum1k sum2.c -lm 프로세서 하나의 이용(펜2-400 CPU 컴의 cpu1번) [rainy@sscc /tmp]$ time mpirun -np 1 ./sum1k total sum = 180000000300000000.000000 real 0m37.885s user 0m0.000s sys 0m0.010s 프로세서 두개의 이용(펜2-400 CPU 컴의 cpu1,2번) [rainy@sscc /tmp]$ time mpirun -np 2 ./sum1k total sum = 180000000300000000.000000 real 0m19.233s user 0m0.010s sys 0m0.010s 프로세서 세개의 이용(sscc1 + sscc0) [rainy@sscc /tmp]$ time mpirun -np 3 ./sum1k total sum = 180000000300000000.000000 real 0m13.001s user 0m0.000s sys 0m0.010s 이 때 주의할 점은 sum1k 라는 실행파일이 각 컴퓨터의 같은 디렉토리에 존재하여야 한다. 만약 NFS로 공유디렉토리를 설정하였다면 그 디렉토리 안에서 실행하면 된다. 서로 다른 시스템의 혼합에서는 performance 측면에서는 어느정도 고려해야할 점이 많지만 load balancing 측면은 이 프로그램에서는 고려하지 않는다 -.- (오직 test 프로그램이다 -.-) 4. 끝으로... parallel computing 을 위한 환경 구성은 그리 어렵지 않은 편이다. 약간의 Linux 지식만 있다면 구성은 할수 있다. 문제는 이 환경에서 돌아가는 프로그램을 만드는 일이다. 기존의 프로그램을 parallel 환경에서 돌아갈수 있도록 재포팅 하는 작업이 필요할것이다. 프로그램에 도움이 될 만한 책이다. (알고리즘) 참고도서 : Parallel Programming / Barry Wilkinson, Michael Allen / Prentice Hall -- 삽질삽질삽질 -.-
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved