공학 계산용 컴퓨터에 대한 질문..
자게에 이런 질문을 올려도 될지 모르겠지만.. 마땅히 올릴만한데가 없어서 여기서 도움을 구합니다.
저는 기계공학과 대학원생인데요 MD, CFD등 수치계산을 많이 하고 있습니다.
그래서 KLDP회원이신 mycluster님의 도움을 받아서 베어울프 타입의 병렬컴퓨터(일반 PC를 스위치등의 네트웍 장비를 통해서 수십대 정도 연결합니다)를 직접 제작해서 그동안 사용하였습니다.
병렬 컴퓨터를 만든후에는 MPI를 이용해서 위에서 언급한 MD, CFD등의 계산을 합니다.
지금까지는 잘 쓰고 있었는데요.. 컴퓨터가 오래되다 보니 몇개씩 고장나는 것들이 생겨서 이제 바꿔줄때가 된것같습니다.
여기서 질문하나 드리겠습니다.
공학용 수치계산 속도를 요즘 나오는 가장 빠른 최신의 일반 CPU(intel core2 등..)에 비해서 5배 정도(물론 더 높을수록 좋습니다만..) 빠르게 할 방법이 위에서 언급한 병렬 cluster를 이용하는 방법 밖에 없는건가요?
병렬 cluster가 은근히 유지/보수가 귀찮고 상당히 번거로운 점이 있습니다. 그래서 유지/보수가 수월한 쪽으로 가고 싶은데요..
제가 대충 생각해 본바로는
1)제가 모르는 굉장히 빠른 CPU가 있어서 그 CPU를 구입하거나
2)아니면 메인보드에 CPU를 한 10~30개정도 설치할수 있어서 스위치나 랜카드와 같은 부가 장비가 없어도 그 자체로 병렬 계산이 가능하거나
3)마지막으로 병렬 계산용 cluster를 제작/판매하는 업체에서 구입한 다음 유지/보수는 A/S를 통해서 해결하거나..
이 정도 밖에 생각이 안나는데요..
아무튼 국내에서 쉽게 구입할 수 있으면서 현재의 최신 CPU의 계산 속도보다 매우 빠른(최소 5배 이상) 계산 속도를 얻을 수 있는 방법은 무엇이 있을까요?
ㅇㅇ
인제 로긴을 해야 댓글이 써지는걸로 바뀌었나보네요.
클러스터가 관리할때 좀 까다로운건 사실입니다만, 그 외에 대안이 없기 때문에 사용하고 있습니다.
1. 전내 빠른 씨퓨 -> 없습니다. 성능/가격비가 기하급수적이라서 느린 씨퓨 두개의 병렬 시스템의 가격으로 "약간" 빠른 씨퓨 1개를 사용하는 싱글 시스템을 만들 수 있습니다.
2. 메인보드에 멀티씨퓨 -> 전에 HP에서 16노드까지 지원하는 메인보드를 판매한다는 말을 들은적이 있어서 확인을 해봤는데 사실 무근이랍니다. 다만, 4노드 지원하는 시스템은 판매하고 있더군요. 가격은 약 4천만원 정도...... 쿼드코어를 쓰게 되면 16노드가 되긴 합니다만...... 저돈주고 사실 형편만 되신다면야.
3. 업체에서 구입 -> 이것도 역시 직접 제작하는 단가의 두 배는 생각하셔야 됩니다.
결국, 본인이 구입해서 만드는게 젤 싸게 먹히고, 그나마 좀 편하게 관리하는 방법은.
1. 디스크리스 시스템을 만들어서 메인노드 이외의 것들은 스위치만 넣었다 뺐다 하게끔 만든다.
2. diskless 노드에도 그래픽 카드를 끼워넣는다. -> 몇천원 아끼지 말고 그래픽 카드를 다 끼워넣는게 관리하기 편하더라구요. 문제 생겼을시.
3. Rocks를 사용한다. 이게 최근버전으로 오면서 CentOS 기반으로 바뀌고, diskless까지 지원합니다. 그냥 설치만 하면 한방에 모든 관리와 병렬처리 시스템이 인스톨 되니까 편합니다.
4. 스위치에 여러대를 물리지 말고, 듀얼보드에 쿼드코어를 꽃아서 PC1대당 8노드를 만들어놓고, 이걸 두대만 랜카드to랜카드로 연결을 하면, 비싼 스위치를 사용하지 않아도 되니까 단가도 절감되고, 속도도 빨라집니다. 물론 지금 현재로는 16노드 정도가 한계군요. 랜카드를 두세개 연결을 해서 bonding을 사용하면 스위치 사용하는 16대의 16노드 시스템과는 비교할 수 없는 속도가 나올겁니다.
등등 입니다. 이미 아는 정보만 잔뜩 써놓은건지 모르겠군요.
정보 감사합니다.
정보 감사합니다. 듀얼보드에 쿼드 CPU 장착한것을 2개 연결해서 총 16노드를 만드는 방법이 상당히 좋아 보입니다.
현재 사용하고 있는 시스템은 single CPU를 diskless type 으로 28개 연결해서 노드마다 가장싼 비디오 카드 꼽아주고 100M,1000M 랜카드 두개씩 장착해서 NFS를 통한 linux 커널 통신에 100M이더넷 사용하고 계산용 통신 교환에 1000M이더넷 사용하는데요..(사실 이런 시스템 구축하는데 석사과정의 절반 이상을 보냈습니다.ㅠ 이거 첨 할때는 linux를 설치도 안해본 linux 쌩초보 상태라.. 아주 막막했었습니다.ㅠ)
아무튼 듀얼보드에 쿼드 CPU 2개 설치한것을 연결한다고 했을때.. 랜카드 2~3개를 bonding하는 것이 윈도 기반에서도 가능한지 궁금하네요.. 이제는 박사과정에 있지만 제가 아직도 linux는 서툴러서 시스템 다시 구축할려니 담배가 먼저 생각납니다.ㅎㅎ
윈도기반클러스터
..
부동소수점이고
부동소수점이고 병렬화가 용이한경우 GPGPU와 Cell(ps3)이라는 매우 훌륭한 대안이 있습니다.
GPGPU는 그래픽카드만 메인보드에 전나 꼽으면 되고
ps3는 풀 패키지로 싸게 나옴으로 세팅하기 굉장히 수월할 듯 합니다.
http://fah-web.stanford.edu/cgi-bin/main.py?qtype=osstats
+추가
Molecular Dynamics도 같이 쳐보니 연관된 링크들이 나오는군요~
http://www.ps3grid.net/pub/cell_for_md.pdf
...
The new Cell processor represents a turning point for computing intensive applications. Here,
I show that for molecular dynamics it is possible to reach an impressive sustained performance in
excess of 30 Gflops with a peak of 45 Gflops for the non-bonded force calculations, over one order
of magnitude faster than a single core standard processor.
...
http://www.ps3grid.net/
...
If you like science, you can participate with your PlayStation3 to scientific research by running molecular simulations while not playing. We will use it at its best by running only the most optimized software: With Cell MD, the Cell processor is equivalent to almost 20 PCs (16 times faster on the 6 SPEs of the PS3)
...
http://forums.nvidia.com/index.php?showtopic=35541
...
Running on a single GPU, the biggest advantage over the cluster would be the lack of the communication overhead => more efficient calculations. That, and cost, with a $500 GPU potentially having the performance of a 32 node cluster in my application.
Disadvantages of the GPU: 1) High development time. There isn't a well established set of software out there for doing calculations on the GPU yet. 2) Lack of double precision math (though this will be changing in the near future) 3) Not every type of calculation is well suited to be done on the GPU
...
gpgpu가 정확히 어떻게 쓰이는 지는 모르겠지만..
AMD에서 한창 선전하고 있는
스파이더 플랫폼 쓰면 좋겠군요..
쿼드 크로스파이어 기술 .. 설마 이걸 위해서?
___________________________
I like Small Linux.
___________________________
I like Small Linux.
음 GPGPU는 General-purpose
음 GPGPU는 General-purpose GPU의 약자인데요
아시다시피 그래픽카드를 범용 연산에 사용하는 겁니다. ㅎㅎ
gpgpu.org에 가면 위키에 튜토리얼이 있구요. 택스쳐에 랜더링되는 쉐이더를 코딩해줌으로써 -_-;
프로그래밍합니다.
지금 제가알고있는 지상 최대 컴퓨팅파워를 활용하는 MD프로젝트가 folding@home (folding.stanford.edu)인데요
거기 말을 빌리자면...
http://folding.stanford.edu/English/FAQ-ATI
...
A major step forward: the Gromacs core (May 2003)
After many months of testing, Folding@home officially rolled out a new core based on the Gromacs MD code in May 2003. Gromacs is the fastest MD code available, and likely one of the most optimized scientific codes in the world. By using hand tuned assembly code and utilizing new hardware in many PC�s and Intel-based Mac�s (the SSE instructions), Gromacs was considerably faster than most MD codes by a factor of about 10x, and approximately a 20x to 30x speed increase over Tinker (which was written for flexibility and functionality, but not for speed).
...
이미 2003년도에 ATI그래픽카드로 10~30배 성능향상을 얻었다고 나와 있네요~
지금은 그때 그래픽카드하고는 또 비교도 되지 않게 성능이 많이 올라갔구요.
아무래도 병렬부동소수점 연산에"만" 특화된 프로세서이다보니 부동소수점 연산 능력 하나는 ㄷㄷㄷ 합니다 -_-;
8800씨리즈. HD3000씨리즈는 단순하게 측정해보면 한 400Gflops 찍어주는 것 같구요.
더 무서운거는 한 세대가 지날때마다 그래픽 카드 성능이 거의 "더블" 이 된다는 겁니다 -_-;;
다음 세대의 그래픽카드는 양사 모두 단순성능으론 1Tflops 정도를 이야기하는 기사를 본 것 같습니다.
단점은 뭐... 쉐이더 자체가 성능은 좋지만 상대적으로 유연하지는 않고 프밍하기 좀 힘들다는 정도?
Nvidia의 CUDA가 이걸 좀더 사용하기 쉽게 해주는 플랫폼인데.. 관심있으시다면 한번 읽어볼만 할겁니다.
http://developer.download.nvidia.com/compute/cuda/1_0/NVIDIA_CUDA_Programming_Guide_1.0.pdf
참 배정밀도는 nvidia의 9000번대, amd의3000번대 gpu가 지원하는 걸로 알고 있습니다.
이거를 뭐... 한 컴퓨터에 4개.. 혹은 그이상씩 꼽으면 -_-;; 걍 한방에 테라플롭단위급 컴 탄생하는 -_-;;;
GPGPU 관련 정보 감사드립니다.
CUDA 관련해서 좀 더 알고 싶네요.
------------------------signature------------------------
Self-Pity
I never saw a wild thing
sorry for itself.
A small bird will drop frozen dead from a bough
without ever having felt sorry for itself.
- David Herbert Lawrence (1885-1930)
------------------------signature------------------------
Self-Pity
I never saw a wild thing
sorry for itself.
A small bird will drop frozen dead from a bough
without ever having felt sorry for itself.
- David Herbert Lawrence (1885-1930)
여기 가시면 CUDA SDK와
여기 가시면 CUDA SDK와 샘플 소스코드를 다운 받으실 수 있습니다.
http://www.nvidia.com/object/cuda_get.html
몇 년전에는
몇 년전에는 디스크리스 시스템의 구성이 힘들었지만, 지금은 그냥 설치만 하면되는
프로그램들이 많이 있습니다.
제가 최근에 사용하는 것은 http://www.perceus.org/ 라는 시스템입니다. 아주쉽게
설치할 수 있습니다. 예전에 삽질 하던거에 비하면, 정말 ... 좋은 세상이죠.^^;
그냥 듀얼 보드에 제온 쿼드 2개 끼워서 8노드로만 해서 사용하는게 가장 쉽고 편한 방법이라고
생각이 드네요. 예전 28노드 시스템이라면 32비트니까 최신 CPU 8 core 에 64 비트 라면,
비슷한 성능이나 더 좋은 성능이 나오지 않을까 생각이 드는데요.
그런데 MD 가 Molecular Dynamics 말씀하시는거면,
윈도우용 MD 프로그램이 있나요? 그냥 궁금해서... ^^;
----
Gentoo. Bioinformatics, Protein Interaction.
Gentoo. Bioinformatics, Protein Interaction.
MD는 Molecular Dynamics가
MD는 Molecular Dynamics가 맞습니다.ㅎㅎ 상용프로그램을 사용하지는 않구요.. 저희가 만들어서 쓰고 있습니다. 윈도우용 MD 프로그램은 저도 못본거 같은데 확실하게는 모르겠네요.
듀얼 보드에 제온쿼드 2개 장착하면 총 8노드가 되는데요.. 여기에다가 리눅스 설치하고 언급하신 http://www.perceus.org/를 설치하면 MPI를 이용한 병렬 컴퓨팅이 가능하단 말씀이시죠?
내부 core간의 통신부하외에 랜카드를 통한 외부 컴퓨터와의 통신부하가 전혀 없어서 병렬 효율은 매우 좋을것처럼 보이네요.혹시 이런 시스템을 직접 구축해 보셨는지요?
사족: 혹시 MD를 연구에 사용하시거나 MD와 많은 관련이 있으신가요? 그렇다면 앞으로 저와 많은 교류가 있었으면 좋겠습니다.^^;
그냥 하나의 M/B에 Dual
그냥 하나의 M/B에 Dual CPU (8개의 core) 라면, Perceus 가 필요치 않습니다. Perceus 는 Beowulf 방식의 Diskless Cluster 시스템을 구축하는 하나의 솔루션 입니다. 전에 Diskless Cluster를 구축하던 것 때문에 고생하셨다는 말이 있어서 하나의 솔루션을 말씀 드린 겁니다.^^
M/B 에 Dual CPU (8 core) 라면, 그냥 리눅스 하나 설치하고, MPI 설정하셔서 MD 프로그램을 현재노드에서 8개의 slot을 사용하도록 해서 MPI 로 돌리시면 될겁니다. 그래서 편하다고 말씀 드린 겁니다.^^
저는 생물정보학을 하는데, 연구실이 이론 화학을 해서 MD(Amber, Gromacs, Charmm 등등.. 의 툴을 이용하죠)를 많이 사용합니다. 저는 돌리지 않는데, 연구실 클러스터 설정하고 프로그램 설치해주는 일이 제 일이라서 제가 하죠..^^;;
----
Gentoo. Bioinformatics, Protein Interaction.
Gentoo. Bioinformatics, Protein Interaction.
글쎄요. MD쪽이나
글쎄요. MD쪽이나 CFD쪽 문제들이 병렬화가 어느 정도 잘 되는지 따라 결정해야 하지 않을까요? 문제 자체가 병렬화로 풀기 힘들수록 클러스터같은 병렬 시스템들이 애초에 별 도움이 되지 않을 것이고 병렬화가 잘 되더라도 노드간 통신이 부하가 많이 걸리면 노드를 늘리기보다는 네트웍 성능이 발목을 잡을 것이구요.
유지보수로만 보면 메인보드 하나에 시피유 많은 제품이 편할 겁니다. 쿼드코어 시피유 두개 정도 들어가는 서버를 구하면 되지 않을까 싶네요. 뭐 그럼 mpi 셋업 잡을 것도 없이 그냥 mpi 대몬하나 띄우고 대몬에 8개 프로세스 생성 요청하면 시피유 하나마다 한개씩 알아서 들어가겠죠. 싱글 시피유 서버에서 mpi 코딩 연습삼아 8개 노드 돌려보는 것과 똑같습니다.
그게 아니면 그냥 새로 클러스터를 또 만드는 게 편할겁니다. diskless 노드 만들면 네트워크 부팅을 하거나 dvd-rom 드라이브에 적당히 삽질해준 리눅스 배포본 디스크를 넣거나 등등을 했어야 하는데 요즘은 이게 USB에 싼 플래쉬 메모리를 쓰면 하드보다 한참 싼 가격으로 별로 노동력 들이지 않고 노드마다 리눅스를 올리기 좋죠. nfs로 노드들이 공유할 파일 서버 하나만 잘 만들어 주면 될거구요.
그리고 28개 노드면 사실 관리가 힘든게 맞습니다. 경험상 16개 정도가 무난하더군요. 32개이상을 넘기면 관리자가 혼자인 경우 많이 괴로워집니다. 또 노드 수가 너무 많으면 고장나는 노드도 나오기 마련이며 또 한참 코드 돌아가다가 죽는 노드가 나오기도 쉽습니다.
MD쪽은 문제에 따라
MD쪽은 문제에 따라 다르지만.. mass가 골고루 분포되지 않은 경우에는 영역분할이 비효율적이라서 Atom decomposition이나 Force decomposition을 주로 사용하는데 교환데이터가 많아서 그런지 사실 효율이 별로 좋지 않더군요.. 그래서 메인보드하나에 가급적 많은 CPU를 장착하는 방식이 훨씬 좋다고 생각합니다. 제 경험상으로는 1000M 랜카드를 계산데이터 교환에만 사용할 경우 node가 8대 이상 넘어가면 효율이 상당히 안좋았습니다.
CFD의 경우는 고정된 격자계에서 영역분할을 할수 있기 때문에 MD보다는 효율이 좀더 좋았습니다.
아무튼 듀얼보드에 제온-quad CPU를 2개 장착하는 방향으로 갈듯합니다.
그런데 제온 CPU의 성능(속도)이 core2 계열에 비해서 많이 좋은가요? 제온 CPU가 상당히 비싸더군요.ㅠㅜ
제온과 Core2 는 사실
제온과 Core2 는 사실 같은 계열의 코어를 사용한다면, 클럭이 높은게 계산이 더 빠를 겁니다.
단지 제온계열의 CPU 는 내부 캐쉬가 커서 시스템이 안정적으로 작동한다고 알고 있습니다.
그런데 Core2 는 듀얼이 안되니까 듀얼하시려면 Xeon 밖에 방법이 없죠^^
여러대의 컴퓨터를 연결하는 클러스터를 구성한다면, 마스터는 제온으로 하고
노드는 Core2 Extreme 으로 하는것도 괜찮아 보입니다.
----
Gentoo. Bioinformatics, Protein Interaction.
Gentoo. Bioinformatics, Protein Interaction.
그럼 쿼드 시피유
그럼 쿼드 시피유 두개 장착된 서버가 가장 무난할 겁니다. 일반적으로 가장 빠르고 넓은 bandwidth를 제공하는 것은 메인보드의 메모리 채널입니다. 그리고 혹시 모르니 메인보드 칩셋의 메모리 채널 대역폭 bandwidth를 체크해보세요. 기억이 가물가물한데... 오래전 어떤 듀얼보드는 메모리 채널 대역폭이 그다지 좋지 않고 시피유 두개를 풀로 돌릴 때 메모리 엑세스 속도가 이상하게 느려져서 구매를 하지 않았던 기억이 나네요.
제온 시피유가 비싼 건 캐쉬 사이즈 때문입니다. 캐쉬라는게 참 애매모호한데... 계산 문제에 따라 캐쉬가 속도 향상에 기여가 많은 것도 있고 아닌 것도 있고 그렇습니다. 즉, 계산중인 시피유가 메모리를 억세스 할 일이 있는데 이걸 메모리까지 가지않고 캐쉬에서 자주 가져오게 된다면 제온같은 대용량 캐쉬 시피유의 효과를 톡톡히 보죠.
하지만 캐쉬사이즈에 큰 영향을 받지 않는 문제들도 있습니다. 시피유가 데이터를 가져올때마다 메인 메모리를 여기저기 억세스 할 일이 많다면 (2d 배열에서 랜덤하게 인덱스를 골라 데이터를 가져오는 경우를 생각해보세요) 당연히 캐쉬 크기가 큰 제온 시피유나 캐쉬가 작은 일반 인텔 시피유나 계산 속도는 차이가 안날겁니다. 일단 적당한 통밥으로..... 한번 억세스한 데이터나 그 근처 인덱스 데이터를 다시 읽어들일 일이 많다면 캐쉬가 큰 시피유가 유리합니다.
일단 이부분은 사기전에 직접 코드를 테스트해 보세요. 오래전에 기억이 나는 것이 매킨토시의 파워피씨 시피유가 fpu쪽 연산에서 뛰어나고 "아범"에 들어가는 클럭 뻥튀기에만 능한 인텔 시피유나 저가형 AMD보다 좋다고 맥 쓰는 사람들이 칭찬이 자자해서 혹시나 계산용 워크스테이션으로 쓸까 하고 랩 테스트 코드를 돌려 봤더니 정확히 시피유 내부 클럭 속도만큼 밖에 성능이 안나오더군요. 바로 용산에서 인텔과 AMD 시피유 피씨 조립으로 방향을 틀었던 기억이 나네요. 그 당시 카트리지형 시피유가 출하되던 이유가 캐쉬를 시피유에 넣자니 시피유 가격이 너무 오르고 밖으로 빼자니 성능 향상 효과가 별로고 해서 캐쉬 메모리 클럭을 반으로 낮춰 시피유 카트리지 안에 넣는게 유행이었을 겁니다. 아마도 제가 있던 랩 코드는 속도빠른 대용량 캐쉬의 영향을 많이 받고 캐쉬 속도보다는 용량에 영향을 더 많이 받는다는 얘기였겠죠.
그리고 이건 궁금해서 잠깐 적어보는 건데 요즘 계산용 클러스터만들면서 노드간 fiber optic 연결을 하는 경우도 있습니까? 네트워크 카드 여럿 묶어 bandwidth늘이기도 사실 셋업이 참 노가다라... 이런게 한방에 되면 좋을 것 같아서요. 보통은 노드 하나에 네트워크 카드 두 장 넣고 nfs 서버로 가는 file i/o와 노드간 계산용 데이터 교환을 분리시키는 게 쉽고 효과적이었던 기억이 나네요....
말씀하신대로 저도
말씀하신대로 저도 노드 하나에 네트워크 카드 두 장 넣고 nfs 서버로 가는 file i/o와 노드간 계산용 데이터 교환을 분리시키는 방법을 사용했는데요.. fiber optic연결을 실제로 이용하는지는 잘 모르겠습니다.
아하핫.. 저한테
아하핫.. 저한테 도움을 받으셨다니 이런 황송할때가...
제가 요즘 또 서버관련 장사를 하다보니, 이장비 저장비 많이 굴려봅니다만...
최근에 Quad Core 머신을 좀 보고 하는데, 특정회사 제품 홍보일지는 모르지만
이 장비 가격대 성능비가 생각보다 좋습니다.
http://www.samsungb2b.co.kr/ProductInfo/ProductDetail.aspx?Pid=3207
Dual Socket Quad Core에 비해서, Single Socket Quad Core가 반값보다 더 쌉니다.
그리고, HPC형태로 할때는 여러가지 툴도 나름 제공합니다. ㅋㅋㅋ
정보제공 및 비즈니스 측면에서, 연락주시면 다시 조언해드리죠...
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
예전에 KLDP를 통해서
예전에 KLDP를 통해서 많은 도움을 주셨습니다.^^; 너무 감사하게 생각하고 있습니다.
제가 mycluster님 메일주소를 모르는데.. 다시 알려주시면 몇가지 여쭤보겠습니다.
아
아 mycluster012_at_naver.com 으로 메일 한번 주세요.
제대로 쓰는 메일로 다시 메일 보내드릴께요 ^^
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
이쪽 계열은 전혀 모릅니다만..
고클럭 제품이라면
IBM에서 출시한 Power6 가 아마 4.7Ghz를 찍는 걸로 알고있습니다.
서버용일테니 8코어정도까지는 지원하지 않을까.. 추측합니다;
다만 IBM제품들은 접한적이 없어서 실제 연산에 얼마나 강한지는 - 알수가 없다는 게 아쉽습니다.
___________________________
I like Small Linux.
___________________________
I like Small Linux.
그런데
계산용 클러스터를 만들때 꽤 많은 분들이 네트워크 대역폭을 늘이는 것이 중요하다고 생각해서
본딩을 하거나 고속의 네트웍장비를 달고는 하는데, 계산용 클러스터에서 정작 중요한 것은 대역폭이라기보다
대부분의 경우 latency가 됩니다. latency를 줄이는 것이 급선무이고, 두번째는 실제 통신의 횟수를 줄이는
것이 두번째 입니다. 세번째로 대역폭은 카드의 대역폭이 중요한게 아니라, 계산 알고리즘에서 각 도메인간에
얼마만큼의 사이즈의 데이타가 교환되는 것을 측정해서 거기에 대해서 대역폭이 좋아야합니다.
첫번째의 latency를 줄이기 위해서는 여러가지 튜닝도 필요하지만, infiniband 등 tcp/ip가 아닌 전용
카드를 도입(돈이 들지만)하는 것이 대안이 될 수 있습니다. 물론 tcp/ip에서도 성능이 좋은 네트워크카드를
쓰는 것이 좋고요.
두번째로 계산횟수를 줄이는 것은 장비가 해결할 문제가 아니라, 계산알고리즘이 얼마나 많은 도메인간의
통신을 유발하느냐에 따라서 좌우됩니다. 예를 들어서 매트릭스 계산을 할때, 단위계산은 시간이 적게
소요되지만 iteration이 많은 explicit algorithm 보다는, iteration 당 계산 시간은 많이 걸리지만,
iteration 횟수가 적은 implicit algorithm이 도메인간의 통신횟수를 줄일 수 있는 경우도 많습니다.
따라서, 풀고자 하는 어플리케이션의 병렬 알고리즘 패턴을 살펴보고 계산 알고리즘 또한 병렬화에
적합하도록 바꾸고자 하는 노력도 필수적입니다. (제가 이런걸로 국내 논문 한 두어편 울궈먹었죠)
세번째로 대역폭이라함은 netpipe를 돌려보면 나오지만 여기서는 세가지를 봐야합니다. latency를 볼수있고
maximum bandwidth를 볼수 있는데, 하나더 추가하면 실제 알고리즘에서 교환되는 데이터 사이즈에 해당하는
통신시간을 볼수 있죠. 즉, 도메인간에 데이터 교환량이 한번할때마다 100Kbyte 라고 한다면, 가장 좋은
네트워크카드는 netpipe 결과갑에서 100Kbypt의 전송시 bandwidth가 가장 좋은 것을 찾아야한다는거죠.
그와 동시에 상용 CFD 어플리케이션을 돌릴 경우에는 MPI 모듈을 사용하는 것보다는 가능하다면 SMP 형태를
사용하는 것이 더 좋을 수도 있고 그렇습니다.
그리고, 유지보수 측면에서 본다면 리눅스에서 돌리는 것 보다 실제로 윈도에서 제공하는 WCC(윈도 클러스터
키트죠?)를 사용해서 Active Directory 기반으로 만드는 것이 좋을 수도 있고, 최근 유행하는 가상화와
더불어 각각의 노드를 코어별로 VM으로 할당해서 문제가 생길때마다 VM을 새로 생성하는 방법을 사용할 수도
있고 등등...
생각보다 클러스터라는 기계가 손이 많이가고, 할일이 많다는 것을 인식할 필요가 잇고, 이왕 논문을 쓸때
클러스터 관리를 맡은 사람은 기계를 튜닝하는 것이나 관련 알고리즘 등으로 짜잘한 논문 한두편을 욹궈먹는
게 그나마 나중에 자신에게 위안이 될 수 있죠.
그리고, 유지보수는... 관리자가 아주 똘똘하거나 아니면 돈을 조금 주고 맡기는게 낫습니다. 노드 한두개를
포기하는 한이 있더라고 그 돈을 주고 서비스를 잘 받아서 운영 중단 타임을 줄인다면 노드 몇개 더 달아서
서 있는 시간으로 인해서 못 돌리는 시간보다 훨씬 이득일 수 있겠지요...
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
이런 것도 있네요.
http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=105&oid=030&aid=0000184144
PCI 슬롯에 꽂는 것만으로 성능 향상을 가져온다는데...
기왕 꽂을거면 그래픽카드 말고 이거는 어떠신지요...
성능은 장담못합니다.
------------------------signature------------------------
Self-Pity
I never saw a wild thing
sorry for itself.
A small bird will drop frozen dead from a bough
without ever having felt sorry for itself.
- David Herbert Lawrence (1885-1930)
------------------------signature------------------------
Self-Pity
I never saw a wild thing
sorry for itself.
A small bird will drop frozen dead from a bough
without ever having felt sorry for itself.
- David Herbert Lawrence (1885-1930)
인용: 한편
이 부분을 보면 아마도 그 제품은 3-d model rendering쪽으로 특화되어 있는 제품이 아닐까 싶네요. 이쪽은 저도 정확히는 모릅니다만 삼각함수 많이 돌리고 병렬화가 쉽다고 들었어요. 메모리는 많으면 좋지만 굳이 대용량이 필수적인 것은 아닐테구요. 따라서 일반 계산용으로 이 하드웨어를 활용하는 것은 어렵지 않을까 싶네요.
문제는 소프트웨어입니다. 하드웨어가 성능이 좋더라도 소프트웨어가 제대로 지원을 안해주면 활용이 안됩니다. 특히 컴파일러가 최적의 바이너리를 만들어 내는 게 중요한 이슈가 되죠. 괜히 x86 하드웨어들이 계산용 기계에서도 많이 쓰이는 게 아닙니다.
꽤 예전 뉴스입니다만...
지금 절찬리-_-;에 판매중인지는 잘 모르겠습니다만...
AMD에서 HT(Hypter Transport)를 SERVER끼리도 쓸수있도록...해주는 뭔가가 있었던것 같은데요.
PCI-EX 8X던가? 그런 형식으로 해서...상당한 대역폭을 자랑했던거 같은데...
정확한 제품명이나 그런건 잘 기억이 안나네요;;;;
------------------------------------------
Let`s Smart Move!!
http://kalstein.tistory.com/
------------------------------------------
Let`s Smart Move!!
http://kalstein.tistory.com/
아...찾아보니...
인피니티밴드를 좀 더 빠르게...하는거군요;;
http://www.parkoz.com/zboard/view.php?id=int_news&no=5565&keyword=클러스터&sn=off&ss=on&sc=off
------------------------------------------
Let`s Smart Move!!
http://kalstein.tistory.com/
------------------------------------------
Let`s Smart Move!!
http://kalstein.tistory.com/
위에서도
위에서도 언급되었던거 같이 GPGPU + CUDA 쪽이 가장 저렴하고 빠른 솔루션이겠네요...
요즘에 같은 랩에 있는 넘이 CUDA 관련해서 프로젝트를 하고 있는데, 연산량이 어느 정도 수준(MEMORY + PCI Latency)을 넘어서면, GPU 쪽 연산이 CPU 연산보다 훨씬 빠릅니다.
위에서 언급하신 5배 정도의 연산 성능은 머 그래픽 카드 1개만 꼽으셔도 충분이 얻을 수 있을 겁니다.
그리고 CUDA 프로그래밍도 간단하게 처리할 수 있습니다.
안녕하세요.
..