Saturday, July 31, 2010

遺伝的アルゴリズム

遺伝的アルゴリズムについてわかりやすく解説を行っているページを発見。

同志社大学工学部知識工学科知的システムデザイン研究室の上浦二郎氏のページ

Friday, July 30, 2010

【CentOS】テキストモードへの切り替え

CentOSはデフォルトではGUIモードでの起動になっているけど、設定を書き換えてやれば、CUIモードで起動できるようになる。こちらを参考に、"/etc/inittab"を次のように書き換える(青文字部分が変更点。デフォルトでは"id:5:initdefault:"):
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

GUIを使いたい場合は、"startx"でX windowを立ち上げる。

制約条件付非線形最適化のアルゴリズム

Mathematicaさんの解説の引用です。

制約条件付きの非線形最適化に対する数値アルゴリズムは,大まかに分けると勾配法と直接探索法とに分けられる.勾配法では,第1導関数(勾配)か第2導関数(ヘッシアン)が使われる.この例には逐次二次計画(SQP)法,拡大ラグランジュ法,非線形内点法がある.直接探索法では,導関数情報は使われない.この例としては,Nelder-Mead法,遺伝的アルゴリズム,微分進化法,焼きなまし法がある.直接探索法の方が収束が遅い傾向があるが,関数と制約条件のノイズの存在への耐性は強い.

Tuesday, July 27, 2010

【Rocks】ifortを使うには

Rocks 5.3のHPC rollにはIntel Fortran Compilerが含まれていないので、ifortを利用するには自分でインストールする必要がある。スタンフォード大学のRolls Working Groupというのがあるけど、素人の自分にはかなり不親切で使い物にならない。

まず注意しないといけないのは、Rocks 5.3では、"mpif90"のデフォルト・コンパイラがgfortranになっていること。mpich2のパッケージを一度削除。再インストールするときのconfigurationでmpif90のデフォルト・コンパイラにifortを指定するという方法があるかもしれないが、mpich2のアンインストールの方法がよくわからない。

一番簡単で安全な方法は、

$ mpif90 -f90=ifort program.f90

と"-f90=ifort"を添えてやるというもの。ここで、program.f90はコンパイルするプログラムを表す。

この方法を実践する前提は2つ。
  • もちろん、ifortがインストールされている。
  • ホームディレクトリの".bash_profile"もしくは".bashrc"でifortへのパスの設定をしている。

【Rocks】Computeノードを削除するには

あるcomputeノード"compute-x-y"を削除する方法は、root権限でログインしたあとに、端末で

# rocks remove host compute-x-y
# rocks sync config


と入力すればよい。

参考

Monday, July 26, 2010

【CentOS】NICとインターネット接続

自作PCにCentOS 5.4をインストールした。カーネルのバージョンは2.6.18-164.el5("# uname -v"で調べる)。

マザーボードにオンボードのNICとPCI Expressの拡張で付けたNICの2つがあるけど、前者ではインターネットに接続できず、後者では問題なく接続できた。前者はASUS P7H55-Mマザーボードに搭載されているNICで、チップセットはRealtek RTL8111/8168B(rev 06)。後者はcorega CG-LAPCIEGTRのNICで、チップセットはRealtek RTL8111/8168B(rev 01)。

CentOS wikiのHardware Compatibility Listには、CentOS 5.2までの情報しかないけど、問題のあるNICの一つにRealtek RTL8111/8168Bが挙げられている。

ただ、この場合、

Starting with Centos 5.2, the stock kernel offers support for this chipset via the r8169 driver. However the driver currently works only for revision 01 of the network cards - and even those can still have problems (see below under Problem); the newer cards using revision 02 are identified by the stock kernel driver and can be configured, but they do not work. For problematic cases one of the methods described in Solutions below must be used.


最初の注意書きにあるように、revision 01のNICは完全ではないもののCentOS 5.2はサポートしている。記述したような、CentOS 5.4上でRealtek RTL8111/8168B(rev 01)がうまく動作したというのは、この注意書きに整合的。backward supportができているっぽい。

今後のために、今手元にあるオンボードのNICと拡張NICについての情報を張りつけておこう("lspci -v"の出力の一部)。

