• 検索結果がありません。

そこでATMでは、一様乱数は現在xorshift(Presset al., 1996

N/A
N/A
Protected

Academic year: 2021

シェア "そこでATMでは、一様乱数は現在xorshift(Presset al., 1996"

Copied!
2
0
0

読み込み中.... (全文を見る)

全文

(1)

気象研究所技術報告 第84号 2021

付録 G 乱 数

ATMでは、いくつかの箇所で擬似乱数を扱っている。例えば、ATM本体に含まれる拡散過程(第2章)や、ESP を用いて初期値(第3章)を作成する際のトレーサーの配置や粒径分布などである。Fortranには擬似乱数を生成 する組込みサブルーチンとしてrandom numberが用意されているものの高速で高品質な擬似乱数を生成し、また、

MPI並列化(付録H.1)における各プロセスごとに異なる擬似乱数を扱うためには、組込みサブルーチンとは別の擬 似乱数生成器が必要である1。そこでATMでは、一様乱数は現在xorshiftPresset al., 1996; Marsaglia, 2003)と 呼ばれる擬似乱数生成器で作成し、正規乱数はxorshiftで作成された一様乱数を使って、Box-Muller法(Box and Muller, 1958)を用いて作成している。正規乱数については、以前のモデル(GATM, RATM)で使われていた方法 であるが、xorshiftは今回のモデル更新の際に新たに採用した擬似乱数生成器であり、比較的最近の手法であるため、

ここで簡単に特徴を述べる。

