MPI 교육 중입니다. 제가 하고 싶은 클러스터링은 어떻게 해야 할까요?

yuni의 이미지

리눅스를 처음 접할때 책에 나왔던 내용이 타이타닉 영화도 알고 보면 리눅스를 병렬로 연결해서 그래픽 부분을 처리했다는 내용을 본지도 거의 9년 쯤 흘렀습니다. 그 이후로 병렬처리는 저의 꿈이기도 합니다. 그동안 병렬처리에 대한 관심은 많았지만 기회가 없어서 여기저기 조금씩 지식을 쌓고 있습니다.

MPI교육이 있다고 해서 몰래 교육을 다녀왔습니다. 매일 두시간씩 나흘간 입니다. 오늘이 첫날이었죠. 그런데 거기서 하는 내용으로는 저의 갈증의 근본적인 해결책이 안됩니다. 일단 연산을 위한 클러스트가 구축된 상태에서 시작을 하거든요.

저는 리눅스을 이용해서 클러스터링을 해보고 싶거든요. 두대나 3대 정도 묶어 볼 계획입니다. 기계들은 빠른 것도 있고 형편없이 느린 것도 있어서 실제의 효과는 그렇게 크게 기대를 할 수가 없다는 문서 내용을 읽었습니다. 효과보다는 실제로 구성을 해보는데 의의를 두고 싶습니다.

크게 두갈례로 PVM 과 MPI로 나눠진것과 MPI의 경우엔 벤더들의 지원을 받고 있기 때문에 많은 문서가 레뎃9가 언급이 되는 것 같더군요. 레뎃9의 경우엔 라이선스 문제로 또 저의 개인적인 꿈을 이룰 수가 없기 때문에, 이것 구입하자고 하면 절 짜를 껍니다. ^^.

제가 가지고 있는 컴에 깔린 배포판은 맨드리바와 우분투 그리고 데비안입니다. 세 배포판 다 패키지로 되어 있더군요. 실제로 깔기도 했습니다. 그런데 그 다음이 문제네요. 어떻게 해야 할지 좀 막막합니다. 사실 pvm과 mpi중에 어떤 것이 저에게 더 적당한지도 모르겠습니다.

제가 하고 싶은 부분은 이미 작성된 오래된 코드 중에서 뉴메릭레서피에 있는 예제들이나 아니면 학부때 수치해석에 나오는 간단한 서브루틴들도 좋습니다. 주로 C나 포트란77로 짜여진 것들일껍니다. 행렬 연산이나 이런 것 때문에 돌려야 되는 DO 나 for loop를 이 컴 저컴에 나눠서 처리를 해보고 싶습니다.

오늘 강사가 [A] dot_product [B]를 분활해서 시피유별로 하나씩 프로세스를 할당해서 처리를 한 결과를 보여 주는데, 그냥 탄성이 나오더군요. 어떻게 저렇게 처리가 될까 하고 말입니다.
그런데 오늘 들은 내용은 거의 절망적입니다. 일단 디버깅 죽음이고 차라리 프로세스가 죽어 버리면 다행인데, 안죽고 계속 남아서 괴롭힌다더군요.

각설하고, 리눅스 클러스터링에 꿈을 가진지 9년입니다. 이제 막 시도를 할려고 합니다. 그동안 눈으로 만 봐왔던 문서들을 가지고는 아직은 첫발을 내딛기가 조심 스럽습니다.
조언이나 경험담을 들려 주시면 많은 도움이 되겠습니다. 예전에 버리는 컴 모아서 슈퍼컴 만드신다던 몇몇 KLDP회원분들의 글이 있었는데 그분들의 가정용 슈퍼컴은 잘 돌아가고 있는지도 무척 궁금합니다.

부디 조언을, 실패담, 시도담, 성공기 뭐든 좋습니다. :)

File attachments: 
첨부파일 크기
Image icon img_2.jpg97.03 KB
Image icon img_1.jpg88.13 KB
ydhoney의 이미지

딴지는 아닙니다만..팔지도 않는 레드햇 9 버전을 어떻게 사나요? -_-;

