万人のためのハイパフォーマンスコンピューティング

HPC Do It Yourself Club

      HOMEE5-2600v3製品情報お役立ち情報購入案内お問い合わせ会社案内
      ムービーダウンロードドキュメント最新トピックスおもしろLinkHPCノウハウ

お役立ち情報   

 コンピュータ・クラスター入門                   
 お役立ち情報

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. クラスターとは


1台のコンピュータでは計算時間が長すぎる、またはたくさんの計算があって、1台では処理しきれない。そのような場合、
複数台のコンピュータでクラスターを構築します。それぞれのコンピュータはネットワークでつながれており、全体として
ひとつの大きなコンピュータと考えることができます。クラスター(cluster) は、英語で「房」を意味します。

2. クラスターの使い方


クラスターの使い方は、大きく分けて2通りあります。   まず、処理に時間のかかる1つの計算をいくつかの部分に分割し、複数のコンピュータで部分部分を同時に実行させ、高速 で終わらせるやり方。これを並列計算と呼びます。それに対して、1つ1つはそれほど時間のかからない計算を、複数のコン ピュータでそれぞれ計算させ、1つの計算が終わったらすぐに次の計算を実行し、短時間で終わらせるやり方。これを並行 計算と呼びます。

3. クラスターの構成要素


どちらのやり方でも、沢山あるコンピュータを、あたかも1つの大きなコンピュータのように振舞わせることが必要です。
そのためには、以下の要素が必要となります。

3.1 OS(Operating System)


OSは、1台のコンピュータ用にできており、クラスター用のOSというものはありません。クラスターを作るためには、
1台用のOSを全てのコンピュータにインストールする必要があります。

3.2 NFS(Network File System)


普通のコンピュータは、それぞれにハードディスクが入っており、それらは全く別々のものなので、1台のコンピュータで 書いたデータを他のコンピュータで読み込むことはできません。しかしクラスターでは、計算するために必要なプログラム やデータが全てのコンピュータで共有されている必要があります。全てのコンピュータで同じプログラムを実行できないと いけません。プログラムが読み書きするデータも、すべてのコンピュータで共有する必要があります。これを可能にするの が、NFS (Network File System)という技術です。
NFSは、計算するのに必要なプログラムやデータの入った共有のファイルシステムを用意します。このファイルシステムには、 クラウドのように、全てのコンピュータから同じようにアクセスすることができます。

3.3 NIS(Network Information System)


コンピュータを使用するにはユーザー登録が必要となります。クラスターでは何台ものコンピュータを使うため、1台のコン ピュータで済ませたユーザー登録を他のコンピュータでも有効にしなければいけません。これをイチイチ登録していたのでは、 膨大な手間と時間がかかります。たとえばコンピュータが100台あって、ユーザーが100人いるとしたら、10000回も登録しな ければいけません。そこでクラスターでは、1台のコンピュータでユーザー登録をすれば、その情報は全てのコンピュータで 有効になる、という仕組みが必要になります。この仕組がNISです。

3.4 MPI(Message Passing Interface)


1つのプログラムを並列で実行し、スムーズに自動で計算させるためには、そのための仕組みが必要となります。この並列計算 のための仕組みがMPIです。MPIによって、任意の台数のコンピュータでプログラムを同時に実行させることが可能になります。   また並列計算では、コンピュータそれぞれが部分的な計算をしているため、コンピュータ同士でデータをやり取りする必要が あります。たとえば空間を複数の部分に分けた場合、境目の情報をやり取りする必要がある、といった具合です。このコンピ ュータ同士の通信も、MPIで可能になります。

3.5 ジョブスケジューラ(JobScheduler)


並列計算にMPIが必要なのに対し、並行計算に必要なのがジョブ・スケジューラです。   ジョブは、コンピュータにさせる仕事の単位です。ジョブスケジューラは、「ジョブをいつ行うか」ということを前もってセッ トし、自動でジョブを実行できる、ジョブ管理システムの1機能です。ジョブスケジューラでは、例えば、ジョブAを開始する 時刻や、ジョブAが正常終了したらジョブBを実行するなどの設定ができます。ジョブAが異常終了した場合に、そのままジョブB をするのか、それともジョブBは未実行のままにするのか、などということを決めることもできます。   10台のコンピュータで構成されているクラスターがあるとします。11のジョブを実行したい場合、コンピュータが1台足りません。 するとジョブスケジューラは、11個目のシミュレーションの実行を停めておき、他の10個のシミュレーションのどれか1つが終 わったら、空いたコンピュータにすかさず11個目のシミュレーションを実行させる、といったことができます。

