Dynamics 및 수치해석용 MPI/PVM 4~32 CPU 패러랠 머신
안녕하세요?
제가 다니는 실험실에서 계산용 패러랠 머신이 필요하여
이렇게 질문을 올립니다. 실험실에 있던 sgi Octane 2가 이제는
무기력-_- 해서 옆에있는 펜티엄 4만도 못하네요. 이제 이걸로는
3D 비쥬얼라이즈 할때만 써야 할 듯 하네요. 크기는 초대형 밥통만한게
정말 밥통이죠...;;
각설하고... 이번에 장만할 패러랠 머신은 주로 MPI 또는 PVM
등을 이용하여 dynamics 프로그램을 실행하고 그 결과등을
수치해석할 임무를 띄고 있습니다.
이 패러랠 머신의 CPU갯수는 4개에서 32개 사이가 될
것이며 (미정) 우선 CPU-RAM 간의 억세스 속도가 무척 빨라야 하고
그 다음으로는 CPU-BUS 간의 억세스 속도가 빨라야 합니다.
일단 목적 프로그램이 RAM에 로드된 이후에는 더이상의 기타 잡 파일들을
읽을 일은 없으며 그 다음부터는 RAM내에서 대량의 연산작업이 일어나고
CPU와 (다른 노드의) CPU간에 대량의 메세지가 오고갑니다.
한편 계산 중간중간에 대량의 중간생성파일이 생깁니다. 또한 노드와
노드를 연결하는 네트워크로는 기가비트랜을 사용할 것이며 OS는 리눅스를
쓸 겁니다.
제가 궁금한 점은 다음과 같습니다:
1. Intel CPU를 써야 하나요? AMD CPU 를 써야 하나요?
많은 CPU time은 부동소수점 연산에 소비될 듯 합니다. 또한 CPU-RAM 및
CPU-BUS간의 속도도 빨라야 합니다. (왜냐하면 RAM내에서 대량의 연산이 일어나고
노드간 통신속도도 매우 빨라야 하기 때문이죠.)
Intel CPU가 부동소수점 계산에서는 AMD보다 다소 느린것 같지만 FSB가 빨라서
상당히 고민되네요. Intel CPU를 사용할 경우 CPU-RAM 및 CPU-BUS 간의 속도도
AMD보다 더 빠른것 같은데, 이점 상당히 고민됩니다.
2. DDR RAM을 써야 하나요 RDRAM을 써야 하나요?
CPU-RAM 간의 대역폭이 상당히 중요해서....
근데 요새는 DDR이 오히려 RD보다 낫다는 소릴 어디서 들어서 혼란스럽네요.
3. 각 노드당 CPU 숫자는 1개가 좋을까요 2개가 좋을까요?
기가비트랜의 모든 성능을 끌어내려면 반드시 듀얼 CPU체제로 가야 하는건가요?
고민되는 점은 싱글 CPU 속도가 듀얼 CPU 보다 빠르고 보드 및 주변기기가 상당히
저렴하므로 기가비트랜의 성능을 싱글 체제에서도 충분히 끌어낼 수 있으면 궂이
듀얼을 안 써도 될 것 같다는 생각이 듭니다.
또한 듀얼 CPU 체제에서 CPU-RAM및 CPU-BUS의 대역폭이 훨씬 (2배 초과) 큰가요?
만약 그렇지 않다면 싱글 CPU를 써야 할 것같은 느낌이 드네요.
또한 안정성 측면에서도 듀얼을 쓸지 싱글을 쓸지.. 참 고민됩니다.
4. IDE 디스크를 쓰는것도 좋을것 같은데 그렇지 않은가요?
Dynamics프로그램을 주로 사용할 거라서 중간 생성파일이 엄청나게 많이 (>10GB)
생깁니다. 하지만 여러 프로세스가 동시에 경쟁적으로 하드를 억세스 할 일은 없으므로
가격도 싸고 순차기록속도가 SCSI 보다 빠른 IDE 하드를 사용하고 싶은데 괜찮은가요?
5. 노드 관리는 어떻게 하는게 좋을까요?
노드의 숫자가 그리 많지는 않아서 그냥 재래식으로 관리해도 될 것 같기도 한데...
혹시 BOOTP를 사용하여 패러랠 머신을 구축하신 분 계신가요? 이렇게 해도
네트웍의 성능이 떨어지지 않는다면 또한 이렇게 해서 중앙집중관리가 훨신
수월해 진다면 BOOTP및 nfs를 이용하여 시스템을 구축하려고 하는데 좋은
생각인지 모르겠습니다.
6. 케이스는 일반 PC용 케이스를 써야 하나요? 아니면 4U 케이스를 써야 하나요?
4U 케이스 가격이 어이없게 비싸서... 상당히 망설여 지네요. 핫스와핑 같은거가
필요한 것은 아니라서 일반 PC용 케이스를 쓰고 싶은데 이렇게 할 경우 케비넷을
어떤걸 써야 할지 궁금합니다.
쓰고보니 질문이 좀 많이 장황하네요.
시스템 구축에 필요한 비용은 충분히 있다고 가정하시고
많은 답변 부탁드립니다. 감사합니다.
@ 아 참! 그리고 기가비트랜을 사용할 경우 풀 로드가 걸렸을 때 CPU%를 어느 정도 잡아먹나요? 1% 이하는 너무 큰 기대인가요?
저하고 비슷한 고민 하시네요 ^^
바로 밑에 저도 질문하나 올렸는데
제 경우에는 클러스터를 구축하고 pbs같은걸로 작업을 분산하려고 합니다. 시리얼프로그램을 주로 돌릴거거든요 (사실 pbs같은게 있다는 것도 어제 알았습니다. 개념도 아직 안 잡힌상태 x.x). 몇일동안 이리저리 알아보고 다녔습니다.
1. CPU는 인텔거로 하시는 것이 좋을것 같습니다. 인텔에서 리눅스용 포트란 컴파일러가 나왔거든요. amd에서도 될른지는 모르겠네요. 사실 저도 안써봐서요. amd가 가격대성능비로는 짱이지만 컴파일러가 후지면 cpu좋은거 달아도 필요없잖아여. 제가 몇년전에 경험하기로 리눅스에서 g77로 돌리면 같은 사양의 윈도우용 포트란에서 돌린것보다 2배정도 느리더군요.
2. 램은 저도 ddr 이냐 rdram이냐 망설여지는데요. rdram이 더 비싸거든요. 괜히 비싸겠습니까 -_-;; 좋으니까 비싸것지.... 하고 그냥 rdram 살려고 합니다. 256M는 ddr하고 가격차도 별로 안나더군요. 4개 꽂으면 1G가 되니까요. 클럭속도도 RDram이 더 빠르더군요.
3. 저희는 총알이 부족해서 fast ethernet으로 결정, 고민할 필요가 없어서 좋네요.
4.5 저는 계산노드에는 저용량의 하드를 암거나 달아서 os만 올릴려고 했는데 아래 제가 올린질문에 다른분이 답하시길 disk-less가 여러모로 편리하다고 하시네요. 서버에만 스카시 하드 큰걸로 달고 nfs로 하면 될지.... 조언좀 주세요 ㅠ.ㅠ
그런데 BOOTP가 뭔가요?
총알이 충분하시다니 부럽습니다 ^^
BOOTP는..
부트스트랩 프로토콜이라고 하며.. 이 프로토콜을 사용하면
부트서버에 있는 시스템의 이미지로 부팅을 할 수 있죠.
디스크리스 시스템을 구축한다는 것과 어느정도.. 동일한 뜻 같습니다.
하지만 저는 각 노드마다 디스크가 하나씩은 있어야 돼요... ㅜ.ㅠ
프로그램이 중간중간 쏟아내는 중간파일이 꽤 많은지라..
완벽 디스크리스 시스템으로 만들어버리면 왠지 네트웍 부하가
심각할거 같다는 생각이 드네요.
근데 인텔서 나온 리눅스용 포트란 컴파일러가..
근데 인텔서 나온 리눅스용 포트란 컴파일러가..
공짠가요? :wink:
근데.. pbs가 뭐죠?
아참.. 한가지 더..
pbs가 뭐죠? 설마... 시리얼 프로그램을 패러랠하게 돌려주는 뭐 그런건가요? :shock:
잡다구리...
- pbs : portable batch schedule 이었던 것 같구..
openpbs 는 공짜입니다..상용버젼도 있지만..
웹에 찾아보시면 정보 많습니다.
- 인텔서 나온 리눅스용 포트란, C 컴파일러 공짜입니다.
근데 상용 product 에 안쓴다는 조건이 붙어 있을 거에요.
윈도우용은 공짜 아니구..
컴파일러...무지 중요합니다. application 에 따라...몇 퍼센트에서
최대 몇십퍼센트까지 성능향상이 있습니다.
제가 알기로 portland 컴파일러가 있는데 요놈이 물건이지요..
근데 상용이라 무지 비싸지만..30일 트라이얼 버젼이 있을 거에요.
한번 시도해보실만한 가치가 있으리라 봅니다.
- 가격대 성능비로 따져보면 싱글 cpu 보다는 듀얼 cpu 를 추천해드립니다.
근데 아마 P4 쓸려면..어쩔 수 없이 싱글을 써야 할 듯...
- IDE 디스크를 써도 무방하리라 봅니다.
- 디스크 I/O 가 많다면..nfs 는 피하시길... 디스크 값 아끼지 말고
각 노드마다 디스크 껴주세요.
- 케이스 문제... rack 으로 멋있게 꼽아놓으면...공간절약이 되지요.
desktop case 로 하더라도....컴퓨터를 얹어 놓을 "가구"를 잘 사시면 별로
문제 없으리라 보면 됩니다.
- 갑자기 생각이 나는데..fast ethernet 쓰신다면 두장 붙혀서
channel bonding 해서 사용하시면...좋죠...
앗앗...
앗... 채널본딩도 있었군요!
왜 난 그걸 생각못했지..;;
AMD Athlon XP Dual 을 추천합니다.
요즘 기가장비 단가가 많이 싸졌으므로 기가로 가는게 좋을것같구요..
100메가 채널본딩 많이해봐야 pci슬롯 한계가있으니 4~500메가정도..
차라리 요즘 구리선 1기가 많이나오니 그걸써도 랜카드 단가는 비슷할듯..
다만 기가포트스위치가 100메가보다 단가가 서너배 비싼게 흠..
차라리 돈조금 더주고 광으로 연결하여 1기가를 확실히 보장받는것도 좋을듯..
예산이 충분하다면 억대의 백본급 스위치로 기가포트 50~60개 확보도 가능할꺼구요.
서버는 듀얼이 가장 낫다고 하더라구요..
네개이상되면 효율이 점점 떨어진다고하네요..
AMD Athlon MP말고 일반 싱글용으로도 듀얼이 가능하니, AMD AthlonXP Dual 이 현재 시장에서 구할수있는 최고의 가격대비성능이 나올겁니다.
64bit pci내장한 저렴한 듀얼보드도 많이있으니 듀얼시스템으로는 최고의 솔루션인듯합니다.
메모리는 DDR이 좋을듯하구요, 램버스랑 별차이 없을듯..
주저리주저리 지극히 개인적인 생각들이었음
참고로...
참고로 저희 실험실에서 예상하는 비용은 노드당 200만원 안팎입니다.
미르넷을 추천합니다.
:shock: 제가 아는바로는 램 씨피유간의 통신이 빨라야하는것이라면 듀얼씨피유는 안좋다고 봅니다. 왜냐면 메모리를 두 씨피유가 공유하기때문입니다.그리고 대량의데이타 통신을 하고 자주 하게되는 경우에는 이더넷은 레이턴시가 커서 전체적인 퍼포먼스가 떨어진다고 합니다. 이런경우에는 미르넷을 쓰는게 나을것입니다. 단지 가격이 무지 비싸다는것이 문제죠(카드도 백만원정도하고 스위치는 억대라고 하더군요, 요즘도 그런지 모르지만). 관리의 편리를 위해서라면 디스크리스가 편리하지만 중간 중간에 파일을 많이쓰면 하드를 달아야겠죠.
BOOTP보다는 DHCP을 쓰면 편하고요.
음... 인텔이 floating point가 더 빠르지 않나요??지금
음... 인텔이 floating point가 더 빠르지 않나요??
지금 spec cpu2000 벤치마크 결과를 보니까 동일 모델명에서 약 15퍼센트 높던데요... 반대로 AMD가 integer쪽이 더 빠르고...
그리고... 제 생각에는.... processor나 RAM의 경우에는 몇가지 hardware를 놓고 실험을 해 보시는 게 가장 확실할 듯 합니다... AMD DDR, Intel RAMBUS, Intel DDR 세가지정도 해보시면 될 듯 하네요.. 물론 컴파일러도 바꿔가면서 해보시고요... 그냥 제 감에 의하면 intel DDR이 가장 나은 성능을 보일 것 같습니다...
그리고, program이 memory-intensive라서 병목지점이 bus라면, single이 나을 것 같습니다. SMP가 되면서 sync 맞추는 것에 의한 추가 load는 둘째치고, dual 이상의 경우에는 ECC/reg가 붙어서 가격도 비싸지고, 클럭수도 single만큼 올라가지를 못한다고 하더군요...
Consider the ravens: for they neither sow nor reap; which neither have storehouse nor barn; and God feedeth them: how much more are ye better than the fowls?
Luke 12:24
많은 분들의 답변 정말 감사드립니다. 여러모로 많은 아이디어를 얻었습니다
많은 분들의 답변 정말 감사드립니다. 여러모로 많은 아이디어를 얻었습니다.
댓글 달기