warpdory의 이미지

ydhoney wrote:
딴지는 아닙니다만..팔지도 않는 레드햇 9 버전을 어떻게 사나요? -_-;
판 곳이 있습니다. 저에게도 공동구매하자고 제안한 곳이 몇 곳 있었지요.
iso 이미지를 동호회 자료실에 올려놓는 것으로 공동구매 제안에 대해서 답을 한 기억이 있습니다.


---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도

즐겁게 놀아보자.

paw의 이미지

일단은 영어에 좀 익숙치 않으시다면,

http://webedu.ksc.re.kr/nov/
에 가셔서 web기반 교육을 보시면 병렬컴퓨팅과 fortran90, mpi에 관한 자세한 자료가 있습니다.

제가 본 한도에서는 한글자료 중에서는 가장 잘 되어있고, 예제도 많습니다. 서점에 가면 리눅스 클러스터에 대한 책도 있는거 같던데 클러스터 구축을 위해서라면 한 권 사보시는 것도 좋을거 같네요.

그리고, 직접 계산을 하기위한 목적이시라면, intel에서 무료로 배포하는 intel c++ 과 fortran을 다운로드 받으셔서 mpich를 직접 컴파일 하신 다음 사용하시는것이 훨씬 빠릅니다.

may the force be with you...

24시간형 인간

mycluster의 이미지

리눅스 클러스터링을 해서 병렬처리를 해본지도 벌써 10년이
넘어버렸군요... MPI강의를 처음한 것이 벌써 9년전이네요...
ㅎㅎㅎ 해본말입니다.

Quote:
MPI교육이 있다고 해서 몰래 교육을 다녀왔습니다. 매일 두시간씩 나흘간 입니다. 오늘이 첫날이었죠. 그런데 거기서 하는 내용으로는 저의 갈증의 근본적인 해결책이 안됩니다. 일단 연산을 위한 클러스트가 구축된 상태에서 시작을 하거든요.
저는 리눅스을 이용해서 클러스터링을 해보고 싶거든요. 두대나 3대 정도 묶어 볼 계획입니다. 기계들은 빠른 것도 있고 형편없이 느린 것도 있어서 실제의 효과는 그렇게 크게 기대를 할 수가 없다는 문서 내용을 읽었습니다. 효과보다는 실제로 구성을 해보는데 의의를 두고 싶습니다.

PC가 여러대 있다면 직접 꾸며서 해보는 것도 과히 나쁘지는
않지만 상당한 노가다를 감수해야하고, 그래서 이왕이면 가장
빨리 할 수 있는 것으로 http://krocks.cluster.or.kr/blog/index.php?pl=2 의 KROCKS를 추천해드립니다. 배포판깔고, 라이브러리 올리고
이런 개노가다를 한방에 하도록 만들어준데다가 친절하게도
나랏돈 들여서 한글메뉴얼도 만들어뒀습니다. 이걸로 하세요.

Quote:

크게 두갈례로 PVM 과 MPI로 나눠진것과 MPI의 경우엔 벤더들의 지원을 받고 있기 때문에 많은 문서가 레뎃9가 언급이 되는 것 같더군요. 레뎃9의 경우엔 라이선스 문제로 또 저의 개인적인 꿈을 이룰 수가 없기 때문에, 이것 구입하자고 하면 절 짜를 껍니다. ^^.

일단 PVM과 MPI는 시초부터가 다른 Message Passing Library
라는 것을 염두에 두시는 것이 좋을 겁니다. 원래 PVM은 master
slave구조를 기반으로 만들어진 라이브러리이고, MPI는 SPMD
(Single Program Multiple Data)를 목적으로 하는 라이브러리
입니다. 물론 둘을 적절히 혼합하거나 변형하는 것이 힘든 것은
아니지만, 처음부터 배운다면 MPI를 깔고 쓰는 것이 좋을 듯
하고요. MPI가 de facto standard라는 것을 염두에 둔다면,
거의 모든 기계에서 무난하게 사용할 수 있습니다.

Quote:

