Index of /staff/pdc/B

      Name                    Last modified       Size  Description

[DIR] Parent Directory 06-Mar-2000 11:06 - [TXT] Makefile 26-Oct-1999 18:40 2k [TXT] leapflogMseq.f 26-Oct-1999 21:55 25k [TXT] mpif.h 26-Oct-1999 18:41 5k [TXT] mppf.f 26-Oct-1999 21:53 9k [TXT] mppf.h 26-Oct-1999 18:41 6k [TXT] pi.dat 26-Oct-1999 18:41 1.0M [TXT] 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日