G.1 一様乱数(Xorshift

Marsaglia (2003)によって開発された擬似乱数生成器であるxorshiftのアルゴリズムは、排他的論理和とビッ トシフトのみから構成され処理速度が速く2、高速な計算が求められるATMに適していると考え採用した。また、

xorshiftで作られる擬似乱数は乱数としての精度(規則性のなさなど真の乱数が満たすべき性質の再現性)も高く、

擬似乱数を多用するATMには適している。Marsaglia (2003)によるとxorshiftは、周期に関して3つのオプション が存在し、それぞれの周期は、2321264121281である。ATMでは、最も周期の短い2321を採用して いるが、それでも43億程度である。この周期は、数10万から数100万程度の粒子数を計算するには十分な長さであ るが、将来的により周期の長いオプションに変更する可能性はある3

Xorshiftは、乱数シード(s=s0)を入力値として与え、そのシードに対応した乱数x0を出力し、同時にシードが s=s1に更新される仕様になっている。新たに乱数を取得したいときは、更新されたシードs=s1xorshiftに入 力すると、新たな乱数x1が出力され、同時にシードがs=s2に更新される。更新されたシードs=s2は次の擬似乱 x2を取得するために使われる。このように、xorshiftでは、初期のシード(0以外の整数)を決定し、そのシード sを更新しながら対応する新たな乱数を取得する仕組みとなっている4

Figure G.1に実際にATMのコード(抜粋)を示す5ATMで行う計算では、トレーサーの数だけの乱数が必要と なる状況が多いため、n max個の1次元配列の擬似乱数(0以上1以下)を返り値とするサブルーチンを実装してい 6。また、seed(乱数シード)が入力値であり、作成された擬似乱数の数だけ更新されるので、n max回更新された seedが返り値になる。なお、Figure G.129から33行目までは本来ならば不要である処理であるが、どのような 状況になっても異常終了させないための例外処理であり、0未満または1より大きい擬似乱数が生成されてしまった 場合は0.5を返すようにしている(実際には、このif文は通過しない)。

1プロセスごとに異なる擬似乱数を使うためには、seedを陽に管理する必要がありrandom numberは使えない。

2気象研究所の現有サーバ「リモートセンシングによる噴煙状態解析装置」(Intel®Xeon®Gold 6138 (3.7 GHz)搭載)で実行したところ、1 億個の乱数を10回作成するのにかかる時間は4秒程度であった。

3一回の計算の中で同じ乱数が使われても直ちに問題になるわけではない。例えば、初期値の粒径分布に使われる乱数と、予報の途中で拡散計算に 使われる乱数に一部重複があっても問題にはならないだろう。

4プロセスごとに初期の乱数シードを異なる値にする必要があることに注意。

5コード内の整数・実数の精度については、sp=4,rp=8である(Table C.4)。また装置番号は、非MPI環境では、io mpi log=6である。

6つまり、このサブルーチンはn maxはトレーサー数(n tracer)で呼ばれることがほとんどである。

- 119 -

(2)

気象研究所技術報告 第84号 2021

1 ! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 2 ! B a s e d on M a r s a g l i a ( 2 0 0 3 ) " X o r s h i f t R N G s "

3 ! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 4 s u b r o u t i n e x o r s h i f t 3 2 _ r n g ( harvest , n_max , s e e d )

5

6 r e a l ( rp ) , i n t e n t ( out ) :: h a r v e s t (1: n _ m a x ) 7 i n t e g e r ( sp ) , i n t e n t ( in ) :: n _ m a x 8 i n t e g e r ( sp ) , i n t e n t ( i n o u t ):: s e e d

9

10 i n t e g e r ( sp ) :: nn

11 i n t e g e r ( sp ) :: y !! 32 bit I n t e g e r

12 i n t e g e r ( sp ) , p a r a m e t e r :: n _ 3 2 b i t = 2 1 4 7 4 8 3 6 4 7 !! 2 * * 3 2 / 2 - 1

13 r e a l ( rp ) , p a r a m e t e r :: inv = 1. _rp / ( 2. _rp * r e a l ( n_32bit , rp ) ) 14

15 ! - - - - 16 ! I n i t i a l i z e

17 ! - - - -

18 y = s e e d

19 ! - - - - 20 ! X o r s h i f t a l g o r i t h m for s e e d y

21 ! - - - -

22 do nn = 1 , n _ m a x

23 y = i e o r ( y , i s h f t ( y , + 1 3 ) ) 24 y = i e o r ( y , i s h f t ( y , -17)) 25 y = i e o r ( y , i s h f t ( y , + 5)) 26

27 h a r v e s t ( nn ) = inv * r e a l ( y , rp ) + 0.5 _rp 28

29 if ( h a r v e s t ( nn ) < 0. _rp . or . 1. _rp < h a r v e s t ( nn ) ) t h e n 30 w r i t e ( i o _ m p i _ l o g , *) " W A R N I N G : R A N D O M N U M B E R G E N E R A T I O N "

31 w r i t e ( i o _ m p i _ l o g , *) " SEED , N , Y , H A R V E S T = " , seed , nn , y , h a r v e s t ( nn )

32 h a r v e s t ( nn ) = 0.5 _rp

33 end if

34 end do

35 ! - - - - 36 ! U p d a t e s e e d for n e x t c a l l

37 ! - - - -

38 s e e d = y

39

40 r e t u r n

41 end s u b r o u t i n e x o r s h i f t 3 2 _ r n g

Figure G.1 Xorshift RNGs implemented in the JMA-ATM

- 120 -

Figure G.1 Xorshift RNGs implemented in the JMA-ATM

参照

関連したドキュメント

 中国では漢方の流布とは別に,古くから各地域でそれぞれ固有の生薬を開発し利用してきた.なかでも現在の四川

私はその様なことは初耳であるし,すでに昨年度入学の時,夜尿症に入用の持物を用

実際, クラス C の多様体については, ここでは 詳細には述べないが, 代数 reduction をはじめ類似のいくつかの方法を 組み合わせてその構造を組織的に研究することができる

未記入の極数は現在計画中の製品です。 極数展開のご質問は、

We observe that the elevation of the water waves is in the form of traveling solitary waves; it increases in amplitude as the wave number increases k, as shown in Figures 3a–3d,

これはつまり十進法ではなく、一進法を用いて自然数を表記するということである。とは いえ数が大きくなると見にくくなるので、.. 0, 1,

今回、子ども劇場千葉県センターさんにも組織診断を 受けていただきました。県内の子ども NPO

FEED (FRONT END ENGINEERING DESIGN) – TOPSIDE FACILITIES AND NAVAL &amp; STRUCTURE (FLOATING PRODUCTIO SYSTEMS, FIXED. PRODUCTION SYSTEMS