제가 가지고 있는 컴에 깔린 배포판은 맨드리바와 우분투 그리고 데비안입니다. 세 배포판 다 패키지로 되어 있더군요. 실제로 깔기도 했습니다. 그런데 그 다음이 문제네요. 어떻게 해야 할지 좀 막막합니다. 사실 pvm과 mpi중에 어떤 것이 저에게 더 적당한지도 모르겠습니다.

닭질을 하고 싶으시지 않으시다면, 역시 레뎃계열(Fedora 혹은
CentOS 등, 레뎃9는 비추)을 사용하시는 것이 좋고, 권하는
버전은 7.3, AS3.0이라고 보면 됩니다. 왜냐면, 두 개의 버전은
상용병렬프로그램이 지원하는 거의 공식적인 버전이라고 보시면
맞기 때문입니다. (더 상세한 것은 알아서 찾아보시길...)
앞에서 말한 ROCKS는 7.3, 3.0, 4.0을 기준으로 각각 레드햇
배포판을 베이스로 각종 병렬라이브러리를 추가한 롤 CD를 제공
할겁니다. 이렇게 버전을 관리하는 이유는 MPI기반의 상용프로그
램과의 호환성 문제 때문이지요.

Quote:

제가 하고 싶은 부분은 이미 작성된 오래된 코드 중에서 뉴메릭레서피에 있는 예제들이나 아니면 학부때 수치해석에 나오는 간단한 서브루틴들도 좋습니다. 주로 C나 포트란77로 짜여진 것들일껍니다. 행렬 연산이나 이런 것 때문에 돌려야 되는 DO 나 for loop를 이 컴 저컴에 나눠서 처리를 해보고 싶습니다.

이에 대한 예제는 각종 MPI교재(인터넷에서 찾을 수 있습니다)에
예제로 나와 있습니다. 꼭 그대로는 아니더라도 거의 비슷한 수준
으로 있으니 참고하시면 될 듯 하고요, 실제로 중요한 것은 행렬
계산을 그대로 병렬화하는 것이 아니라, 병렬처리에 적합한 행렬
알고리즘이 별도로 있으니 이에 대해서는 관련 논문을 많이 찾아
보시는 것이 도움이 될 겁니다. 그리고, do나 for loop를 병렬
처리하는 것은 MPI보다는 주로 openMP에서 더 잘 지원하고
있읍니다.

Quote:

오늘 강사가 [A] dot_product [B]를 분활해서 시피유별로 하나씩 프로세스를 할당해서 처리를 한 결과를 보여 주는데, 그냥 탄성이 나오더군요. 어떻게 저렇게 처리가 될까 하고 말입니다.

뭘 이정도로 ^^ 더 한것도 많습니다... 512프로세스 정도에서
돌아가는 것도 많으니까요...

Quote:

그런데 오늘 들은 내용은 거의 절망적입니다. 일단 디버깅 죽음이고 차라리 프로세스가 죽어 버리면 다행인데, 안죽고 계속 남아서 괴롭힌다더군요.

실제로 디버깅이 상당히 복잡해보이기는 하지만, 병렬디버거도
많이 있고, 이것이 아니더라도 충분히 print 문으로도 적재적소에
넣어서 디버깅을 하는 각종 노우하우가 있습니다.

Quote:

각설하고, 리눅스 클러스터링에 꿈을 가진지 9년입니다. 이제 막 시도를 할려고 합니다. 그동안 눈으로 만 봐왔던 문서들을 가지고는 아직은 첫발을 내딛기가 조심 스럽습니다.
조언이나 경험담을 들려 주시면 많은 도움이 되겠습니다. 예전에 버리는 컴 모아서 슈퍼컴 만드신다던 몇몇 KLDP회원분들의 글이 있었는데 그분들의 가정용 슈퍼컴은 잘 돌아가고 있는지도 무척 궁금합니다.

벌써 한 다섯세트는 폐기처분했고, 몇세트는 새로 만들어져서
여전히 돌아가고 있습니다.

제일 빨리 코드연습용으로는 기계한대에서 MPI를 여러개 띄워서
해보시면 되고, 클러스터링 구축연습도 하고 싶으시다면 VMware로
여러대의 가상머신을 깔고... 거기서 설치하시면 아주 좋습니다.
물론 속도는 별로지만, 구축연습은 VMWARE로도 충분히 할 수
있습니다.