4. InfiniBandとは


米IBTA(InfiniBand Trade Association)が策定するオープンスタンダードなI/O仕様に基づく高速インターコネクトで、
高バンド幅、 低レイテンシー、高信頼性といった特長を備えています。詳しくはこちらが参考になります。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

5. 次世代Xeonプロセッサ SandyBridge EP


Intelの発表されているCPU(2CPUサーバー用)で最高性能のものは、WestmereのCPU型番がX5600番台でした。
1CPU当たり6コア、動作クロックは3.46GHz、1クロックあたりの倍精度浮動小数点演算数は4で、1CPUの理論性能は、
3.46x4x6=83.04GFLOPS2CPUのサーバー1台当り166.08GFLOPSです(ハイパースレッディングはHPCでの
性能向上には関与できません)。
メモリは1CPU当たり3チャンネル、メモリクロックは1333MHz:
メモリ転送速度は1.333x8x3=約32GB/S、2CPUのサーバー1台当り64GB/Sです。
CPUの演算性能に比較して、メモリ転送速度が圧倒的に遅いのは、パソコンから派生したサーバーの全般的特徴です。

今回3月6日に発表された、SandyBridgeEPは2CPUのサーバー用で、最高クロックのものはE5-2600番台の型番になります。
1CPU当たり8コア、動作クロックは2.9GHz、1クロックあたりの倍精度浮動小数点演算数は8と倍増、1CPUの理論性能は、 2.9x8x8=185.6GFLOPS2CPUのサーバー1台当り371.2GFLOPSです。Westmereの2.23倍の理論性能です。
メモリ転送速度は、メモリは1CPU当たり4チャンネルと1チャンネル増加、メモリクロックは1600MHzとこちらも増加、
メモリ転送速度は1.600x8x4=51.2GB/S、2CPUのサーバー1台当り102.4GB/Sです。
メモリ転送速度も1.6倍と(理論演算速度の向上よりは少ないですが)大幅に向上しています。

【まとめ】
 CPU理論性能
 前世代:3.46x4x6=83.04GFLOPS2CPUのサーバー1台当り166.08GFLOPS 
 新世代:2.90x8x8=185.6GFLOPS2CPUのサーバー1台当り371.20GFLOPS 
 2.23倍 

 メモリ転送速度
 前世代:1.333x8x3=約32GB/S、2CPUのサーバー1台当り  64GB/S 
 新世代:1.600x8x4=51.2GB/S、2CPUのサーバー1台当り102.4GB/S 
 1.60倍 

以上の計算から、アプリケーションでの性能向上は、サーバー1台当り、キャッシュがよく効く場合(行列積等を多用する
アプリケーション)は2倍程度、メモリ転送の比重が大きい場合(流体や構造計算など) は1.6倍程度の、性能向上が見込めます。実際、弊社内でのベンチマークテストでも、この計算が裏付けられています。

新たにサーバーをお求めになるのなら、SandyBridge EPをお勧めします。
会員様向けにお送りしている価格表に載っていない構成、CPUのクロックを下げて安くする、メモリを32GBに減らす、HDD (ハードディスク)を増やす(最大8個)、SSD(フラッシュメモリドライブ)に変更する、追加する等につきましては、お気軽に
お問い合わせください。その他のお問い合わせも歓迎いたします。ご遠慮なくお申し付けください。



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6. エージングテストとは


エージングテストとはコンピュータクラスタの信頼性と安定動作を検証するための慣らし運転のことを言います。
一般的にクラスター専門の会社では耐久テストとして一定の負荷をかけた状態で異常なく一定時間以上安定動作する
事を確認してからお客様へ製品をお届けしています。
エージングテストは、お客様の目に見えないサービスですが実際にこのテストにより初期不良を未然に防げぐことが
多々あります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

7. ちょっと役に立つHPC虎の巻


便利なLinux のコマンドについて
screen
何をするもの?
複数の仮想端末を立ち上げることが出来ます。
1画面を複数に分割したり、複数の仮想端末をまとめて管理することが出来ます。
また、例えばWindowsマシンからLAN 経由でLinuxマシンに接続していた時、LAN ケーブルを抜いてしまうと
Linuxマシンとの接続が切れてしまい、元の画面に戻ったり、バックグラウンドで流していたジョブが異常終了
するなどの原因になることがあります。

