Index of /staff/pdc/B
Name Last modified Size Description
Parent Directory 06-Mar-2000 11:06 -
Makefile 26-Oct-1999 18:40 2k
leapflogMseq.f 26-Oct-1999 21:55 25k
mpif.h 26-Oct-1999 18:41 5k
mppf.f 26-Oct-1999 21:53 9k
mppf.h 26-Oct-1999 18:41 6k
pi.dat 26-Oct-1999 18:41 1.0M
testrandom.f 26-Oct-1999 21:55 4k
(b) 並列高速乱数発生ルーチン
本ルーチンは、ユーザが複数の初期値設定アルゴリズムを指定できる
最大周期列ををもとにした並列擬似乱数を出力する。
●[入力データ仕様]
入力データは、乱数を格納する4バイト整数配列とする。
●[出力データ仕様]
出力データとして、各プロセッサに相異なる擬似乱数列が格納される。
● [本サブルーチンの入出力仕様]
本サブルーチンは、ユーザが通信に関する処理を初期化した上で、
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
以下に示すように Fortran90のサブーチンコールで呼ぶことを前提とする。
ParallelMseq(iA, iN, iFlag, iErr)
________________________________________________________________
________________________________________________________________
| |
引数名 | 入出力方向 | 説明
----------------------------------------------------------------
iA | 入出力 | integer型。(1, 2^31 - 1) の非負整数値が
| | 格納される配列。処理終了時に、
| | 各PE毎に異なる乱数列が返される。
-----------------------------------------------------------------
iN | 入力 | integer 型。配列 iA のサイズ。(iN >= 10000
| | を満たさないとエラーになる)
-----------------------------------------------------------------
iFlag | 入力 | integer 型。初期値生成アルゴリズムを選択
| | する配列(長さ2)。
| | 初期値生成法として選択できる設定法は以
| | 下の3つである.
| | 1) 乗算合同法
| | x(i) = 69069 x(i-1) mod (2^32)
| | 2) 乗算合同法
| | x(i) = 16807 x(i-1) mod (2^31-1)
| | 3) 並列高精度多倍長演算ルーチンを利用
| | して計算された円周率の値の一部
| |
| | 選択方法は、
| | iFlag(1) : 0 から 2 の整数値を与える。
| | 0 : 1) を利用 (デフォルト)
| | 1 : 2) を利用
| | 2 : 3) を利用
| |
| | iFlag(2) : 1) または 2)を初期値の設定
| | 方法とした場合は、種とし
| | て正の奇数を与える.
| | (デフォルトは31415927)
| | : 3) の場合は、利用したい部分
| | の位置(小数点以下の桁数)を
| | 与える。(デフォルトは 1)
-----------------------------------------------------------------
iErr | 出力 | integer型。エラーコード格納用。
| | 正常終了は 0
-----------------------------------------------------------------
●[テストプログラムについて]
本サブルーチンの利用例として、テストプログラム testrandom.f
が提供されている。以降にその利用法を述べる。
○ コンパイル方法
コマンドライン上で
% make
と入力する。
○ 実行方法
4プロセッサを用いて、パーテイション名 ALL にて実行する場合:
コマンドライン上で
% mpirun -np 4 -part ALL testrandom
と入力する。
このプログラムは、 1PE当たり10000個の乱数を求め、各PE
毎に得られた乱数列の先頭100個をPE番号0番から順に表示する。
出力先は標準出力である。
計算が正常になされるならば、以下のような結果が出力される。
PE i iA(i)
------------------------
0 1 1
0 2 2084265592
0 3 494679015
0 4 1013892360
0 5 2118758013
0 6 550066131
0 7 2026045680
0 8 1542658185
0 9 334299421
: (中略)
3 92 120253550
3 93 338481692
3 94 47726872
3 95 1700257893
3 96 976634696
3 97 227528772
3 98 1643174223
3 99 237487644
3 100 940176717
%
======
1998年 1月31日