여기 있는 자료는 리눅스 클러스터가 아니라 IBM p690을
기준으로 하고 있다는 점을 염두에 두시기 바랍니다.

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

mach의 이미지

* 먼저, 원하시는게 클러스터링 환경 구축이냐? 아니면 그 상위의 응용구축이냐를 검토해 보셔야 할 듯 합니다.

-------------------------------------
* 잠시 잡담을 하면,...
PVM과 MPI는 여러 면에서 비교해 볼 수 있습니다.
태생으로 볼때, PVM은 가난한 자로 부터 시작이고, MPI는 부자로 부터의 시작입니다.
PVM은 학계에서 먼저 출발해서 나왔고, MPI는 ... 업계(부자회사들...), 학계등이 연합해서 만들게 됩니다.
당연히, MPI는 표준을 설계할때 다수의 입김이 들어가서 만들어지게 되어 표준이 되었고, PVM은 먼저 만들어졌고, 널리 사용되기 시작하여 De facto standard 형태로 사용됩니다.
둘다 일장일단이 있으나, 제 개인적으로 보는 관점에서는 PVM이 failover쪽이 좀 강하고, MPI는 고성능쪽에 강합니다.
PVM은 위에서 말씀하셨듯이 마스터/슬래이브모델로 각 노드에 데몬이 하나 뜨고, 서브태스크가 그 데몬에 매달리고, 데몬들은 한개 마스터와 다수의 슬레이브로 구성됩니다.(관리목적 땜시)
PVM은 태스크간의 통신을 위해 데몬을 경유하는데, 이러한 통신구조로 인해 버퍼복사가 많다고 할 수 있지요. MPI 구현에 따라 다소 차이가 있겠으나, MPI보다 좀 많습니다. 그러나, 호환성(잡탕으로 엮을 경우)에서는 PVM이 좀더 나아 보입니다. (호환이란, OS 및 버전, CPU속도, 메모리크기차이, 등등)
둘다, 512개의 노드를 가지는 MPP에서도 수행가능하고, 워크스테이션 클러스터링으로도 가능한데, 전자는 비싸고, 후자는 비교적 싸지요.
역는것도 검토대상인데, 여기에는 초고속 네트워킹을 접목합니다.
Myrinet, Infiniband, RDMA등 아주 고성능을 자랑하는 네트워킹 인터페이스가 현재는 보다 많이 존재하고, 이쪽 기술의 발달로, 서로 분리된 네트워크상의 컴퓨터라 할지라도, 마치 한시스템에 존재하는 정도(? 뻥이 조금 들어감 --; )의 기본 스피드를 제공할 수 있게 시스템을 구성할 수 있었습니다.
최근의 기가이더넷(1G, 10G) 및 PCI-X들을 잘~ 접목하면 보다 나은 테스트베드를 만들어 볼 수 있을 듯 합니다.
또한 블레이드 방식의 서버는 (손을 놔서 정확치 않지만..) 이러한 컴퓨팅환경을 지원하는데 용이하리라고 봅니다.

1) 하드웨어( 네트워크 인터페이스, 워크스테이션, PC, MPP, 잡탕?)
2) 운영체제( 리눅스라면 대체로 무방함!)
3) PVM vs. MPI 라면, 그리고, 현재 처음시작이라면 MPI를 권고함
4) 그런데, 클러스터 구축해서 무엇을 할것인가를 고민하시기를 가장 권고함! ( 안주거리로 매일 오르는 매트릭스 계산말고, 보다 자극(?) 적인 것이 필요하리라는....)

잡담끝입니다.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

shockyhan의 이미지

yuni wrote:
제가 하고 싶은 부분은 이미 작성된 오래된 코드 중에서 뉴메릭레서피에 있는 예제들이나 아니면 학부때 수치해석에 나오는 간단한 서브루틴들도 좋습니다. 주로 C나 포트란77로 짜여진 것들일껍니다. 행렬 연산이나 이런 것 때문에 돌려야 되는 DO 나 for loop를 이 컴 저컴에 나눠서 처리를 해보고 싶습니다.