こんな時、screen コマンド内の仮想端末でセッションを張っておけば、例えネットワークの導通が切れたとし
ても、再度screen -r コマンドを実行することで元の画面に戻ることができます。

使い方は?
① screen と入力し、[Enter] を押すと起動します。
  見た目には変わりませんが、立派にscreen コマンドが動いています。
② screen コマンドを実行中に別の端末を立ち上げるには、[Ctrl]+[a] 次に[c] を押してください。
③ screen コマンドを実行中、次の仮想端末を立ち上げるには、[Ctrl]+[a] 次に[n] を入力してください。
④ 新しく立ち上がった仮想端末上で、exit と入力すれば、仮想端末は減ります。
⑤ screen から抜ける(デタッチする)には、[Ctrl]+[a] を押してから[d] を入力してください。
⑥ デタッチしたプログラムから再度アクセス(アタッチ)するには、screen -r と入力します。
  万一ネットワークが切れてしまった場合や、ターミナルソフト( 例えばTeraterm )を強制的に閉じる行為を
  行っても、screen -r で、さっきまで実行していたセッションに復帰することができます。
⑦ 複数のscreen コマンドを立ち上げることもできます。現在、アクティブなscreenのプロセスを確認するには
  screen -w と入力します。
  もし複数のscreen プロセスが実行中で、その中の特定のプロセスにアタッチするには、-w オプションで出力
  されたプロセスID をscreen -r の後に入力してください。
⑧ 使い方のヘルプを表示するには、[Ctrl]+[a]を押してから[?] を入力します。
  [Enter] キーを押すことでヘルプから復帰することができます。

もっと便利に使うには?
① 複数の仮想端末を開いている場合、1つの画面(リージョン)を2分割し、複数の仮想端末を1つの画面上に表示
  することができます。
  screen コマンドを実行中、[Ctrl]+[a] を押してから[Shift]+[s] を入力してください。
  画面が2分割されます。
② 2分割したあと[Ctrl]+[a] を押してから[Tab] キーを入力してください。下側の画面にカーソルが移動します。
  次に[Ctrl]+[a] を押してから[n] を入力することで、別の仮想端末を割り当てることができます。

③ [Ctrl]+[a] ,[n] を複数回押していけば、チャンネルを切り替えるように次々と別の仮想端末を切り替えて
  いくことができます。
④ 分割表示中に現在表示している仮想端末以外を画面上から追い出したい時は、[Ctrl]+[a] を押してから
  [Shift]+[q] と入力してください。
⑤ バイナリファイルをcat してしまった場合など、スクリーンで開いた仮想端末がハングアップや文字化した場合、
  [Ctrl]+[a] を押してから[Shift]+[z] またはreset コマンドで端末をリセットできます。

便利なコマンド
  screen 複数の仮想端末をあげる
  cat -v Windowsの改行コードを^Mで表示
  dos2unix/unix2dos 改行コード変更
  iconv 文字コード変換
  watch 2秒ごとにコマンドを実行・表示
  rpm -qa インストール済rpmパッケージ一覧
  at 指定した時間にコマンドを実行
  crontab -e 定期的にコマンドを実行
 (manを参照するかwebで検索する方法もございます。)

別のLinuxマシンのGUIプログラムを手もとのLinux上で表示
  手もとのLinuxマシン上で、
  $ ssh -X -l ユーザ名IPアドレス
  $ firefox &
  ※ 行頭の$は一般ユーザのコマンドプロンプト、#はrootユーザのコマンドプロンプトです。

RAMDISK の設定方法
# mount -t tmpfs -o SIZE=サイズ/dev/shm マウントポイント
※当該マウントポイント配下に格納したデータは揮発性のため、クラッシュやリブートでデータが失われます。

LSFで、あるジョブが終了してから次のジョブを自動的に流す方法
1.ジョブIDを指定する方法
 $ bsub ./a1
 $ bsub -w "a1のJOBID" ./a2
2.ジョブに名前をつける方法
 $ bsub -J job1 ./a1
 $ bsub -w "ended(job1)" ./a2






Copyright (C) HPCシステムズ株式会社. All Rights Reserved.