(57)【特許請求の範囲】
【請求項１】
複数のプロセッサを有する並列計算機を使用して複数の位相種別を持つＭ系列乱数を生成する乱数生成システムにおいて、
生成するＭ系列乱数の位相の種別数と、複数のプロセッサのそれぞれがどの位相種別の乱数を生成するかを示す情報とを入力する手段を備え、前記複数のプロセッサのそれぞれは、一系列のＭ系列乱数を生成し、前記入力された位相の種別数の中の指定された位相種別のＭ系列乱数を当該プロセッサの乱数として、自プロセッサの処理に用いることを特徴とする乱数生成システム。
【請求項２】
複数のプロセッサを有する並列計算機を使用して複数の位相種別を持つＭ系列乱数を生成する乱数生成システムにおいて、
前記複数のプロセッサのそれぞれがどの位相種別の乱数を生成するかを示す情報を入力する手段を備え、前記複数のプロセッサのそれぞれは、使用するプロセッサ台数から生成する乱数の位相の種別数を求め、求めた位相の種別数の中の前記入力された情報により指定された位相種別の一系列のＭ系列乱数を生成し、該生成した位相種別のＭ系列乱数を当該プロセッサの乱数として、自プロセッサの処理に用いることを特徴とする乱数生成システム。
【請求項３】
複数のプロセッサを有する並列計算機を使用して複数の位相種別を持つＭ系列乱数を生成する乱数生成方法において、
生成するＭ系列乱数の位相の種別数と、複数のプロセッサのそれぞれがどの位相種別の乱数を生成するかを示す情報とを入力し、前記複数のプロセッサのそれぞれは、一系列のＭ系列乱数を生成し、前記入力された位相の種別数の中の指定された位相種別のＭ系列乱数を当該プロセッサの乱数として、自プロセッサの処理に用いることを特徴とする乱数生成方法。
【請求項４】
複数のプロセッサを有する並列計算機を使用して複数の位相種別を持つＭ系列乱数を生成する乱数生成方法において、
前記複数のプロセッサのそれぞれがどの位相種別の乱数を生成するかを示す情報を入力し、前記複数のプロセッサのそれぞれは、使用するプロセッサ台数から生成する乱数の位相の種別数を求め、求めた位相の種別数の中の前記入力された情報により指定された位相種別の一系列のＭ系列乱数を生成し、該生成した位相種別のＭ系列乱数を当該プロセッサの乱数として、自プロセッサの処理に用いることを特徴とする乱数生成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、乱数生成システム及び乱数生成方法に係り、特に、複数個のプロセッサを有する並列計算機上で、複数個の位相種別を持つＭ系列乱数を生成する乱数生成システム及び乱数生成方法に関する。
【０００２】
【従来の技術】
乱数生成方式に関する従来技術として、例えば、伏見正則著  「乱数」（東京大学出版）、特開平６−２０２８５６号公報等に記載された技術が知られている。前者の従来技術は、並列計算機上の各プロセッサが独立なＭ系列乱数を生成するために、それぞれのプロセッサが位相種別の異なるＭ系列乱数を生成する方式についての理論に関するものである。また、後者の従来技術は、並列計算機上のある１つのプロセッサが、他のプロセッサに対してお互いに独立な乱数を生成することができるように初期値を分配することによって、各プロセッサが、独立に乱数を生成することができるようにしたものであり、高速な乱数の生成を行うことができるものである。
【０００３】
【発明が解決しようとする課題】
前述した２つの従来技術による乱数生成方式は、並列計算機上の各プロセッサが、独立な乱数をそれぞれ独立な処理により生成することができるものであり、通信オーバーヘッドのない高速な乱数の生成処理が可能である。しかし、これらの従来技術は、どのプロセッサがどの乱数を生成するかを指定する手段がないため、プロセッサ番号が決まれば生成する乱数の種類が一意に決まってしまうものである。
【０００４】
一般に、乱数を生成しながらその乱数を使用して実行する数値シミュレーションの処理において、並列実行中にある特定のプロセッサで解が不当になった場合、解が不当になったプロセッサ上に他のプロセッサ上で生成した乱数を与えてシミュレーションを再実行することがその妥当性を検証する上で有効であることが知られている。このためには、どのプロセッサがどの乱数を生成しているかが明確である必要がある。
【０００５】
前述した従来技術による乱数生成方式は、どのプロセッサがどの乱数を生成するかを指定する手段がなく、また、これまで論理プロセッサ番号０番のプロセッサで生成していた乱数を、論理プロセッサ番号７番のプロセッサで生成するというような、プロセッサ間で生成する乱数を交換する手段がないため、前述したような数値シミュレーションを実行する並列計算機における乱数発生のために適用することが不適当であるという問題点を有している。
【０００６】
本発明の目的は、前述した従来技術の問題点を解決し、並列計算機を構成する複数個のプロセッサのそれぞれに、異なる位相種別を指定してその位相種別を持つＭ系列乱数を生成させ、かつ、各プロセッサに生成させる乱数の位相種別を変更することのできる乱数生成システム及び乱数生成方法を提供することにある。
【０００７】
【課題を解決するための手段】
本発明によれば前記目的は、複数のプロセッサを有する並列計算機を使用して複数の位相種別を持つＭ系列乱数を生成する乱数生成システムにおいて、生成するＭ系列乱数の位相の種別数と、複数のプロセッサのそれぞれがどの位相種別の乱数を生成するかを示す情報とを入力する手段を備え、前記複数のプロセッサのそれぞれが、一系列のＭ系列乱数を生成し、前記入力された位相の種別数の中の指定された位相種別のＭ系列乱数を当該プロセッサの乱数として、自プロセッサの処理に用いることにより達成される。
【０００８】
また、前記目的は、複数のプロセッサを有する並列計算機を使用して複数の位相種別を持つＭ系列乱数を生成する乱数生成システムにおいて、前記複数のプロセッサのそれぞれがどの位相種別の乱数を生成するかを示す情報を入力する手段を備え、前記複数のプロセッサのそれぞれが、使用するプロセッサ台数から生成する乱数の位相の種別数を求め、求めた位相の種別数の中の前記入力された情報により指定された位相種別の一系列のＭ系列乱数を生成し、該生成した位相種別のＭ系列乱数を当該プロセッサの乱数として、自プロセッサの処理に用いることにより達成される。
【０００９】
並列計算機を構成する各プロセッサは、生成するＭ系列乱数の位相の種別数と、論理プロセッサ番号と生成する乱数の位相種別との対応を示す情報とを入力として、自プロセッサがどの位相種別のＭ系列乱数を生成するかを示す位相種別管理テーブルを作成することにより、指定された位相種別の乱数を生成することができる。
【００１０】
また、入力する論理プロセッサ番号と生成する乱数の位相種別との対応を変更することにより、生成する乱数をプロセッサ間で交換することができる。
【００１１】
【発明の実施の形態】
以下、本発明による乱数生成方式の一実施形態を図面により詳細に説明する。
【００１２】
図１は本発明の一実施形態による乱数生成方式の処理を説明する図、図２はＭ系列乱数を生成する処理手順を説明する図、図３は本発明の一実施形態による乱数生成方式が適用される並列計算機の構成例を示すブロック図、図４は入力情報の一例を説明する図である。図１〜図４において、１０１は乱数生成処理部、１０２は位相種別管理テーブル作成処理部、１０３は初期値テーブル生成処理部、１０４は乱数生成演算部、１０５は情報入力部、１０６はプロセッサ台数、１０７は生成する乱数の個数、１０８は生成する乱数の位相の種別数、１０９はプロセッサ別位相種別情報、１１０は位相種別管理テーブル、１１１は初期値テーブル、１１２は情報出力部、１１３は乱数、２０１はＭ系列乱数生成のための漸化式、２０２は８種類位相種別に対応した初期値テーブル、２０３は合同乗算法による初期値テーブル作成のための漸化式、２０４はＭ系列乱数を利用した初期値テーブル作成のための漸化式、２０５〜２１２は位相種別１〜８の初期値テーブルＡ〜Ｈ、２１３は位相の種別数８種類に対応するのＭ系列乱数の漸化式、３０１〜３０８は論理プロセッサ番号０番〜７番のプロセッサ、３０９はネットワークまたはバス、３１０はネットワーク切り替えスイッチまたはメモリである。
【００１３】
図１に示す本発明の一実施形態による乱数生成方式は、入力された生成すべきＭ系列乱数の位相種別数と、論理プロセッサ番号と生成する乱数の位相種別との対応を示す情報とから、複数の各プロセッサが生成する乱数の位相種別を管理する位相種別管理テーブルを作成し、位相種別管理テーブルに格納されている位相種別に従って、初期値テーブルを生成した後乱数を生成するものである。
【００１４】
情報入力部１０５は、乱数生成処理部１０１に、並列処理で使用されるプロセッサ台数１０６、１プロセッサ当たりの生成する乱数の個数１０７、生成する乱数の位相の種別数１０８、どのプロセッサがどの位相種別の乱数を生成するかを示すプロセッサ別位相種別情報１０９を入力する。乱数生成処理部１０１は、入力された生成する乱数の位相の種別数１０８とプロセッサ別位相種別情報１０９とにより、各プロセッサがどの位相種別の乱数を生成するかを管理する位相種別管理テーブル１１０を作成する位相種別管理テーブル作成処理部１０２と、位相種別管理テーブル１１０に登録された情報から乱数を生成するための初期値テーブル１１１を作成する初期値テーブル生成処理部１０３と、生成した初期値テーブルからＭ系列乱数の規則に従って乱数を生成する乱数生成演算部１０４とにより構成される。情報出力部１１２は、各プロセッサが生成した乱数１１３を出力する。
【００１５】
なお、乱数生成処理部１０１は、ＨＤ、ＤＡＴ、ＦＤ、ＣＤ−ＲＯＭ等の記録媒体に格納されたプログラムであってよい。
【００１６】
次に、図２を参照して乱数生成演算部１０４におけるＭ系列乱数の生成規則、及び、８種類の位相の種別数のＭ系列乱数を生成する処理について説明する。
【００１７】
Ｍ系列乱数は、漸化式２０１によって生成される。漸化式２０１のＸは、初期値テーブルを意味する。位相の種別数が８種類のＭ系列乱数を生成する場合、８種類の初期値テーブルＡ２０５〜Ｈ２１２を有する初期値テーブル２０２が使用される。図２に示す例では、８種類の初期値テーブルＡ２０５〜Ｈ２１２のそれぞれには、５１２の乱数としても使用可能な初期値が格納される。そして、テーブル２０２内の８種類の初期値テーブルＡ２０５〜Ｈ２１２のそれぞれには、丸付数字の順に次の手順で値が格納される。
【００１８】
丸付数字の１から５２１には、合同乗算法の漸化式２０３で生成した乱数を格納する。また、丸付数字の５２２から４１６８には、合同乗算法２０３で生成した丸付き数字１から５２１までに格納されている乱数を初期値テーブルとして、Ｍ系列乱数の漸化式２０４で生成した乱数を格納する。この結果、初期値テーブル２０２には、位相種別１〜８の初期値テーブルＡ２０５〜Ｈ２１２を得ることができる。これらの初期値テーブルＡ２０５〜Ｈ２１２をＭ系列乱数の漸化式２０１に適用することにより、位相種別１〜８の８種類のＭ系列乱数を生成する漸化式２１３を得ることができる。
【００１９】
図３に示す本発明の一実施形態による乱数生成方式が適用される並列計算機は、論理プロセッサ番号０番〜７番のプロセッサ３０１〜３０８をネットワークまたはバス３０９で接続して構成されており、図３において、３０９がネットワークの場合、３１０はネットワーク切り替えスイッチを意味し、３０９がバスの場合、３１０はメモリを意味する。そして、０番の論理プロセッサ３０１〜７番の論理プロセッサ３０８の８個のプロセッサは、本発明の実施形態による乱数の生成を行う。
【００２０】
図２により説明した情報入力部１０５から入力される入力情報の具体的な例が図４に示されている。この例は、図３により説明した並列計算機に本発明の実施形態による乱数生成を行わせる場合の例であり、並列処理で使用するプロセッサ台数１０６に８台、各プロセッサが生成する乱数の個数１０７に５００個、生成する乱数の位相の種別数１０８に８種類を指定している。また、プロセッサ別位相種別情報１０９には、論理プロセッサ番号０番〜７番の各プロセッサのそれぞれが、位相種別１〜８の乱数を生成することが指定されている。
【００２１】
次に、並列計算機を構成する１つの論理プロセッサによる乱数生成の処理動作を説明する。
【００２２】
図５は論理プロセッサ番号０番のプロセッサ３０１における位相種別管理テーブル作成処理部１０２の処理を説明する図、図６は論理プロセッサ番号０番のプロセッサ３０１における初期値テーブル生成処理部１０３の処理を説明する図、図７は各プロセッサの初期値テーブル生成処理部１０２が生成した初期テーブルを示す図である。
【００２３】
図５に示すように、論理プロセッサ番号０番のプロセッサ３０１は、情報入力部１０５からの入力情報として、プロセッサ台数情報１０６としてＮＰＵ：８、生成する乱数の位相種別数情報１０８としてＮＰ：８、プロセッサ別位相種別情報１０９として、論理プロセッサ番号０番〜７番の各プロセッサのそれぞれが、位相種別１〜８の乱数を生成するという情報を受け取る。
【００２４】
プロセッサ３０１の位相種別管理テーブル作成処理部１０２は、まず、入力情報により指定された、生成する乱数の位相の種別数ＮＰが０でないか否かを、ステップ５０１でチェックして位相種別管理テーブル１１０に格納する生成する乱数の位相の種別数ＮＴ５０５を求める。すなわち、入力情報の中の生成する乱数の位相の種別数ＮＰが０でない場合は、ステップ５０３で生成する乱数の位相の種別数ＮＰ１０６の値をそのままとして、位相管理テーブル１１０中の生成する乱数の位相の種別数ＮＴ５０５に格納する。
【００２５】
入力情報の中の生成する乱数の位相の種別数ＮＰが０の場合、種別数ＮＰが指定されておらず、プロセッサ３０１に決定を任されることを意味し、プロセッサ３０１は、ステップ５０２で入力情報の中のプロセッサ台数ＮＰＵ以上の数で最小の２のベキ数５０２を求めて、この値を位相種別管理テーブル１１０中の生成する乱数の位相の種別数ＮＴ５０５に格納する。
【００２６】
次に、プロセッサ３０１は、プロセッサ別位相種別情報１０９の中の、自プロセッサの論理プロセッサ番号に該当する位相種別を、ステップ５０４で位相種別管理テーブル１１０の中の生成する乱数の位相種別ＮＩＳ５０６に格納する。なお、ここで、ＭＥは自プロセッサの論理プロセッサ番号を示す。
【００２７】
前述した処理により、論理プロセッサ番号０番のプロセッサ３０１は、自プロセッサが持つ位相種別管理テーブル１１０として、生成する乱数の位相の種別数５０５が８種類であり、自プロセッサが生成する乱数の位相種別ＮＩＳ５０６が８種類の位相種別のうち１であるという情報を格納したテーブルを得ることができる。
【００２８】
次に、図６を参照して、論理プロセッサ番号０番のプロセッサ３０１の初期値テーブル生成処理部１０３における処理動作を説明する。
【００２９】
論理プロセッサ番号０番のプロセッサ３０１の初期値テーブル生成処理部１０３は、位相種別管理テーブル作成処理部１０２が前述した処理により作成した位相種別管理テーブル１１０の生成する乱数の位相の種別数５０５が８種類であることから、位相別初期値生成処理部６０３に８種類の位相種別に対応する初期値テーブル６０５をＭ系列乱数の規則に従って生成させる。この初期値テーブル６０５の生成は、図２により説明したと同様に行われる。また、テーブル内の丸付き数字は、図２に示すＭ系列乱数の規則に従って位相の種別数８個分の初期値テーブルを作成する場合の、初期値を求める順番を表しており、この例における初期値テーブルは、図２に示す初期値テーブル２０２と同一となる。
【００３０】
初期値テーブル選択処理部６０４は、位相種別管理テーブル１１０の生成する乱数の位相種別５０６が１であることから、８種類の初期値テーブル６０５の中から、位相種別１に対応する初期値テーブル６０６を選択し、論理プロセッサ番号０番のプロセッサで使用する初期値テーブル６０７として出力する。
【００３１】
前述において、論理プロセッサ番号０番のプロセッサ３０１が、位相種別ごとの初期値テーブルを生成し、自プロセッサで必要とする位相種別の初期値テーブルを出力する処理を説明したが、並列計算機を構成する各プロセッサは、前述と同様な処理を行って、自プロセッサが必要とする位相種別の初期値テーブルを出力する。
【００３２】
図７は図３に示すように構成された並列計算機における各プロセッサが、自プロセッサの初期値テーブル生成処理部１０３で初期テーブルを生成した状態を示している。すなわち、論理プロセッサ番号０〜７番のプロセッサ３０１〜３０８のそれぞれは、位相種別１〜８のそれぞれ対応する初期値テーブル７０１〜７０８を生成し、これらの初期値テーブルを保持している。各プロセッサは、それぞれの初期値テーブルに格納されたデータをテーブルの上位欄から順に乱数として使用することができ、また、乱数生成演算部１０４により、図２により説明したＭ系列乱数の規則にしたがって、さらに多数の乱数を独立に生成することができる。
【００３３】
次に、プロセッサ間で生成する乱数を交換する処理を、論理プロセッサ番号０番のプロセッサと論理プロセッサ番号７番のプロセッサとが生成する乱数を交換するものとして図面により説明する。
【００３４】
図８は論理プロセッサ番号０番のプロセッサにおける位相種別管理テーブル作成処理部の処理を説明する図、図９は論理プロセッサ番号７番のプロセッサにおける位相種別管理テーブル作成処理部の処理を説明する図、図１０は論理プロセッサ番号０番のプロセッサにおける初期値テーブル生成処理部の処理を説明する図、図１１は論理プロセッサ番号８番のプロセッサにおける初期値テーブル生成処理部の処理を説明する図である。
【００３５】
図４により説明した入力情報のプロセッサ別位相種別情報１０９は、論理プロセッサ番号０番のプロセッサが位相種別１、論理プロセッサ番号７番のプロセッサが位相種別８の乱数を生成することを指定していたが、論理プロセッサ番号０番と論理プロセッサ番号７番の生成する乱数とを交換する場合、図８に示すように、プロセッサ別位相種別情報１０９の論理プロセッサ番号０番に対応する位相種別８０２に８、論理プロセッサ番号７番に対応する位相種別８０３に１が指定される。
【００３６】
論理プロセッサ番号０番のプロセッサ３０１は、前述のプロセッサ別位相種別情報１０９を使用して、位相種別管理テーブル作成処理部１０２が、図５により説明したと同様の処理を行うことにより、図８に示すような、生成する乱数の位相の種別数５０５が８、生成する位相種別５０６が８に指定された自プロセッサで使用する位相種別管理テーブル１１０を作成する。
【００３７】
論理プロセッサ番号７番のプロセッサ３０８は、図９に示すように、論理プロセッサ番号０番のプロセッサ３０１と同一の内容を持つプロセッサ別位相種別情報１０９が与えられ、位相種別管理テーブル作成処理部１０２が、図５により説明したと同様の処理を行うことにより、図９に示すような、生成する乱数の位相の種別数５０５が８、生成する位相種別５０６が１に指定された自プロセッサで使用する位相種別管理テーブル１１０を作成する。
【００３８】
図１０に示すように、論理プロセッサ番号０番のプロセッサ３０１は、図８により説明した処理により作成した自プロセッサで使用する位相種別管理テーブル１１０を使用し、初期値テーブル生成処理部１０３が、生成する乱数の位相の種別数５０５に８種類が指定されているので、８種類の位相種別毎の初期値テーブル１００１〜１００４を生成し、自プロセッサで生成する乱数の位相の種別５０６として８が指定されていることにより、位相種別８の初期値テーブル１００４を自プロセッサで使用する初期値テーブル１００５として出力する。
【００３９】
一方、図１１に示すように、論理プロセッサ番号７番のプロセッサ３０８は、図９により説明した処理により作成した自プロセッサで使用する位相種別管理テーブル１１０を使用し、初期値テーブル生成処理部１０３が、生成する乱数の位相の種別数５０５に８種類が指定されているので、８種類の位相種別毎の初期値テーブル１００１〜１００４を生成し、自プロセッサで生成する乱数の位相の種別５０６として１が指定されていることにより、位相種別１の初期値テーブル１００１を自プロセッサで使用する初期値テーブル１００５として出力する。
【００４０】
図８〜図１１により説明した例は、入力情報のプロセッサ別位相種別情報における論理プロセッサ番号と位相種別の番号との対応を変更することにより、論理プロセッサ番号０番のプロセッサ３０１が生成していた位相種別の乱数を、論理プロセッサ番号７番のプロセッサ３０８に生成させ、逆に、論理プロセッサ番号７番のプロセッサ３０８が生成していた位相種別の乱数を、論理プロセッサ番号０番のプロセッサ３０１が生成させるとしたが、本発明は、入力情報のプロセッサ別位相種別情報における論理プロセッサ番号と位相種別の番号との対応を変更するだけで、任意のプロセッサに任意の位相種別の乱数を生成させることができる。
【００４１】
【発明の効果】
以上説明したように本発明によれば、並列計算機上の各プロセッサが位相種別の異なるＭ系列乱数を生成する場合、位相の種別数とプロセッサと位相種別との関係を任意に指定して、各プロセッサに乱数の生成を行わせることができる。
【００４２】
並列計算機上における乱数生成は、生成処理の高速化に加え、生成した乱数を使用した数値シミュレーション結果の妥当性を検証するために、生成する乱数をプロセッサ間で交換することも重要である。本発明によれば、任意のプロセッサ間で生成する乱数を交換することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態による乱数生成方式の処理を説明する図である。
【図２】Ｍ系列乱数を生成する処理手順を説明する図である。
【図３】本発明の一実施形態による乱数生成方式が適用される並列計算機の構成例を示すブロック図である。
【図４】入力情報の一例を説明する図である。
【図５】論理プロセッサ番号０番のプロセッサ３０１における位相種別管理テーブル作成処理部１０２の処理を説明する図である。
【図６】論理プロセッサ番号０番のプロセッサ３０１における初期値テーブル生成処理部１０３の処理を説明する図である。
【図７】各プロセッサの初期値テーブル生成処理部１０２が生成した初期テーブルを示す図である。
【図８】論理プロセッサ番号０番のプロセッサにおける位相種別管理テーブル作成処理部の処理を説明する図である。
【図９】論理プロセッサ番号７番のプロセッサにおける位相種別管理テーブル作成処理部の処理を説明する図である。
【図１０】論理プロセッサ番号０番のプロセッサにおける初期値テーブル生成処理部の処理を説明する図である。
【図１１】論理プロセッサ番号８番のプロセッサにおける初期値テーブル生成処理部の処理を説明する図である。
【符号の説明】
１０１  乱数生成処理部
１０２  位相種別管理テーブル作成処理部
１０３  初期値テーブル生成処理部
１０４  乱数生成演算部
１０５  情報入力部
１０６  プロセッサ台数
１０７  生成する乱数の個数
１０８  生成する乱数の位相の種別数
１０９  プロセッサ別位相種別情報
１１０  位相種別管理テーブル
１１１  初期値テーブル
１１２  情報出力部
１１３  乱数
２０１  Ｍ系列乱数生成のための漸化式
２０２  ８種類位相種別に対応した初期値テーブル
２０３  合同乗算法による初期値テーブル作成のための漸化式
２０４  Ｍ系列乱数を利用した初期値テーブル作成のための漸化式
２０５〜２１２  位相種別１〜８の初期値テーブルＡ〜Ｈ
２１３  位相の種別数８種類に対応するのＭ系列乱数の漸化式
３０１〜３０８  論理プロセッサ番号０番〜７番のプロセッサ
３０９  ネットワークまたはバス
３１０  ネットワーク切り替えスイッチまたはメモリ
【図１】
0003539870.tif 000002
【図２】
0003539870.tif 000003
【図３】
0003539870.tif 000004
【図４】
0003539870.tif 000005
【図５】
0003539870.tif 000006
【図６】
0003539870.tif 000007
【図７】
0003539870.tif 000008
【図８】
0003539870.tif 000009
【図９】
0003539870.tif 000010
【図１０】
0003539870.tif 000011
【図１１】
0003539870.tif 000012