OpenMP 쪽을 보시는게 좋을것 같습니다.
아주 간단한 클러스터 구축을 위해서는 LiveCD를 활용한 것들도 있으니 참고하시기 바랍니다.

===========================================================================
Shocky Han
BIM Consultant, Certified Information Systems Auditor
Seoul, Korea.
===========================================================================

yuni의 이미지

ydhoney wrote:
딴지는 아닙니다만..팔지도 않는 레드햇 9 버전을 어떻게 사나요? -_-;

오, 레뎃9 버전을 안 파는 줄 몰랐습니다. 헉, 약 4달전에 델에서 옵티플렉스 기종 중 미니타워를 구매 할때 구매부서에서 레뎃 9 를 인스틀 하던지 아니면 램을 좀 채울래 하길래 램!!! 하고 이야길 했거던요. 그래서 전 레뎃9인 엔터프라즈는 라이선스를 구입을 해야 되는 줄 알았습니다. 이게 그냥 설치 비용이었다면 델은 정말 장사 잘 하는건가요? :)

==========================
부양가족은 많은데, 시절은 왜 이리 꿀꿀할까요?
=====================
"지금하는 일을 꼭 완수하자."

yuni의 이미지

답변을 주신 paw, MyCluster, mach, shockyhan, ydhoney, warpdory 님께 감사 드립니다. 다들 내공들이 장난이 아니시네요.

더구나 제가 직접 여쭈어 본 것도 아닌데, 초보자의 심정을 잘 해아려서 조목조목 답변을 해 주셔서 정말 정말 감사 드립니다.

mach wrote:
그런데, 클러스터 구축해서 무엇을 할것인가를 고민하시기를 가장 권고함! ( 안주거리로 매일 오르는 매트릭스 계산말고, 보다 자극(?) 적인 것이 필요하리라는....)

클러스터 구축해서 매트릭스 계산이 제일 먼저 떠오르더군요.^^ 보다 자극적인것이 뭐가 있을까요? 그리고 성능이 엉망이라도 개인 클러스터를 가지고 제 맘대로 이것 저것 해 보고 싶습니다. 저의 개인용 리눅스 박스가 아니면 제가 어디서 루트 권한을 가져 보겠습니까.

MyCluster wrote:
PC가 여러대 있다면 직접 꾸며서 해보는 것도 과히 나쁘지는
않지만 상당한 노가다를 감수해야하고, 그래서 이왕이면 가장
빨리 할 수 있는 것으로 http://krocks.cluster.or.kr/blog/index.php?pl=2 의 KROCKS를 추천해드립니다. 배포판깔고, 라이브러리 올리고
이런 개노가다를 한방에 하도록 만들어준데다가 친절하게도
나랏돈 들여서 한글메뉴얼도 만들어뒀습니다. 이걸로 하세요.
그냥 제가 쓰던 배포판으로 할려 했던것 자체가 한참을 돌아가는 길이었나 봅니다. 좋은 정보 감사합니다.

shockyhan wrote:
OpenMP 쪽을 보시는게 좋을것 같습니다.
아주 간단한 클러스터 구축을 위해서는 LiveCD를 활용한 것들도 있으니 참고하시기 바랍니다.
호, 라이브시디까지 있군요. OpenMP는 또 교육이 있습니다. 다다음 주 시작이라는데, 휴가나 조퇴를 적절히 이용해 볼렵니다. 친한친구가 변을 당하겠네요.^^ 좋은 정보 감사 합니다.

