여러대의 컴퓨터의 리소스를 하나로 할수 있을까요?

통신공학을 하고 있는 대학원 박사 과정입니다…

요즘 리눅스의 매력에 폭 빠져 있는중 입니다…

통신공학을 주로 시뮬레이션 할 때 보통 몬테카를로 시뮬레이션이라는 것을 하는데 이것은 발생할 수 있는 상황을 수십번이고 수백번이고 많은 시뮬레이션을 거쳐서

결과를 뽑아내는 방식이라고 쉽게 설명 할 수 있겠습니다… 문제는 많은 시뮬레이션을 통해서 하나의 결과를 도출 해 내기때문에 시뮬레이션 시간이 굉장히 많이 걸린다는 것이 단점입니다.

어떤 경우에는 며칠씩 결과 하나를 보고자 며칠씩 시뮬레이션만 돌리는 일도 비일비재하죠… 그런데 만약 이 결과가 타당한 결과가 나오면 그래도 다행이지만 시뮬레이션이 잘못되서

엉뚱한 결과가 나올 때는 하늘이 무너지는듯… 그래서 이 시뮬레이션 속도를 빠르게 할 수 있게 (물론 시뮬레이션 코드가 최적화 되어야 겠지만…) 할 방법을 찾아 보던중…

PC 몇대를 네트워크로 묶어서 분산 처리 하는 방법이 있다고 하더군요…

그래서 연구실에 있는 xeon급(Dual) 서버 몇대를 네트워크로 묶어서 분산처리 하는 방법으로 한번 해보려고 하는데 이건 어디서 조언을 구하기도 참 애매하군요…

저한테 힌트를 준 그분도 리눅스와 GCC를 사용하여 그리 사용한다고 하긴하더만 알려 달라니 잠적…(연락도 안받고…ㅠㅠ)

혹 이렇게 구축해서 사용해 보신분 있으면 조언좀 부탁합니다…

번거로우시다면 책이나 자료라도 추천을 좀 해주시면 감사하겠습니다…

잘 모르지만… 컴퓨터 노드들을 이더넷이나 인피니밴드 등으로 묶고 MPI 라고 하는 방법으로 병렬처리합니다.
병렬화해서 프로그래밍을 해야 합니다. MPI에 대한 것은

http://www.redbooks.ibm.com/abstracts/sg245380.html

에 잘 나와 있다고 하더라고요.
MPI의 구현들, MPICH, LAM/MPI 등등이 있는데요 이것에 대해서도 알아 보셔야 할 것 같고요,
클러스터 구성하는 방법도 알아 보셔야 하겠죠.

기왕에 우분투 포럼에 오셨으니 우분투 위주로 말씀을 드리자면, 우분투와 같은 데비안 계열 리눅스 배포판에서는 베오울프 방식의 클러스터 컴퓨팅 시스템을 비교적 손쉽게 구축할 수 있습니다.

이를 이용하는 가장 보편화된 방식은 MPI(Message Passing Interface)를 이용하는 것입니다. 구글링 해보니 말씀하신 몬테카를로 시뮬레이터의 병렬 실행에 관해 많은 글들이 나오네요.

일단 ‘베오울프 클러스터’ 혹은 ‘beowulf cluster’ 등의 검색해서 구글링을 좀 해보셔야 할 듯 합니다.

또한 이 곳의 포럼지기이신 abron님께서 클러스터 구축에 관한 노하우가 많으신 것 같으니, 그 분께 여쭈어 보아도 좋을 듯 합니다.

간략하게나마 도움 되시라고 댓글 답니다.

그럼 이만.

MPI 말고 GPGPU는 어떠신지요? 물론 MPI와 GPGPU를 섞어서 쓸 수도 있습니다.
GPGPU는 GPU(그래픽 카드에 달린 프로세서)를 계산에 이용하는 겁니다.
유명한 게 CUDA가 있고 OpenCL 이라고 하는 표준도 있습니다.
성능 좋은 그래픽 카드 하나나 둘 이상을 데스크탑 컴퓨터에 달아서 노드 수십대의
클러스터의 성능을 낼 수도 있다고 합니다. 저렴하고 강력하기 때문에 요즘 뜨고 있습니다.

http://www.nvidia.co.kr/object/cuda_home_kr.html

abron 입니다.

말씀 하신대로… 여러 자원을 하나로 묶어 계산을 할 수 있는 방법중 하나가 베어울프프로젝트에서 시작이 된 클러스터링 기법이 있습니다.

아래 사진은 최근 제가 구축을 한 클러스터의 한 예입니다. 총 32노드 256core CPU 입니다.

[attachment=0:1ynyj917]screenshot61.png[/attachment:1ynyj917]

단. 이 기법을 사용 하시기 위해서는 MPI 또는 PVM과 같은 병렬 프로그래밍을 하셔야 됩니다.

이에, 사용하시는 프로그램이 병렬 환경을 지원 하는지와, 혹시 소스로 사용 하실 경우는 별도로 병렬 프로그램밍을 하셔야 됩니다.

다행이도… 지금 사용하시는 몬테카롤로스 코드는 클러스터에 바로 사용을 할 수 있도록 병렬 프로그램밍이 되어 있습니다.

참고를 하시라고, 클러스터 메뉴얼을 첨부 합니다.

상세한 자료가 필요하시면, 쪽지 부탁 드립니다.

