• ベストアンサー

Linuxマシンの複数台による並列計算環境の構築

LinuxのPCが複数台、ルータ(ハブ)で接続されています。 これを用いて並列計算環境を構築したいと思います。サイトなどで調べたら以下のようにあっさりと書いてあります。 ○ OpenMPのインストール sudo apt-get install openmpi-bin openmpi-dev ○ 公開鍵認証を使い、パスフレーズなしで各ノードにsshでログインできるようにしておく。 その後は、実際に計算例などが出ていました。これだけで環境構築ができるらしいです。OpenMPだけでなく、MPICHによる環境の構築も出ていましたが。 そこで質問ですが、 1.OpenMPのインストールは複数台あるPCの中の1台だけでやるのでしょうか。それとも全部でやるのでしょうか。sudo ...以下のコマンドラインは各PC(ノード)でやるのでしょうか。 2.コンパイラは各PC(ノード)に個別にインストールされている必要があるでしょうか。 3.最近のGCCにはすでにOpenMPが含まれているとのことです。これは1つのPCでCPUを分割して計算する場合に用いるらしいですが、グリッドコンピューティングの場合、やはり別途OpenMPの環境設定が必要なのでしょうか。 4.gccの場合、gfortranもインストールされるようです。intel fortranで利用する場合、OpenMP(あるいはMPICH)の環境が設定できれば実行可能なのでしょうか。 5.OpenMPとMPICHによる並列環境が両方共確立しているということは無意味でしょうか。あるいは不可能なものでしょうか。使い分けができるかどうかということでもありますが。 6.話がころっと変わりますが、MACの場合、もっと簡単にできると聞いたことがあります。最近はMACにもgccが標準で入っているようで、1つのPCでの並列化はコンパイラにオプションをつけて実行できるようです。これが複数台のPCではどうなるでしょうか。 以上、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ki073
  • ベストアンサー率77% (491/634)
回答No.2

ANo.1のお礼欄について >OpenMPとOpenMPIが別物とは知りませんでした。 私も同じでした。MPIから知ったのですが、OpenMPはIが抜けた書き間違いだと思っていました。 >私が使用できるOSはubuntuかCentOSです Red Hat Enterpriseで動作が保証されているソフトウエアが多いので、二年ほど前にCentOS5で構築しました。 最近のCore i7はver6でないとIntel AVXが利用できないので、ver6に徐々に切り替えています。CentOS6がなかなか出なかったので、見切りをつけScientific Linux6に切り替えつつあります。(両方ともRed Hat Enterprise互換です) NFSはWindowsやMacの感覚とはずいぶん違うので最初は戸惑いました。ファイル共有は外付けのHDDみたいなイメージだったのですが、NFSに限らずLinuxの場合は、ディレクトリが外付けのHDDみたいな感じです。例えば/homeにNFSでマウントすると、/homeの中はネットワーク経由で他のコンピュータで、/usrは自分のコンピュータのHD, /optはネットワーク経由で別のコンピュータのような感じになります。 ANo.1にも書きましたように、webminを使えばGUIでtorque以外の設定はGUIでできます。

その他の回答 (1)

  • ki073
  • ベストアンサー率77% (491/634)
回答No.1

>OpenMPのインストール openMPではなく、openMPIです。全くの別物です。 >sudo apt-get install openmpi-bin openmpi-dev これはopenMPIです。正解です。 注意なのですが、openMPIはコンパイラのwrapperのようなものなので、このような入れ方をすると、多分標準のgccが適用されます。 他のコンパイラを使いたいのであれば自分でコンパイルする必要があります。 1 NFSなどでファイル共有すると便利です。私のところでは/homeと/optを共有しデータは/homeに、共通して使うバイナリは/optに入れています。 2 コンパイラはコンパイルを実行するノードだけで十分です。ただし、ライブラリ(libgfortranなど)は各ノードに必要です。 3 openMPは特にインストールの必要はありません。 4 intel fortranを使いたいのであれば、上で書いたようにそれを指定してopenMPIをコンパイルする必要があります。そのできあがったopenMPIの命令でソースをコンパイルすれば、バイナリができあがります。MPICHはちょっとちがいますが。 5 openMPIとMPICHは同じような機能のものです。コマンド名が重なりますのでどちら一方の方が 6MacもLinuxと同じです。openMPIかMPICHを使います。Lindaという選択もあります。(Linuxの場合も) 現在パソコン10台ほどでやっています。最近のCPUは4core程度ありますので、パソコン間で並列計算することは少ないのですが。 (同じCPU内であればopenMPで並列計算ができますし、コンパイラで自動並列化も可能です。もちろんopenMPIでもできますが) 実際に使っているのは NFS:各ノードのファイル共有 LDAP: ユーザーIDとパスワードの管理(一カ所で管理できる) openMPI: 最近はあまり出番がないのですが torque: タスク管理、自動的に空いているCPUにタスクを割り振ってくれます webmin: サーバの設定、便利です DHCP, BIND DNS: あれば多少便利、優先度は低い こんな感じでしょうか

