>> Delete No. 1700 article
No. 간단하게 만들어 보는 cluster...

등록 2001-09-28 02:53:00     조회 5
이름 rainy    

		혹.. 필요하신 분 있으시다면.. -.-.. 참고하세요.
--------------------------------------------------------
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