UPACS for LINUX
これは、pentiumベースPCマシン上でUPACSのtestRunが動くようになるまでのLinux素人メモ(悪戦苦闘の奮戦記)です。(インデックス形式にしたいけど、時間がないのでとりあえずだらだら書いてます。)
機器構成
CPU: intel pentium2
OS: linux vine 2.0
富士通:fortran & C compiler V2 for linux
Linuxでの各ソフトのインストールは、ソフトのダウンロード及び展開をユーザーで行い、問題ないようであればroot(su)してインストールする。(システム保護のため)
http://dev.script.com.software/tcltk/
cd unix
./configure; make; make install
でインストールできます。
(詳細は、http://club.pep.ne.jp/~am0250/tstart1.htmlを参照)
抜粋:.
インストール手順 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
以下の手順でインストールを行って下さい。インストールはスーパーユーザ(root)で行う必要があります。1) スーパーユーザ(root)で login します。
2) 環境変数 LANG に ja_JP.ujis を指定します。 (特に指定しないでもうまくいた)
3) install.shを実行します。
4)インストールを日本語で行うかどうかを選択します。日本語を表示できるターミナルの場合は
y を選択します。デフォルトは n です。
5)インストール先を選択します。/usrを入力した場合、/usr に FFC を付加し /usr/FFC にインストールを行います。デフォルトは
/usr です。
6)御使用のシステム(ディストリビューション)で使用している
glibc を選択します。デフォルトは御使用のシステムによって変わります。通常、システムの初期インストール状態では、本インストレーションガイド「2.
動作環境」の表のようになっています。正しい
glibc を選択しない場合、動かない場合があるので御注意下さい。
7)インストールするコンポーネントを数字で選択します。"1 2 3"や "2 4" など、空白で区切って指定して下さい。すべてインストールする場合
all を指定します。デフォルトは all です。
8)選択した内容が表示されるので内容を確認し、y
を選択します。nを選択した場合、インストール処理を行わずに終了します。デフォルトは y です。
9)ファイルのコピーが終了すると、ライセンスの設定処理を開始します。シリアル番号、期限、パスワードを入力します。ライセンスの設定を中断した場合は
/usr/FFC/bin/setup-license を実行して下さい。本製品を使用するために以下の環境変数を設定します。
(以下はインストール先に /usr/FFC を選択した場合です)
PATH /usr/FFC/bin → /etc/bash_profile にpath追加設定を加える
LD_LIBRARY_PATH /usr/FFC/lib → ホームディレクトリ/.bash_profileに記述
bashの場合
LD_LIBRARY_PATH=/usr/FFC/libexport LD_LIBRARY_PATH
MANPATH /usr/FFC/man
MANPATH=/usr/FFC/manexport MANPATH
環境設定の確認:
$ env | grep LD_LIBRARY_PATH
$ env | grep MANPATH
$ echo $PATH日本語がサポートされているシステムでは、環境変数
LANG に ja_JP.ujisを指定することにより日本語メッセージが出力されます。
動作確認
必要条件機能
GNUPLOTのソースコードを ftp://ftp.dartmouth.edu/pub/gnuplot/gnuplot-3.7.tar.gz から入手します。今回は最新版(99/4/11現在)であると思われる GNUPLOT 3.7(gnuplot-3.7.tar.gz)を入手しました。
GDライブラリが必要となります。GDライブラリは、 http://www.boutell.com/gd/にあります。 (2001年1月現在の最新バージョンgd 1.8.3を使用する。)
ソースを展開するディレクトリに移り、たとえば、 "/usr/local/src"で、 % tar xvzf gd1.8.3.tar.gzとします。
GDライブラリソースのディレクトリ("gd1.8.3")で % makeとするだけです。
GDライブラリと同様に、ソースを展開するディレクトリに移り、たとえば、 "/usr/local/src"で、 % tar xvzf gnuplot-3.7.tar.gzとします。
GNUPLOT ソースのディレクトリ("gnuplot-3.7")で
% ./configure --with-gd=../gd1.8.3
% make
とします。今回は、GDライブラリを組み込むために、 configureのオプションに --with-gd=../gd1.8.3を付けています。
これだけです。
適当なディレクトリで配布ファイルを展開し、できたディレクトリに cd する。
%tar xvfz upacs-1.01.tar.gz (or %gzip -dc upacs-1.01.tar.gz | tar xvf - )
%cd upacs-1.01
環境変数UPACS_HOMEの設定環境変数
UPACS_HOMEをセットする。(デフォルトでは ~/upacs
に設定されます) この環境変数はインストール時と実行時に使うので初期化ファイルに書いておくと便利です。
C shell の場合 (.cshrc)
setenv UPACS_HOME ~/upacs
set path=($path ${UPACS_HOME}/bin) ・bash の場合(.bashrc)
UPACS_HOME=/home/ユーザ名(例えばtkaz)/upacs
export UPACS_HOME
export PATH=$PATH:/home/tkaz/upacs:/home/tkaz/upacs/bin
環境設定の確認: $ env | grep UPACS_HOME$ echo $PATH
7-3. configureの実行
Makefileを自動的に設定します。
%./configure [options...]
ここでは
--without-x
--without-mpi
--enable-dbg (default)
--enable-fast
--prefix=( インストール先のディレクトリ)
のオプションを受け付けます。
MPIがインストールされていない環境では自動的に --without-mpi が設定されます。
--prefix=XXX に関しては環境変数UPACS_HOMEが設定されている時はそちらが優先されます。
--prefix=XXX, UPACS_HOME のどちらも指定がない場合は ~/upacs にインストールされます。
7-4. makeの実行
%make
コンパイルします。
順調にいけば bin, lib, include というディレクトリができ、bin の中に upacsSolver.exe その他ができます。
7-5. make installの実行
%make install
環境変数 $UPACS_HOME で設定したディレクトリ内の
$UPACS_HOME/bin
$UPACS_HOME/lib
$UPACS_HOME/include
$UPACS_HOME/etc
に必要なファイル (実行形式、ライブラリ、その他)がインストールされます。
7-6. make testの実行
%make test
正常にコンパイル、インストールできたかを確認できます。
ディレクトリ testRun 下にある bump1, bump2, bump4 の例題を順次実行していきます。
(testRun/README_*.txtを参照) bump1 : 1Block 1pe 実行 bump2 : 2Block 1pe 実行 -> *2
・ bump4 : 4Block 2pe 実行 -> *1,*2 *1 MPIが無い環境では bump4 はエラーメッセージが出て異常終了しますが問題ありません。 その場合、 bump4/Makefile の3行目
2 ${UPACS_HOME}/bin/upacsSolver.exe -> ${UPACS_HOME}/bin/upacsSolver.exe (2を消す) を修正して make すると 4Block 1pe で計算します。 *2 MPIが使える環境では Makefileの3行目のpe数を変更した計算も可能です。
bump2 : 1,2
bump4 : 1,2,4
ここまで正常に動けばインストールは成功です。
航技研から配布されるバイナリデータは、PCLinuxでは読めません。一度SunやAlphaマシンで書式付アスキーデータにしてさらにPC上でバイナリデータにします。
<バイナリデータ(grid001.fub) からアスキーデータへの変換プログラム>
! grid data converter upacs -> ascii
program main
implicit none
real(8) ,pointer:: data(:,:,:,:)
integer:: n(4)
open(unit=10,file='grid001.fub',form='UNFORMATTED')
read(10) n
write(6,*) n(1),n(2),n(3),n(4)
allocate(data(n(1),n(2),n(3),n(4)))
read(10) data
open(12,file='grid_sun.asc',form='FORMATTED')
write(12,'(4i10)') n
write(12,'(3e20.10)') data
!
end
<アスキーデータ(grid_sun.asc) からPC用バイナリデータへの変換プログラム>
! grid data converter upacs ascii -> binary
program main
implicit none
real(8) ,pointer:: data(:,:,:,:)
integer:: n(4)
!
open(10,file='grid_sun.asc',form='FORMATTED')
read(10,'(4i10)') n
write(6,*) n(1),n(2),n(3),n(4)
allocate(data(n(1),n(2),n(3),n(4)))
read(10,'(3e20.10)') data
!
open(12,file='grid001.fub',form='UNFORMATTED')
write(12) n
write(12) data
!
end
これで動きました。めでたしめでたし。
<Upacsでのデータ読み込みルーチン>
/src/uputil/fioFub.f90inc 44 - 46 行目
#if defined(__alpha)
open(unit,file=trim(filename),form='UNFORMATTED',status='old'&
,iostat=ios,convert="BIG_ENDIAN")
#else
open(unit,file=trim(filename),form='UNFORMATTED',status='old'&
,iostat=ios)
#endif
あたりをいじるとうまくいくかも。。。
<浜辺君のアドバイス>
計算に必要なファイルは、Makefile, graphic.txt, bc.txt, input.txt, restrat.txt, /data/grid001.fub(asc), です。格子の面全てに境界条件を指定しているので,connect.txtは必要ありません。
とりあえず,input.txtのitrctrl_restart = .true.にして,makeしてみてください。また、Makefile connect3dが必要ない場合はコメントアウトします。
# Generated automatically from Makefile.in by configure.
all: bc.txt
${UPACS_HOME}/bin/upacsSolver.exe
#bc.txt:
# ${UPACS_HOME}/bin/createConnect3d
clean:
rm -f createConnect3d.pdb_report \
nondimParameter.txt pdb_report???.txt
cd data; \
rm -f cellNode???.fub cellPhys???.fub phys???.fub
distclean:
gmake clean
rm -f Makefile