paw wrote:
일단은 영어에 좀 익숙치 않으시다면, http://webedu.ksc.re.kr/nov/
에 가셔서 web기반 교육을 보시면 병렬컴퓨팅과 fortran90, mpi에 관한 자세한 자료가 있습니다.
영어가 벽이긴 합니다. ^^;;;;;; '이그~~ 영어....' 저도 언젠가는 한참 읽다가 보니 영어였다던지. 뭔가 아이디어낸다고 중얼중얼 했는데 한참 뒤에 보니 영어 였다. 한국말로 하자니 괜한 오해가 생길 것 같고, 영어는 쉬운데 한참 고민됐다. 뭐 이런 날이 오면 좋겠습니다. :) 방금한 농담반 희망목표 반도 치고 보고 영어 여서 다시 한글을 쳐야 되나 좀 고민 됐다면......^^;;;;;; 좋은 자료 감사 드립니다. 말씀 하대로 intel 컴파일러로 직접 컴파일을 해서 돌려 봐야겠습니다. 좋은 정보 감사합니다.

==========================
부양가족은 많은데, 시절은 왜 이리 꿀꿀할까요?
=====================
"지금하는 일을 꼭 완수하자."

ydhoney의 이미지

yuni wrote:
ydhoney wrote:
딴지는 아닙니다만..팔지도 않는 레드햇 9 버전을 어떻게 사나요? -_-;

오, 레뎃9 버전을 안 파는 줄 몰랐습니다. 헉, 약 4달전에 델에서 옵티플렉스 기종 중 미니타워를 구매 할때 구매부서에서 레뎃 9 를 인스틀 하던지 아니면 램을 좀 채울래 하길래 램!!! 하고 이야길 했거던요. 그래서 전 레뎃9인 엔터프라즈는 라이선스를 구입을 해야 되는 줄 알았습니다. 이게 그냥 설치 비용이었다면 델은 정말 장사 잘 하는건가요? :)

레드햇 9 버전은 2004년 3월부로 레드햇에서 판매도 안하고 기술지원도 안하기때문에 아무런 의미가 없다는 이야기이지요. 그게 엔터프라이즈 버전이던 뭐던간에 말이지요. 델이라면 레드햇 코리아가 아닌 레드햇 본사와 계약하여 따로 제품을 받는것으로 알고 있고 RHEL버전을 받고 있는것으로 알고 있습니다만 RH9를 설치하는데 설치비용이 아닌 제품의 subcrition을 가지고 판매를 하려고 했다면 거진 사기쳐먹으려고 했다는 소리나 마찬가지입니다.
yuni의 이미지

ydhoney wrote:
레드햇 9 버전은 2004년 3월부로 레드햇에서 판매도 안하고 기술지원도 안하기때문에 아무런 의미가 없다는 이야기이지요. 그게 엔터프라이즈 버전이던 뭐던간에 말이지요. 델이라면 레드햇 코리아가 아닌 레드햇 본사와 계약하여 따로 제품을 받는것으로 알고 있고 RHEL버전을 받고 있는것으로 알고 있습니다만 RH9를 설치하는데 설치비용이 아닌 제품의 subcrition을 가지고 판매를 하려고 했다면 거진 사기쳐먹으려고 했다는 소리나 마찬가지입니다.
그랬군요. 아마 RHEL을 저한테 이야기 한것이데, 잘못 들었을지도 모르겠습니다. 기억이 좀 가물가물한데 그때 가격이 17만원 정도 추가였던 것 같습니다. 방금 델 사이트를 뒤져 보니 그런게 전혀 안보이네요. :oops: 제가 괜히 사고 친 듯한 느낌이......
좀더 자세히 살펴보니 아예 RHEL을 프리 인스톨해서 배달하는 옵션 자체가 없네요. 도대체 제가 당시 뭘 본건지 모르겠습니다. :oops: 죄송합니다. 지난번 인용사건 이후로 또 제가 실수를...... :oops:

==========================
부양가족은 많은데, 시절은 왜 이리 꿀꿀할까요?
=====================
"지금하는 일을 꼭 완수하자."

goodeegg의 이미지

1학년때쯤 부터 관심만 가지고 있다...4학년 2학기때 클러스터에 빠졌죠... :D

찾아보니 예전에 돌렸던 스크린 샷이 있네요...

지금은 기억이 가물가물 하네요...

지금이 너무 많은 미련이 남는....

다시 한번 꼭 해보고 싶네요...

댓글 첨부 파일: 
첨부파일 크기
Image icon 0바이트
Image icon 0바이트