June 19, 2003
Alphaマシンの型番はAlphaServer 1000A 5/400で, 型番からも分かるとおりCPUはAlpha21164の400MHzが載っている. 過去のニュースリリースによると, 発表されたのは1996年暮れで,メモリ128MB,HDD2.1GB,キャッシュ2MB, CD-ROM搭載のWindows NTモデルが232万円である. 筆者の部屋に来たマシンはこれにRAIDコントローラ+4.2GBHDDが2台追加されているので, 総額250万円以上はした代物である.重さも40kgぐらいある.
このマシンが発表された当時のPCのハイエンドは Pentium Pro で, 売れ筋は 1GB 程度の HDD が搭載された Pentium 133MHz あたりだろう. それから考えても,このマシンが当時いかに高性能であったかが伺える.
部屋に持ち込んでディスプレイ,キーボード,マウスを繋ぎ,電源を入れるとAlphaBIOS(後述)が 起動し,Windows NT3.51 Serverが立ち上がった. もちろん,このままで使い続けることも可能だが,折角の64bitマシンだ. Linux for Alphaを載せて私用の計算専用マシンに仕立てたい. 学術用途ならフリーで使える Compaq Fortran と 組み合わたときにどのくらいのパフォーマンスを発揮するか見物である.
以前の職場にはPentium4 2GHzとAlpha 600MHzの2台の計算専用サーバがあった. x86の方はSuSE Linuxが載っており,Intel Fortran Compilerでコンパイルしたコードはかなり高速だった. しかしながら,クロックが3分の1以下のAlphaマシン(Tru64 UNIX+Compaq Fortran)での 計算はx86マシンと同等か,もしくは若干速かった. 特に複数の計算コードを同時に走らせた場合のパフォーマンスの差は歴然だった.
Alphaの64bitプロセッサは元々数値演算を得意とするRISCプロセッサである. また,DEC Fortranの流れをくむコンパイラも歴史が長く,最適化技術やリンクされるライブラリは高度に洗練されていると見る. 今回手に入れたAlphaマシンもクロックこそ400MHzだが,数値演算速度はかなり期待できるはずである.
の記事であった. 覚え書き程度のページが多い中で,このページの作者は同じ内容の雑誌記事を執筆しており, それをHTML化してWeb上で公開してくれている. 記述も大変わかりやすい. 特に,パーティション作成やabootのコピーの部分は,他に類似の記事が見つからなかっただけに大変ありがたかった. AlphaにLinuxを入れようとする人は必見である.
AlphaにOSをインストールする場合,まず何よりもBIOS(Compaqではファームウエアと呼んでいるようだ)の 種類とその特徴を把握しておくことが肝要である. PCのBIOSと違い,AlphaのBIOSはインストールするOSに依存している.
BIOSの種類はSRM,ARCおよびAlphaの3種類ある. SRM BIOSの場合,UNIX系のOS(Tru64,Open VNS,Linux)しかインストールできない. ARC BIOSはUNIX系OSに加えてWindwos NTのインストールが可能である. AlphaBIOSはARC BIOSをWindows風のGUI環境にしたもので,基本的にはARCと同じである.
LinuxはどのBIOSからでもインストール可能なはずなのだが,各種の情報を総合するとCD-ROMブートが可能なSRM BIOSから インストールするのが最も確実なようだ. 先のページでもSRMからのインストール方法が紹介されている.
Alphaマシンの種類によって搭載されているファームウエアが異なっているが, 手にしたマシンは幸いAlphaBIOSとSRMとの二本立てになっており, 以下の手順で両者を切り替えることができるようになっていた.
インストールに当たってはファームウエアのアップデートを行っていた方が良いようなので, ここ から最終版のファームウエアを ダウンロードする. 機種ごと,OSごとにたくさんのイメージファイルがあるので,間違えないようにしなければならない.
"Re-Released Firmware on CD" から "AlphaServer 100A(V5.7)" を選択する. 次の画面で "Floppy Disk Update - ARC or AlphaBIOS Console" の下にある "AlphaServer 1000AModel 5/xxx" 用のファームウエアイメージ as1000a_e5_v5_7.exe をダウンロードした. これを fwupdate.exe にリネームし,FATでフォーマットしたフロッピィに入れる. このフロッピィをマシンに入れて,AlphaBIOSのメニューから "Update AlphaBIOS" を選択すれば, ファームウエアのアップデートが自動的に行われる. 今回の場合,AlphaBIOSとSRMの両方がアップデートされたようだ. ファームウエアのアップデート後,再起動し,無事にAlphaBIOSが立ち上がるのを確認してから上記の方法でSRMに変更する.
ファームウエアの種類とアップデートの方法に関しては,上で紹介したページの作者が公開している
にも詳しく書かれている. こちらではARMコンソールからのファームウエアアップデート方法が紹介されているが, 基本的にはAlphaBIOSと同じである.
なぜ,7.2に拘ったかと言うと,手元のAlphaマシンに搭載されているMylex DAC960というRAIDコントローラが 最初にインストールを試みたVine 2.6 for Alphaで検出されなかったからである. オンボードで搭載されたQLogicのSCSIコントローラに繋がれたデバイスはすべて正常に認識された. webで情報を漁ったところ,このRAIDコントローラはLinuxでサポートされてからまだ日が浅いようで, ディストリビューションによってサポートされていたりいなかったりするということがわかった. リリース時期が後のRedhat 7.2 ならば,と期待したのである. 結局は 7.2 でもダメであった. ドライバは読み込まれたようであるが,正常に認識されなかった. LinuxのドライバはRAIDカードのファームウエアのリビジョンに依存しているらしい.
Vineのインストールは,先の Alpha マシンに Linux をインストール に出会う前だったので, パーティションの切り方がよく分からずに断念した. JumpStart! なるパーティション作成ツールも ダウンロードして試してみたが,こちらはメニュー画面も見れずにフリーズしてしまった.
Redhat 7.2でのインストール開始は,1枚目のCDをセットし,SRMコンソールから
あるいは
>>> boot dka400 -fl 0
と入力する.dka400はターゲットマシンの CD-ROM ドライブ(SCSI)のデバイス名である.
これは機種依存なので,このコマンドを実行する前に
>>> boot dka400 -fl "text"
として CD-ROM ドライブのデバイス名を確認しておいた方がいいだろう.
このあたりは Vine Linux 2.6(CR) for Alpha の INSTALL_ALPHA_TXT.TXT が参考になった.
>>> show dev
うまくCD-ROMが読み込めればローダである aboot が立ち上がる. その後は Alpha マシンに Linux をインストール に 書かれて手順にしたがってインストールを実行する. 特に,パーティション作成とabootの書き込みは慎重に行う必要がある. 予想通りGUIインストールには失敗したので,テキストモードでインストールを行った. また,計算専用で専らリモートログインして使うので,X関連は一切インストールしなかった. ファイルコピー中に2枚目のCDを要求される.
ここまで来るのにざっと2日間を要した.やれやれである.
さて,次なる課題は Compaq Fortran のインストールである.
こちらに関しては詳しく書かれた文書が無く,HP のサイトに
置かれた技術情報 にもrpmの展開の順番が書かれているだけである.
フリーのバイナリは ここ
からリンクを辿っていけばダウンロードできる.
今回は以下のファイルをダウンロードした.
コンパイラ本体は暗号鍵がかけられている.
ダウンロード時に登録したメールアドレスに鍵を開けるためのパスワードが送られてくる.
鍵を開けるには
cfal-1.2.0-4.alpha.rpm.crypt コンパイラ本体
cfalrtl-1.2.0-3.alpha.rpm ランタイムライブラリ
cpml_ev6-5.2.0-1.alpha.rpm CPML
cxml_ev6-5.2.0-2.alpha.rpm CXML
ladebug-4.0.67-21.alpha.rpm デバッガ
libots-2.2.7-2.alpha.rpm これもランタイムライブラリ
と入力する.
途中でパスワードを聞かれるので,メールで送られてきたパスワードを入力する.
gpg --output filename --decrypt filename.crypt
以上のrpmを次の順番でインストールする.
無事にインストールが完了した.
コンパイルは
#rpm -ivh libots-2.2.7-2.alpha.rpm
#rpm -ivh cpml_ev6-5.2.0-1.alpha.rpm
#rpm -ivh cfalrtl-1.2.0-3.alpha.rpm
#rpm -ivh cfal-1.2.0-4.alpha.rpm
#rpm -ivh cxml_ev6-5.2.0-2.alpha.rpm
#rpm -ivh ladebug-4.0.67-21.alpha.rpm
極限まで最適化するなら,
$ fort xxx.f (または xxx.f90)
であるが,出来た実行バイナリの挙動がおかしい.
SQRTやLOGなどの組み込み算術関数呼び出しで "IOT trap signal (76)" なるエラーを吐き出して止まる.
SQRTの代わりに **5d-1 とやってみても結果は変わらない.
算術関数を呼ばなければ正常に動く.
$ fort -tune host -arch host -fast -O4 xxx.f (または xxx.f90)
これは困った.ここまで来て計画断念か. エラーは致命的なものだが,ソースコードに由来するものとは思えない. もともとweb上に参考となる情報が少ない上に,フリーコンパイラであるからメールで問い合わせなどのサポートも無い. どうもハードウエアに由来する問題のような気がする. Linux をあきらめて研究費から Tru64 UNIX を買おうかと思っていた矢先,次のページを見つけた.
Fortran For Linux Alpha Systems
ここからは旧バージョンのCompaq Fortranがダウンロードできる. ここもHP内のサイト内にあるが, Compaq Fortranのトップページ からはリンクされていない.
このページをよく見ると,当初ダウンロードした cpml_ev6-xxxx.alpha.rpm のところに
For Alpha EV6/EV67 (21264) processors only - will not run on earlier Alpha processor generations:
と書かれている.今のマシンはのプロセッサは 21164 だからこれではダメなのだ. その下にある cpml_ev5-5.1.0-2.alpha.rpm を使わなければならない. こちらには "For Alpha EV4/EV5 processors (21064, 21164) - will also run on EV6:" と書かれている.
また,cxml_ev6-xxxx.alpha.rpm のところにも同様のことが書かれており, こちらも cxml_ev5-4.1.0-3.alpha.rpm を使わなければならない.
どうやら EV5 アーキテクチャのマシンに EV6 アーキテクチャ用のバイナリをインストールしてしまったのが
エラーの原因らしい.
最初にインストールしたrpmを一旦すべてアンインストールし(インストールした順序と逆順でアンインストールする),
EV5 用のライブラリとそれに適合したコンパイラ(同じところからダウンロード可能)に置き換えた.
これで問題なく実行バイナリが作成されるようになった.
あやうく Tru64 UNIX (OSだけで約6万円)を注文するところだった.
#rpm -ivh libots-2.2.7-2.alpha.rpm
#rpm -ivh cpml_ev5-5.1.0-2.alpha.rpm
#rpm -ivh cfalrtl_rh60-1.0.1-2.alpha.rpm
#rpm -ivh cfal-1.0.2-1.alpha.rpm
#rpm -ivh cxml_ev5-4.1.0-3.alpha.rpm
#rpm -ivh ladebug-4.0.62-16.alpha.rpm
蛇足であるが,最近は Inten Fortran Compiler や Compaq Fortran のような優秀なコンパイラがフリーで利用できるので, 筆者のような計算屋は大変助かる. 一昔前だと PC で手に負えない計算はワークステーションでやるのが普通だったが, ワークステーションは本体価格が目が飛び出るほど高いうえに,OSやコンパイラのライセンス料も高い. 確かに計算は速いが投資額を考えると貧乏研究室には早々手を出せる代物ではない. プロセッサメーカーがリリースしている Inten Fortran Compiler や Compaq Fortran は自社プロセッサ向けに 最適化されたコードを生成するので,PC や古い Alpha でもかなり高速に動作する. PC なら 20万も出せばハイエンドが手に入るし,今回のようにNTサーバとして使われていた古Alphaに Linuxを入れて計算専用マシンに仕立てるなら投資額はゼロだ.
さて,気になる計算速度であるが,予想以上に高速であったので非常に満足している. 試しに計算コードを流してみた. このコードでは非常にシビアな収束計算を行うため,4倍精度の浮動小数点数(REAL*16)を用いている. 4倍精度の浮動小数点数は,Visual Fortran や g77 では未だサポートされていない.
timeコマンドで実行時間を計測した結果は以下の通りであった.
比較のため,それまで主に計算専用マシンとして使っていた Athlon 800MHz + VineLinux 2.5 でも計算を流してみた.
コンパイラは Intel Fortran Compiler 7.0 である.
結果は
real 0m1.943s
user 0m1.878s
sys 0m0.028s
となった.
つまり計算時間が10分の1になったわけで,Alpha恐るべしである.
real 0m19.006s
user 0m18.990s
sys 0m0.010s
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||