02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)
Subsystem: ASUSTeK Computer Inc. Unknown device 8432
Flags: bus master, fast devsel, latency 0, IRQ 74
I/O ports at c800 [size=256]
Memory at f2fff000 (64-bit, prefetchable) [size=4K]
Memory at f2ff8000 (64-bit, prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [50] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable+
Capabilities: [70] Express Endpoint IRQ 1
Capabilities: [b0] MSI-X: Enable- Mask- TabSize=4
Capabilities: [d0] Vital Product Data

03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
Subsystem: Allied Telesyn International Unknown device c127
Flags: bus master, fast devsel, latency 0, IRQ 66
I/O ports at d800 [size=256]
Memory at f7eff000 (64-bit, non-prefetchable) [size=4K]
Expansion ROM at f7ec0000 [disabled] [size=128K]
Capabilities: [40] Power Management version 2
Capabilities: [48] Vital Product Data
Capabilities: [50] Message Signalled Interrupts: 64bit+ Queue=0/1 Enable+
Capabilities: [60] Express Endpoint IRQ 0
Capabilities: [84] Vendor Specific Information



【追記】
接続がうまく行かないのはインターネットだけではなかった。プライベートネットワークに関しても、OSがNICチップセットのドライバーをサポートしていなければ接続できない。

【Linux】 eth0とeth1を入れ替える方法

複数のNICを搭載している場合、状況によってはNICが認識される順番を変えたいときがある。例えば、手元にOSがサポートしているNICチップセットを搭載しているNIC(「NIC-s」と表記)とそうでないNIC(「NIS-ns」)の2つがあるとする。仮に、eth1はインターネットへの接続用、eth0はプライベート・ネットワークへの接続用だとしよう。もしNIC-nsがeth1として認識されている場合、ネットに接続することはできない。

このようなときに対処するには、"/etc/sysconfig/network-scripts"にある"ifcfg-eth0"、"ifcfg-eth1"のMACアドレスを入れ替えて再起動すればOK。

Friday, July 23, 2010

[Rocks] MPI通信を行うまで

以下でMPICH2を使った並列計算を行うまでの設定を簡単に箇条書きで整理する。

Last Update: July 23, 2010.

  • Rocks 5.3をマニュアルに従ってインストールする。
    • Frontendノードについてはこちら
      • Frontendノードとインターネットの間にルータを挟んでいる場合、プライベートIPアドレスを設定するとき、他のPCのIPアドレスと競合しない値を入力することに注意。
    • Computeノードについてはこちら
      • Frontendノードにroot権限でログインし、

        # insert-ethers

        と入力、"Choose Appliance Type"から("managed ethernet switch"でない場合)"Compute"と進んで"Inserted Appliances"の画面に進む。
      • このとき、computeノードのPCの電源を入れても認識されず、フリーズした感じで、さらに、computeノードの方では勝手にPXEブートが進むということが生じることがある。この場合、computeノード側で"Ctl+Alt+Del"で再起動をする。そのうち、Frontendの"Inserted Appliances"にMACアドレスなどが表示されるはず。決して、Frontendノードの端末の右上のxをクリックして強制終了してはいけない。後で"# insert-ethers"と入力してもエラーが出る。どう対処するかはよくわからない。
      • computeノードのインストールが終了したら、computeノードのbootの順番を、CD->Hardware->Networkにしておく。
  • mpiexecコマンドを実行するためにアカウントを作成する。
    • ルートでログインし、次のように端末でコマンド入力。
    • # useradd username # passwd username # rocks sync users
      ※ここで、usernameは追加するアカウント名、usernameはそのアカウントでログインするときに必要なパスワード。
    • Computeノードをうまくインストールできていない場合、"ssh compute-0-0"等でアクセスするときにログインパスワードの入力を求められる。さらに、compute-0-0の"/home"にはusernameのディレクトリが存在しない。その場合、こちらを参考に。
  • ステップ2.で作成したアカウントでログインし、mpdのパスを通す。
    • デフォルトではmpdへのパスが設定されていない。ログイン時に毎回設定するのは面倒なので、次の行を".bash_profile"内の"export PATH"よりも前に書き加えておく。
    • PATH=/opt/mpich2/gnu/bin:$PATH
      ※mpcih2が入っているのは"/opt/mpich2"フォルダ。
  • ステップ2.で作成したアカウントのホームディレクトリに".mpd.conf"の名前でファイルを作成し、アカウント所有者だけが読み書きできるようにする。
  • $ cd $HOME $ touch .mpd.conf $ chmod 600 .mpd.conf
    さらに、エディタを使って次の行を書き加える。
    secretword=xxxxxxxxxxx
    ※"xxxxxxxxxxx”は自由に。ただし、ログインのパスワードと同じにならないように。
  • ホームディレクトリにmpdのリングを構成するホスト名をリストアップした"mpd.hosts"を作成。
    • 1行に1ホスト名。例えば、次のように感じ
    • hostname.of.frontend compute-0-0
    • ファイル名はなんでもOK。
  • 各ノードでmpdデーモンを立ち上げる。
  • $ mpdboot -n #daemons -f mpd.hosts
    #daemonsは立ち上げるデーモンの数で、ノードの数より大きくない正の整数。
  • 実行ファイル(execute.out)があるフォルダに各ノードにプロセスを振り分けるためのファイル"mf"を作成し、以下のようにホストを書き加える。
  • hostname.of.frontend:nproc1 compute-0-0:nproc2
    • ここでnproc1はFrontendノードに連続して与えるプロセスの数を表す。同様に、nproc2はComputeノードcompute-0-0に連続して与えるプロセスの数を表す。
    • コロン(:)の前後にスペースはいらない。
    • 詳しくはMPICH2 User's Guid (pp.9-10)を参照。
    • ファイル名は何でもOK。"mf"はmachine fileの頭文字。
  • "mpiexec"を使ってexecute.outを実行する。
  • $ mpiexec -machinefile mf -n #procs ./execute.out
    • ここで、#procsは実行ファイルを走らせるプロセス数。MPIではランクが0から#procs-1まで振り分けられる。
    • #procsはノードの数より小さい必要はない。大きくても、ラウンドロビンで実行。ただし、その場合、メモリの競合問題が大きくなるなどして計算速度が大きく低下する。

Note 1: compute nodeの電源をオフにする方法
root権限でfront endにログインし、
# ssh compute-x-y
(省略)
# poweroff
とすればOK。
※root権限を持たないアカウントからsshを使ってシャットダウンすることはできない。
$ shutdown -h now
としても、コマンドが見つからないというエラーメッセージが表示される。

Note 2: コンパイラにifortを使う方法
 MPICH2のデフォルト・コンパイラはgfortranであるが、mpdbootで立ち上げることのできるデーモンの数が限られてしまう。一方、ifortではそのような弊害は生じない。また、マシン環境がインテルである場合、ifortを使う方が望ましいと考えられる。

 ただし、Rocks Clusterにはifortがデフォルトで入っていないため、自分でインストールする必要がある。
  • インストール方法についてはこちらを参照。
  • ただし、インストールするフォルダは /share/apps 以下にする(理由はこちら)。
  • ifortを使ったコンパイルのしかたはこちらを参照。
Note 3: デーモンを停止させる方法
端末で以下の操作を行なう:
$ mpdallexit

Thursday, July 22, 2010

【自作PC】グラフィックカードを追加

CentOSをインストールできない原因はマザーボードにオンボードされているグラフィック機能のドライバがサポートされていないということだった。

その対処として、CentOSによりサポートされているVGAドライバを搭載したグラフィックカードを新しく取り付けた。製品は、ASUSのEN8400GS。対応ポートはPCI Express 2.0 x 16。CentOSがサポートしているNVIDIAのVGAドライバはnv。パーツを購入した秋葉原お店の店員さんが、「CentOSを使うならGeForceは9100番台以降は使わない方がいい」と言っていたが、それは新しい製品だと対応ドライバが3Dアクセラレータ対応のnouveauとなり、nvではもはや正常に動作しなくなってしまうからだろうか。CentOS、したがってRocks Clustersを利用する場合、とにかく新しいパーツをそろえれば良いってものでもないことがはっきりした。

製品パッケージ

マザーボードへ取り付けた状態。PCI Express 2.0 x 16スロット。

ケースの背面。拡張部分は上からASUS EN8400GSグラフィックカード、corega CG-LAPCIEGTR。

Wednesday, July 21, 2010

【CentOS】CentOS 5.4をインストールできない

要約
 先週自作したPCへのRocks Clusters 5.3のインストールがうまくいかないが、それはCentOSとハードとの相性に問題に起因していることがわかった。
 そこで、なぜCentOSをインストールできないか原因を究明する必要がある。

1. 背景
 Rocks Clusters ver.5.3 (Rolled Tacos)のx86_64のjumbo(DVD)のisoイメージをダウンロードし、DVDにDVD Decrypterを使って焼き、CD/DVD-ROMブートでPCを起動。Users Guideの通り、グローバルIPアドレスを入力する画面が出てきて、入力するまではいい。問題は、次の写真のように画面が進んで、

その後下側に

Running anaconda, Rocks (だったと思う) system installer - please wait...
Probing for video card: Intel Corporation Clarkdale Integrated Graphics Controller


と出た後、突然画面が真っ暗になってしまうところ。CPUファンや電源ON/OFFのLEDランプはついてる。しかし、DVDドライブは画面が真っ暗になってまもなく動きを停止。ejectボタンを押しても拒否・無反応。

2. 原因の特定
 原因はOSとマザーボードその他ハードとの相性にありそう。というのも、Ubuntu 10.04 (Alternate版)のインストールは問題なくできたから(DVD-ROMを利用)。さらに、Rocks ClustersがベースとしているCentOSのインストールでは同じ症状が見られた!(ヴァージョンは5.4。ミラーサイトのうち"Direct DVD Downloads"が"YES"になっている日本の"JAIST"からダウンロードすることにし、"HTTP"->"5.4/"->"isos/"->"x86_64/"と進みCentOS-5.4-x86_64-bin-DVD.isoをクリック。なお、インストールが開始する前のmedia testはクリアしている。)画面が真っ暗になる直前のメッセージはRocks Clustersをインストールしたときとほぼ同じで、

このときは最後に

Attempting to start native X server
Waiting for X server to start...log located in /tmp/ramfs/X.log

と表示されていた。X windows systemを立ち上げることに問題があるということか。

2.1 Intel社製のグラフィックに問題あり?
 CentOS 5.4のwikiの4. Known Issuesに次のことが書いてあった:

Many users have experienced a blank or black screen after an upgrade to 5.4, particularly with Intel video. A workaround found on the CentOS forum is to install in text mode and afterward edit /etc/X11/xorg.conf and add the line 'Option "DDC" "false"':

Section "Device"
Identifier "Videocard0"
Driver "intel"
Option "DDC" "false"
EndSection


 実際、CentOS 5.4をテキスト・モードでインストールしてみたら問題なかった!
 ただ、この方法だと一度テキスト・モードでOSをインストール必要があるので、そのようなインストールモードのないRocks Clustersには残念ながら適用できない(少なくともマニュアルにはテキストモードについて言及されていない)。
 ということで、対処の方法としては2通り考えられる:

  • どうようの問題が発生しない古いバージョンのRocks Clustersをインストールする。
    • その際、CentOSのwikiにあるReleaseNotesが参考になる。Known Issues等を参考にすればOK。
  • グラフィックボードにドライバーがX serverやkernelにサポートされているものを選ぶ。
    • Rocksのarchivesにそのような例が報告されている。やはりRocksの場合はテキストモードによるインストールができないことが余計な制約になっている。

 ちなみにち、マザーボードとオンボードの"VGA compatible controller"については以下の通り:
  • マザーボード:ASUS P7H55-M

  • VGAコントローラ:Intel Corporation Ibex Peak HECI Controller (rev 06)


【追記:7/22】
最終的には、GeForce8400GS搭載のグラフィックカードASUS EN8400GNを取り付けることで問題は解決した。

Monday, July 19, 2010

【Rocks】Intel Compilerをどうインストールするか

Rocks Clustersの最新バージョンは5.3。それにはIntel compilerをインストールするRollがない。ということで、自分でインストールしなければならない。方法はどうやら2つあるようだ。

  • スタンフォード大学のRolls Working GroupのRollを利用する。
    • ただしこの場合、必要なRollをインストールする必要がある。Rocks ClustersのRollとの関係が気になるところ。

  • frontendの"share/apps"にコンパイラをLinux PCにインストールする手順でインストールする。
    • computeノードについては、"share/apps"にあるものは自動的に実装されるらしい。
    • 「実装」というより、Network File System (NFS)により、あたかも各computeノードが自身のHDDに実装しているかのように見せかける。つまりは、各computeノードからfrontendノードにEthernetでアクセスすることになる。
    • ということは、あまり頻繁に利用すると計算処理速度に影響が出てくることになる。幸い、コンパイルだけならほとんど問題にならない。
    • というか、そもそも自分の場合、コンパイルはfrontendノードだけで行えればOK。

【自作PC】パーツ選びの際の注意点

目的に合わせて適切にパーツを選択することが大切。目的に適わないパーツを選ぶことは是非とも避けたい。以下に簡単な覚書を書いておく。ちなみに、ここでの目的は科学技術用計算である。Rocks Clustersを使ったPCクラスタの構築を念頭に置き、frontendを除くノードにはPXEブートによりOSをインストールする。
  • マザーボード
    • CPUソケットとチップセットがCPUに対応しているか。
    • BIOSがPXEブートに対応しているか。
    • オンボードのLANはGigabit Ethernet接続に対応しているか。
    • ECC-Registedメモリに対応しているか。

  • メモリ
    • ECC-Registedか。
    • SPD (Serial Presence Detect)に対応しているか。
    • bit構成が64bitか。

  • 電源
    • W数は十分か。
    • 105℃コンデンサを利用しているか。
    • ケースのサイズ(ATXとか)に対応しているか。
    • モジュラーケーブルか。
    • 80PLUS認証か。

  • グラフィックス
    • ドライバ(?)にX windows serverが対応しているか。
      • Rocks ClustersやそれがベースとしているCentOSのいくつかのバージョン(少なくともRocks 5.3, CentOS 5.4)ではドライバが対応していないためにグラフィックモードによるインストールができない。
      • CentOS wikiのHow To Configure a New Video CardはX11(on CentOS)がサポートしているVGAドライバをリストアップしていて参考になる。

  • NIC
    • パブリックネットワーク用とプライベートネットワーク用の両方のNICに当てはまる。
    • 初期設定のままでCentOS上で動作するか。
    • Hardware Compatibility Listの4.7. Network Cardsに記載されているチップセットを選ばないように。CentOSがサポートしていない可能性がある。



なお、Rocks ClustersはCentOSをベースにしているので、CentOS wikiのHardware Compatibility Listが参考になる。

Sunday, July 18, 2010

【Ubuntu】PCを空っぽにする

手元にあるDell Inspiron mini 10vからUbuntuを削除して、空っぽのPCにしたい。

外付けCDドライブを持っている自分としては、そのためにはLive CDを使って起動し(Live CDの作成についてはこちらを参照)、その上でHDDを開放するとうい手順を踏めばよい。

とりあえず、ver.9.10をCDに焼いて、起動を試みる。

CDを入れたままPCを起動。直ぐにF2を押して、BIOSのbootの順番をCD/DVDを一番にする。そして、セーブして終了。するとLive CD起動モードの選択画面が出てくるので、そこで「コンピュータに変更を加えずにUbuntuを使ってみる」を選択する。

すると、次のようなエラーが出た。

stdin: error 0
stdin: error 0
stdin: error 0
stdin: error 0
stdin: error 0
/init: line 1: can't open /dev/sdb: No medium found
/init: line 1: can't open /dev/sdb: No medium found
/init: line 1: can't open /dev/sr0: No medium found
/init: line 1: can't open /dev/sr0: No medium found
stdin: error 0
/init: line 1: can't open /dev/sdb: No medium found
/init: line 1: can't open /dev/sdb: No medium found
/init: line 1: can't open /dev/sr0: No medium found
/init: line 1: can't open /dev/sr0: No medium found
stdin: error 0
/init: line 1: can't open /dev/sdb: No medium found
/init: line 1: can't open /dev/sdb: No medium found
/init: line 1: can't open /dev/sr0: No medium found
/init: line 1: can't open /dev/sr0: No medium found
stdin: error 0
/init: line 1: can't open /dev/sdb: No medium found
/init: line 1: can't open /dev/sdb: No medium found
/init: line 1: can't open /dev/sr0: No medium found
/init: line 1: can't open /dev/sr0: No medium found
stdin: error 0
/init: line 1: can't open /dev/sdb: No medium found
/init: line 1: can't open /dev/sdb: No medium found


BusyBox v1.13.3 (Ubuntu 1:1.13.3-1ubuntu7) built-in shell (ash)
Enter 'help' for a list of built-in commands.

(initramfs) mount: mounting /dev/loop0 on //filesystem.squashfs failed: Input/output error
Can not mount /dev/loop0 (/cdrom/casper/filesystem.squashfs) on //filesystem.squashfs



どうすりゃいいの?これによると、ビデオカードのエラー?

ちなみに、環境は

PC: Dell Inspiron Mini 10v
iso: ローカライズ版 Ubuntu9.10


Alternate版にすれば問題なく起動できましたとさ。
ちなみに、バージョンは10.04。

ということで、以下の手順でHDDを開放(用語の使い方あってるのか?)

  • Live CDで起動。
    • 起動に時間がかかるが、GUIで動かせる。

  • "Terminal"を起動。

  • "GParted"というパーティションを行うためのアプリ?が入っているので、それを起動:

    $ sudo gparted


  • 全てのパーティションを"Delete"して、結果を適用する。

  • Live CDを外して再起動。起動しないことを確認する。次のようなエラーメッセージが出たがこれでOKか?

    GRUB Loading stage1.5.


    GRUB loading, please wait...
    Error22

    ※「GRUB(GRand Unified Bootloader)はGNUの開発した高機能なブートローダである。」@wiki

Friday, July 16, 2010

【Linux】PCIバスに接続されているデバイスを一覧表示

PCIバスに接続されているデバイスを調べるには、

$ lspci

と入力すればよい。

自分の場合、Dell Inspiron mini 10vのNICがPXEブートに対応しているかどうかを調べるために使用した。

Thursday, July 15, 2010

【ネットワーク】IPアドレス


  • IPアドレスとは、パケットを送受信する機器を判別するための、ドット付き10進数記法で表された番号のこと。

    • 4byte長すなわち32bit長のアドレスを使うIPv4と16byte長すなわち128bit長のアドレスを使うIPv6の2つのバージョンがある。

    • インターネットなど外部との通信に使われるものをグローバルIPアドレス(もしくはパブリックIPアドレス)、ローカルエリアで使われるものをプライベートIPアドレスと呼ぶ。

  • ネットマスクとは、IPアドレスの先頭から何bit目までがネットワークアドレスかを指定する、ドット付き10進数記法で示されるアドレス。

    • ネットワークアドレスとは、IPアドレスのうちネットワーク内で固定された部分のことをいう。それ以外の部分をホスト・アドレスと呼ぶ。

    • 例えば、"255.255.255.0"で、これはクラスCと呼ばれるネットマスク。

  • PCクラスタを組む場合、インターネットへはfrontend node(ホスト)を経由してアクセスする。さらに、このfrontend nodeはルーターを経由してネットへアクセスすることになる。この場合のルーターをGatewayと呼び、これにもIPアドレスが割り当てられる。

【Rocks】既存ノートPCと自作PCでPCクラスタを組みたい

今、手元には
がある。

この2つを使って、PCクラスタを組むことはできないだろうか?

というのも、本格的にPCクラスタを組む前に、PCの自作とRocks Clustersディストリビューションを使ったPCクラスタ構築の実験をしておきたいからね。

ノートPCのEthernetポートが1つしかないことを考えると、これをcompute nodeにし、自作PCをfrontend nodeにすべきだ。さらに、Core i7 950が64bit、Atom N270が32bitであるheterogeneousなクラスタを組む、Cross Kickstartingとなる。

できなくはなさそうだ。

とにかく予算は掛けたくない。こんな実験にIntel Core i7を使ってしまうのはもったいないのは間違いないけど、ECC対応してなくて科学技術計算用としては使えない代物だし、それにただでもらったものだから構わない。

とりあえず調べないといけないことをリストアップしておこう。

  • そもそも上記のheterogeneousなクラスタがRocks Clustersで組めるのか?

  • ノートPCからUbuntu 9.10をアンインストールするには?

  • 自作PCの構成をどうするか?

Wednesday, July 14, 2010

【Ubuntu】シェル、root権限

Ubuntuのデフォルトのシェルはbash。

Ubuntuの場合、OSインストール時にはrootのパスワードを設定しない。そのため、root権限でログインするためには、以下のコマンドを入力する必要がある。

$ sudo su -
# passwd

ここで、パスワード(passwd)はログイン中のアカウントのパスワードを入力する。

【Ubuntu】ver9.10へのアップグレード

Ubuntuを9.10へアップグレードしたら、インテルコンパイラが使えなくなった。

$ ifort filename.f90

と入力すると、次のようなエラーメッセージが表示される:

/opt/intel/Compiler/11.1/069/bin/ia32/fortcom: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory
ifort: error #10273: /opt/intel/Compiler/11.1/069/bin/ia32/fortcom の致命的なエラー、0x7f で終了しました。


ここを参考に、以下の作業を行って問題が解決した。


$ wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-3.3/libstdc++5_3.3.6-17ubuntu1_i386.deb
$ sudo dpkg -i libstdc++5_3.3.6-17ubuntu1_i386.deb

【MPI】MPICH2をUbuntuノートPCにインストール

UbuntuノートPCのCPUがIntel AtomでデュアルコアでMPIが使える。ということで、MPICH2をインストールする。

Step1. まずはmpich2-1.2.1p1.tar.gzをtmpフォルダにダウンロードし、解凍する。

$ cd /tmp
$ wget http://www.mcs.anl.gov/research/projects/mpich2/downloads/tarballs/1.2.1p1/mpich2-1.2.1p1.tar.gz
$ tar xfz mpich2-1.2.1p1.tar.gz

ここでは、/etc/apt/sources.listを修正することでUbuntuのサイトからパッケージをaptitude等で自動インストールすることができるとあるが、その場合、自分の好きなフォルダにインストールできないので直接インストールすることとした。

Step2. 次に、mpich2をインストールするフォルダを作成する。今回は、"/opt/mpich2/"にインストールする。

$ mkdir /opt/mpich2



Step3. mpich2の設定を行う。FortranコードはIntel Fortran Compiler ("ifort")を使いたいので、.bashrcを開いて、

$ cd $HOME
$ emacs .bashrc

以下を入力する。ついでに、PATHを通しておく。(※既にIntel Fortran Compilerをインストールしていることを前提。インストールについては、こちらを参照)

export FC=/opt/intel/Compiler/11.1/069/bin/ia32/ifort
export F77=/opt/intel/Compiler/11.1/069/bin/ia32/ifort
export F90=/opt/intel/Compiler/11.1/069/bin/ia32/ifort

export PATH*/opt/mpich2/bin:$PATH

※どのようなコンパイラが使われるかの確認は、インストールが完全に終わった後に、

$ mpich2version

で確認できる。

Step4. mpich2-1.2.1p1.tar.gzの解凍先のフォルダに移動し、次の設定を行い、makeし、root権限でmake installする。

$ cd /tmp/mpich2-1.2.1p1
$ ./configure --prefix=/opt/mpich2 --enable-f77 --enable-f90 --enable-debuginfo
$ make
$ sudo su -
# passwd
# make install



Step5. ホームディレクトリに".mpd.conf"を作成し、

$ cd $HOME
$ touch .mpd.conf
$ chmod 600 .mpd.conf

以下の一行を書き加える。

secretword=xxxxxx

ここで"xxxxxx"は自分の好きなワード。

Note1. Fortranソースコードのコンパイルの仕方は

$ mpif90 filename.f90

で"a.out"が作成される。

Note2. "a.out"の実行は、例えば

$ mpiexec -n 2 ./a.out

でできる。"-n 2"はプロセス数を指定。実行ファイルの前の"./"はマニュアルに書いてないが必要。

Note3. "include 'mpif.h'"をメインファイル"main.f90"ではなく、モジュールファイル"module.f90"に含みたいとき、コンパイル&リンクが必要。コンパイル・リンクを同時に行い、nprocsのプロセス数で実行するには次のように入力する。

$ mpif90 -o filename.out module.f90 main.f90
$ mpiexec -n nprocs filename.out