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を参照)

  1. 富士通 Fortran & C, C++ Compilerのインストール → インストレーションガイド /mnt/cdrom/INSTALL を参照

抜粋:.

インストール手順

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

以下の手順でインストールを行って下さい。インストールはスーパーユーザ(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

→ ホームディレクトリ/.bash_profileに記述
bashの場合

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