Server_JP - CCSEPBVR/CS-IS-PBVR GitHub Wiki
サーバはフィルタの出力データであるサブボリュームファイルを読み込み、PBVR法で利用する可視化用粒子データを生成する。 可視化用粒子データはソケット通信を介してクライアントプログラムに送信される。
サーバプログラムはスーパコンピュータ上で粒子データのみをバッチ処理するバッチモード、およびソケット通信可能なサーバクライアントを接続して対話処理により粒子データを生成するクライアント・サーバモード(クラサバモード)による処理が可能である。 PCやワークステーション上のスタンドアロン処理はクラサバモードでクライアントプログラムとサーバプログラムを同一マシン上で起動することにより実現する。 サーバの起動方法を以下に示す。
(MPI+OpenMPでの起動方法、Nにプロセス並列数を入力する)
$ mpiexec -n N pbvr_server ※1、 2
(OpenMPのみでの起動方法)
$ pbvr_server
※1. MPI + OpenMP版サーバはマスター・スレーブ型で動作するので、並列数はNスレーブの並列数 + 1で指定。
※2. どちらの方法の場合もOpenMPスレッド数は環境変数OMP_NUM_THREADSで指定。
Windows環境での場合はMSVCの x64 Native Toolsコマンドプロンプトからコマンドを実行により起動される。
(サーバ起動)
Windows> pbvr_server.exe
遠隔PCとユーザPCのソケット通信の方法を以下の表に、クライアントの起動方法はクライアントプログラムを参照する。
オプション | 適用先 | 指定値 | デフォルト | 機能 |
---|---|---|---|---|
-h | CS、B | - | - | オプションおよび指定可能パラメータの一覧を表示 |
-B | B | - | - | バッチモードを指定する |
-pa | B | ファイル名 | - | 可視化パラメータファイルを指定する ※2 |
-pd | B | 実数値 | 1.0 | 画像の濃さを指定する |
-S | B | u、m、r | u | 粒子サンプリング方法 u: uniform sampling m: metropolis sampling r: rejection sampling |
-plimit | B | 1~99999999 | 1000000 | 粒子数制限値 |
-vin | B | ファイル名 | - | 入力ボリュームデータファイル※3 |
-pout | B | ファイル名 | - | 出力粒子データファイル名※4 |
-p | CS | ポート番号 | 60000 | ソケット通信ポート番号 |
-viewer | B | 100~9999×100~9999 | 620×620 | ビューワ解像度 |
-Bd | B | - | - | タイムステップ毎に粒子ファイルを1つにまとめず、サブボリューム毎に出力する |
-Bs | B | 0以上の整数値 | 指定したPFIファイル群の先頭ステップ | 処理対象とするタイムステップ範囲の開始ステップを指定する |
-Be | B | 0以上の整数値 | 指定したPFIファイル群の最終ステップ | 処理対象とするタイムステップ範囲の終了ステップを指定する |
※1. 適用先の凡例は、CS:クラサバモード、B:バッチモードである。
※2. 可視化パラメータファイルの詳細はクライアントプログラムを参照。
※3. フィルタ処理後のボリュームデータから生成される.pfiファイル、もしくは分散処理用の.pflファイルを絶対パス、もしくは、相対パスで指定する。拡張子を省略しないこと。
※4. 指定されたファイル名をプレフィックスとして”ファイル名_時刻番号_サブボリューム数_サブボリューム番号.kvsml”という形式のファイルを生成する。
サーバ起動時のコマンドラインオプションとして-Bを指定すると、バッチモードで起動する。バッチモードでの起動例(MPI + OpenMP版)を以下に示す。
$ mpiexec –n 5 pbvr_server –B -vin ./data/case.pfi -pout ./output/case –pa ./param.in
上記の例では、入力ボリュームデータファイル./data/case.pfiを可視化パラメータファイル./param.inに記述されたパラメータによって処理を行う、以下の粒子データを出力する。
./output/case_XXXXX_YYYYYYY_ZZZZZZZ.kvsml
./output/case _XXXXX_YYYYYYY_ZZZZZZZ_colors.dat
./output/case _XXXXX_YYYYYYY_ZZZZZZZ_coords.dat
./output/case _XXXXX_YYYYYYY_ZZZZZZZ_normals.dat
ここで、XXXXXは時刻、YYYYYYYはサブボリューム番号、ZZZZZZZは全サブボリューム数を示し、colors、coords、normalsはそれぞれ色、座標、法線ベクトルデータを示す。 通常は時刻ごとに全てのサブボリュームが統合されるのでYYYYYYY、ZZZZZZZ共に1のみだが、統合を行わず、サブボリューム毎に粒子データを出力したい場合は、バッチモードのサーバ起動時のコマンドラインオプション-Bdを指定する。 バッチモードのサーバ起動時のコマンドラインオプション-paで指定する可視化パラメータファイルはクラサバモードの対話処理によって生成する。 このファイルをそのまま利用、あるいはパラメータファイルを編集し、バッチ処理で大量のデータの処理を行う。
ストレージに分散して保存された複数のボリュームデータを統合して可視化可能である。 複数のボリュームデータは一つ一つフィルタ処理し、それぞれにpfiファイルを作成する。 そしてpfiファイルを列挙したpfiファイルを作成し、-vinオプションでpflファイルを指定する。 pflファイルの先頭には「#PBVR PFI FILES」の記述が必要で、以降、1行毎にpfiファイルを絶対パス、もしくは、pflファイルのあるディレクトリから相対パスで記述する。 pflファイルの記述例を示す。
#PBVR PFI FILES
hex_filter_out/hex.pfi
hex2_filter_out/hex2.pfi
サーバ起動時のコマンドラインオプションとして-Bを指定しなかった場合は、クライアント・サーバモードで起動する。 以下に起動例を示す。
$ mpiexec -n 5 pbvr_server
first reading time[ms]:0
Server initialize done
Server bind done
Server listen done
Waiting for connection ...
上記のようにクライアントとのソケット通信の接続待ちになったら、別の端末からクライアントを起動する。 なお、入力ボリュームデータ名はクライアント側で指定する。 サーバ起動時のポート番号の省略値は60000である。 ポート番号は以下のように起動時のコマンドラインオプション-pで変更できる。
$mpiexec -n 5 pbvr_server -p 55555