2월 오프라인 모임시 "우분투 - 모이면 강해진다 : 리눅스 클러스터 구축 방법법" 라는 주제로 한번 세미나 할까요?

[quote="abron":1q2fcgwv]2월 오프라인 모임시 "우분투 - 모이면 강해진다 : 리눅스 클러스터 구축 방법법" 라는 주제로 한번 세미나 할까요?[/quote:1q2fcgwv]오호, 이거 제가 부탁드리고 싶은데요. ^^

[quote="esrevinu":1q2fcgwv]MPI 말고 GPGPU는 어떠신지요? 물론 MPI와 GPGPU를 섞어서 쓸 수도 있습니다.
GPGPU는 GPU(그래픽 카드에 달린 프로세서)를 계산에 이용하는 겁니다.
유명한 게 CUDA가 있고 OpenCL 이라고 하는 표준도 있습니다.
성능 좋은 그래픽 카드 하나나 둘 이상을 데스크탑 컴퓨터에 달아서 노드 수십대의
클러스터의 성능을 낼 수도 있다고 합니다. 저렴하고 강력하기 때문에 요즘 뜨고 있습니다.

http://www.nvidia.co.kr/object/cuda_home_kr.html[/quote:1q2fcgwv]저희 연구실에서도 최근에 꽤 비싼 GPU를 하나 질렀습니다. 이제 좀 가지고 놀아보려고 하는데, 성능이 기대 되는군요. ㅎㅎㅎ.

와… abron님 메뉴얼 이거 정말…

좋은 자료 감사합니다…

세미나도 진행해주시면… 이건 정말 무릎이라도 굻어야 할듯…굽신굽신…

Grid를 사용하시면 많은 도움이 되실 것 입니다.

FKPPL VO

http://esgtech.springnote.com/pages/4262293 http://esgtech.springnote.com/pages/4262263

matlab 같은걸로 프로그램 짜시면
매틀랩이 좋은게 코어수만큼 프로세서 돌리실수 있어요
프로그램을 파라메타만 바꿔서 두개 동시에 돌리는게 된다는거죠 ㅎㅎㅎ
전 보통 터미널 두개 열어서 matlab -nodesktop해서 두개 동시에 돌립니다.
쿼드코어면 4개까지도 돌리겠는데 연구실 컴터가 듀얼코어밖에 없어서뤼 ㅠㅠ

[quote="esrevinu":628ubwvc]MPI 말고 GPGPU는 어떠신지요? 물론 MPI와 GPGPU를 섞어서 쓸 수도 있습니다.
GPGPU는 GPU(그래픽 카드에 달린 프로세서)를 계산에 이용하는 겁니다.
유명한 게 CUDA가 있고 OpenCL 이라고 하는 표준도 있습니다.
성능 좋은 그래픽 카드 하나나 둘 이상을 데스크탑 컴퓨터에 달아서 노드 수십대의
클러스터의 성능을 낼 수도 있다고 합니다. 저렴하고 강력하기 때문에 요즘 뜨고 있습니다.

http://www.nvidia.co.kr/object/cuda_home_kr.html[/quote:628ubwvc]

CUDA를 활용한 MC에 대해서는 몇편 논문도 나와있고,
성과도 좋은편입니다.

보시고, GPU에 올릴만하다고 생각되시면 이쪽도 매우 괜찮습니다.
memory bandwidth만 신경써서 코딩하시면 충분한 성능 얻으실 수 있을겁니다.

제일 손쉬운 방법은 파라메터를 달리 해서 컴퓨터 여러군데에서 손으로 코드를 돌리는 방법입니다. 그러니까 시물레이션 코드가 simul이라고 하고 파라메터로 1, 2, 3, 4 가 들어가야 한다면 각 노드 컴퓨터에 ssh로 들어가서 이렇게 하면 되죠.

컴퓨터A: $ simul 1
컴퓨터B: $ simul 2
컴퓨터C: $ simul 3
컴퓨터D: $ simul 4

간단해 보여도 시물레이션을 여러번 돌려야 할 때 유용합니다. 이쪽 자료는 batch processing 키워드로 찾아보시면 될거고 손으로 적당히 쉘 스크립트를 짜서 돌려도 됩니다. 다만, 각 노드 컴퓨터에 ssh로 들어갈때 패스워드 묻는 것이 귀찮을텐데 이 과정을 생략해 주는 방법도 있습니다.

http://www.thegeekstuff.com/2008/11/3-s ... h-copy-id/

MPI는 병렬 프로그램 기법이 필요할 때 쓰시면 됩니다. 즉, 컴퓨터 A와 컴퓨터 B가 돌면서 계산 과정에 서로 데이터를 주고받아야 할 필요가 있을때나 쓰시면 됩니다.

그리고… 대학원생이면 연구 목적으로 클러스터 계정을 받을 수 있을 겁니다. 이러면 노드 수백,수천개를 쓸 수도 있죠. 일단 학교 전산소부터 알아보시길. 실험실 예산에 여유가 있다면 쿼드코어 시피유 두개나 네개를 꽂을 수 있는 보드를 사서 조립을 하는 것도 방법입니다. 쿼드코어 시피유 두개만 꽂아도 벌써 8 node cluster가 만들어지죠. ssh로 들어갈 필요도 없고… 구글링 해보니 이런 게 뜨네요.

http://www.newegg.com/Product/Product.a ... 6813131670