skmsk1941093
質問者

お礼

回答有難うございました。 OpenMPとOpenMPIが別物とは知りませんでした。Iってプロポーショナル印字だと小さいのでパッと見で同じに見えます。これが別物だったとは。道理で話がおかしいと思いました。私の質問はそういう意味でOpenMPIに関することです。 NFSをして、実行ノードのみにコンパイラがあるとよい、しかしライブラリは各ノードに配る、ということですね。これらの手順を書いてあるサイトがないでしょうか。私は以前NFSさえうまく行かず挫折しました。NFSってウィンドウズのファイル共有のようなものだと思うので難しくないはずですが。 私が使用できるOSはubuntuかCentOSです。もし付加情報がありましたらよろしくお願いします。

関連するQ&A

  • debian/gnu Linuxで並列計算したいのですが・・・。

    タイトルの通りdebian/gnu Linux用の並列計算ライブラリ(mpich)をftpでとってきてdpkg -i でインストールは成功しました。 でもコンパイルしてmpirun -np 1 a.out として実行しようとすると止まってしまいます。これはどのような設定が必要なのでしょうか、それとも他に原因があるのでしょうか。ちなみに私はpcクラスタを構築したいのでこれをネットワークでつないで二台のpcで並列に処理させようと考えています。

  • 複数のマックPCによる数値計算の並列処理

    パソコンを複数台つないで並列処理を勉強するためのシステムを考えています。複雑な物理計算をゴリゴリやるというよりも練習用というところがポイントです。最近、マックでやるのが一番簡単と聞きました。Linuxと違ってディストリビューションとか、マシンの個性とかがマチマチでなく、規格が同じなので前提となる条件が常に一定のはずです。 しかし、まだ、マシン本体すらありません。 場所を取らないMACminiを5台ぐらい購入してスイッチングハブで接続すればできるのでしょうか。 gcc44、OpenMPなどを実装すればできるとのことでしたが、このようなことが解説されているサイトをご紹介いただけると助かりますが。一応、マックのターミナルからいろいろ取り寄せてやるのだろうと思いますが、その部分だけ見たら操作はLinuxと同じようなので馴染みがあるのですが。 ただ、できればFortranでやれるようにしたいです。 また、マックはサーバー的なことができるのでしょうか。すなわち、ネット上の別のPCからtelnet, sshなどの端末のサービス、ftpのようなファイル転送です。マックは通常のPCとして使ったことがありますが、そのような目的で使ったことがありません。 話題が飛びますが、複数台のPCを1つのディスプレイ、キーボード、マウスで操作する切替器にはどのようなものがあるでしょうか。 以上、よろしくお願いします。

    • ベストアンサー
    • Mac
  • 並列化プログラムのコンパイル環境と実行環境が違う

    fortran77で物理計算をしています。 パソコンが2つあって、一つは個人で使うもので、もうひとつはスパコンです。 個人PCのコンパイラはifort、スパコンはfrtが入っています。 普段は個人PCのifortでコンパイルしてからスパコンに実行ファイルを転送して走らせています。 今のところこれで問題ありません。 このプログラムを並列化して計算時間を短縮しようかなとおもっています。 mpiなりopenMPなりでプログラミングして、(もしくはifortの自動並列化コマンドを使う) (1)ifortでコンパイルしたものをスパコンに送って走らせる方法 と、 (2)スパコン内のfrtでコンパイルして走らせる方法 では 実行速度は劇的に変わるものでしょうか? frtの使い方がイマイチわからずmakeが通らないので出来れば避けたいなと思って質問させていただきました。 勉強不足な点があると思いますが、よろしくお願いします。

  • debian / gnu Linux で並列計算したいのですが…。

    並列計算ライブラリのmpichのソースファイルをダウンロードして コンフィグ、メイクしてインストールしました。 インストール先は/usr/local/mpichです。 ここからは一般ユーザで行いました。 もちろん.bashrcのPATH設定も行いました。 サンプルプログラム(cpi.c)があったのでコンパイルはmpicc -O -o cpi cpi.c としておこないました。このプログラムはπの近似値を出力するらしい。 ところが、サンプルプログラムをコンパイルして実行ファイル(cpi)が生成される ものの肝心の実行ができません。 ちなみに実行は以下の手順です。 $mpirun -np 1 cpi この後C+zするまでとまったまんまです。 πの3.14もでてきません。 どのようなことが原因なんでしょうか? よいご意見お待ちしております。

  • 並列計算について

    あまりパソコンに詳しい方ではありません。 今、linuxが入ったパソコン(CPU:Intel(R)Core(TM)i7 CPU970@3.20GHz,コア数12, メモリ:5.8GiB)で数値計算をしています。コンパイラはgfortranです。OpenMPを使って、並列計算をしています。 例えば、スレッドを5使って一つのプログラムの計算したとします。次に別のプログラムをスレッドを5使って同時に計算したとします。 CPUモニタで確認すると、合計12スレッド中、10スレッドが使用率100%になります。 しかし、計算時間はそれぞれ倍ぐらいになってしまいます。結局、プログラムを1 つずつ計算するのと同じ時間がかかります。また、使用するスレッドは5ぐらいが最適であることがわかっています。(それ以上多くしても計算時間が多くなるだけ)。つまり、12スレッド中7スレッドは常に仕事をしていません。 原因、及び解決方法はあるでしょうか?

  • 仮想環境でUnix,Linuxを1台でまとめたい

    Solaris 8~10 intel版とLinux(LPICレベル1ぐらいの内容)の勉強をしようと思っています。 勉強の範囲は、OSの基礎知識、コマンド等です。 何年か前にSolaris 8 Spark版、RedhatLinux 9、RHEL2を インストールから外部向けサーバー構築までいじった事はあるのですが、 その後いじる機会も無くなり、今ではすっかり忘れてしまいました。 (3年前にLPICのレベル1の101は合格していたのですが 結局102を受けることなく今に至ってしまってます。) しかし仕事で必要になってきたので、 自宅でも勉強する環境を用意したいのですが、 何台もPCを用意はできないので どうにか仮想環境で1台である程度まで、 まとめられないかと考えています。 (仮想環境についてはまだ勉強を始めたばかりなのでつまづく所は多そうですが…) 1.PCにVM wareを使って複数OSをインストールする。 2.PCにxenを入れて複数OSをインストールする。 3.Intel Macにparallels desktop for macを入れて、複数OSをインストールする。 勉強用なのでLAN内のみで外部公開はしないのですが、 この場合上記のどの選択が適当でしょうか? もしくはそれ以外にこの方法がいいよと いったものがあればぜひご教授ください。 本当はSolarisはSpark版がいいのですが、 仮想環境で構築したいのでIntel版をセレクトしています。 使ってないデスクトップPCとノートPCが1台づつあるので できればこれらを活用したいなと思ってますが、 あまりにレスポンスが悪くなるなら、 Mac bookでも買うかどうか考えています。 よろしくお願いします。

  • VMwareによる環境構築について

    VMwareについてです。 MCSAの勉強のため、環境を構築しようとしています。 PCは一台しかないので、WindowsXP HomeEdition上にVMwareをインストールして、Windows Server2003評価版を入れようと思っています。 このような目的の場合、VMware Serverをインストールすればいいのでしょうか? それともVMware playerですか?

  • 複数台・複数ユーザーのネットワーク構築

    友人宅に3台のPCがあります(すべてXP Pro)、2台は3人のユーザーを切り替えて使っています。家庭内無線ランでインターネット・メール等問題なく使っていますが、[ネットワークの構築]・[プリンタの共有]設定ができなくて助けを求めてきました。 そこで 相手宅へ出向いて設定を確認するのですが、単一ユーザーでネットワークを構築している私には分からないことが一つあります。 複数ユーザーで使っているPC同士の[ネットワークの構築]をする場合、3台の3人のユーザー名・パスワードはどのように設定すればよいでしょうか 検索結果の中に 「パスワードを変えたらつながりました」とあったのですが、 この「変えたら」は 「統一したら」なのか、「別のものに変えた」なのかが分かりませんでした。 また  ・3人すべてがプリンタを共有したい  ・1人がフォルダの共有をしたい などは、ユーザー別に設定するのでしょうか、管理者権限で設定すればよいのでしょうか、これら複数ユーザーでの設定の仕方をご教授ください。

  • quad coreでのMPI使用法

    私はcore 2 quadを使用しています。 先日、並列計算を使用する機会があり、MPIを使用しようと思ったのですが、単体のPCに用いる場合の説明を見つけることが出来ませんでした。クラスターのような環境に使うための説明をされているHPしか見つけることが出来ず、困っています。 状況としては、 ・mpich-1.2.7p1をインストール済み。 ・CPUはcore 2 quad Q6600 ・PCは一台のみ。 ・やりたいことは、単体PCの4つのプロセッサを使用する並列計算の実行。 という感じです。 説明が分かりづらいかも知れませんが、もし参考になりそうな文書やHPをご存知でしたら、教えてください。 よろしくお願いします。

  • どのような環境でシステムを構築しているか?

    環境はxp、apache2、php5、Postgresql8.2です。 ただ今PHPとPostgresqlの勉強をしていまして、 1台のPCを、サーバ&クライアントにして 社員の情報システムを構築しています。 形になってきたので、 別のPCでシステムを 操作できるようにしたいと思っています。 その別のPCを操作する方に、 「どのような環境でシステムを構築しているかを教えて欲しい」 と言われました。 この場合、どのような事を教えてあげたら宜しいのでしょうか? 「環境はxp、apache2、php5、Postgresql8.2です」 でも宜しいのでしょうか?