[완료] 수치해석을 하는 계산 서버 설정 관련 질문

iamparkchan의 이미지

컴퓨터를 이용한 수치계산으로 물리학을 연구하는 대학원생입니다.

얼마전 연구실에 수치계산을 위한 새로운 서버를 들였는데 적합한 세팅을 찾는데 어려움이 있어 이렇게 도움을 요청드립니다.

일단 서버의 사양은 다음과 같습니다.

CPU : Intel Xeon E5630 x 2

RAM : 16GB

1. 하이퍼스레딩

- CPU가 하이퍼스레딩을 지원하여 물리적코어는 8개지만 논리적으로 16개를 인식하고 있습니다. 윕 검색을 해보니 이 기능이 수치해석에 도움이 되지 않는다는 의견이 지배적인것 같습니다. 하지만 잘 쓸수만 할 수 있다면 오히려 도움이 될 수도 있지 않을까요? 여러분들의 의견은 어떠하신가요?

- 예를 들어 intel fortran compiler를 사용하여 병렬화를 한다면 하이퍼스레딩을 잘 이용하지 않을까요?

- 하이퍼스레딩을 잘 이용하려면 프로그램을 어떻게 짜야 하는 건가요?

- openmp를 사용할 경우 하이퍼스레딩과 잘 부합할까요?

- 참고로 제가 주로 하는 계산은 field를 기술하는 큰 3차원 배열을 잡아놓고 laplacian 등을 계산하여 이를 evolution을 시키는 작업을 주로 합니다. 데이터 출력시 FFTW등의 라이브러리를 이용하기도 합니다.

2. 수치 계산에 적합한 리눅스

- 수치해석에 필요한 라이브러리를 쉽게 설치할 수 있는 측면으로 보면 우분투보다는 페도라가 훨씬 나은것 같습니다. 페도라와 CentOS를 비교하면 어떤가요?

- CentOS의 경우 커널 최적화가 잘 되어 있다고들 하는데 이것이 수치계산에 얼마만큼 영향을 미칠까요?

- 수치 계산에 최적화 되도록 리눅스를 세팅하기 위해선 어떻게 해야 할까요?

혹시 여기에 경험이 있으신 분들께서 좋은 경험담을 들려주시면 정말 감사하겠습니다.

alee의 이미지

1. 하이퍼스레딩은 수치해석에서는 이론적으로나 경험적으로나 아예 바이오스에서 꺼 두는 것이 좋습니다. 하이퍼스레딩이 효과를 볼 수 있는 경우는 정수 연산이 주를 이루는 경우인데, 수치해석에서는 실수 연산이 주를 이룹니다. 따라서 OpenMP를 써서 쓰레드 수를 두 배로 늘려 봐야 각 쓰레드의 연산 속도가 반으로 줄어들어서 결과적으로 이득이 없습니다. 오히려 context switching 비용으로 인한 퍼포먼스 감소 때문에 계산 속도가 느려지는 경우가 많습니다.

2. 제가 보기에는 배포본을 고르는 가장 중요한 기준은 본인에게 얼마나 익숙한가 입니다. 요즘은 대부분의 배포본에 웬만한 수치해석 라이브러리는 다 들어 있기 때문에 어떤 배포본을 쓰건 크게 문제가 되지 않습니다. 또, 경험상 커널 최적화는 수치연산 속도에 거의 영향을 주지 않습니다. 특별히 수치연산을 위해 최적화 할 만한 것은 없고, gcc 대신 icc (인텔 컴파일러)를 쓰면 연산 속도를 다소 높일 수 있습니다.

3. 마지막으로, 질문하신 내용과는 다소 관계가 없지만, 요즘 CPU들이 워낙 빨라져서 수치연산에서 많은 경우 CPU clock이 아니라 memory bandwidth가 bottle neck이 됩니다. 따라서 메모리 입출력이 많은 계산이라면 빠른 CPU보다는 빠른 RAM이 오히려 도움이 됩니다.

warpdory의 이미지

1. 수치연산의 경우 정수에 특화된 것이 아니라면 하이퍼 쓰레딩은 끄세요. 실수 연산시 하이퍼 쓰레기가 될 수 있습니다.

2. 배포판은 돌리고자 하는 프로그램에 최적화된 것을 쓰시면 조금은 성능향상이 있습니다. 하지만, 성능향상 되는 정도가 예전처럼 몇십퍼센트 .. 이렇지는 않습니다. 다만, 페도라나, 우분투 같은 경우는 약간은 실험적인 배포판이므로, 계산 등을 위해서는 적합하지 않을 수도 있습니다. RHEL 이나 CentOS 를 추천합니다. 특히 계산 패키지를 설치하여 연산을 할 경우, 배포판이 지정되는 경우도 있습니다.

저도 물리쪽 수치해석을 조금 했었는데... (요새 하는 수치해석에 비하면 .. 좀 그렇지만 ..) 결국은 램 늘리는 게 장땡이었습니다. 처음에는 512 MB 에서 시작했는데, 모자라서 4 GB 까지 늘리고, 그래도 모자라서 더 늘리고 ... 그렇게 하니 32비트 배포판에서 에러가 발생해서 커널 패치하고 ... 몇번 하다가 귀찮아서 64비트 배포판으로 바꾸니 이번에는 계산 패키지가 32비트라서 업체에 연락해서 64비트로 다시 구매하고 ... 이랬었습니다.


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

즐겁게 놀아보자.
http://akpil.net
http://akpil.egloos.com


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

즐겁게 놀아보자.

ydhoney의 이미지

HT의 경우 최근의 네할렘 이후의 장비를 고민중이시라면 테스트를 먼저 해 보세요.

물론 네할렘 이전이라면..안 쓰는게 나은 경우가 많구요.

context switch 비용과 ht의 process scheduling performance 사이에서 어느 부분의 영향을 더 받는 프로세스일지 생각해 볼 필요가 있습니다.

--
Linux/Unix System Engineer를 위한 다락방
http://cafe.naver.com/sedarak

mycluster의 이미지

혼자 쓸려면 하이프쓰레딩 - OFF
여러명이 로그인해서 쓸 때는 - ON

어차피 아무리 병렬프로그램을 잘 짜도 모든 코어가 100% Full로 8코어를 다 사용하기는 힘드니까, 차라리 하이퍼쓰레딩 켜서, 두명이서 적절히 돌리면 최소 130%의 효과는 나옴.

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

mycluster의 이미지

바이오스 설정에서 해야할 내용

1. HT - ON 또는 OFF 에 대해서는 위의 내용 참조 (ON 하기를 권함)
2. Power Option - Full (Default는 Optimzing 어쩌고 임)
3. CPU Clock Stepping - OFF
4. 리눅스 서비스 중에서 cpud 인가 OFF

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

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.