JP2006155168A - 乱数生成方法及びシステム - Google Patents

乱数生成方法及びシステム Download PDF

Info

Publication number
JP2006155168A
JP2006155168A JP2004344016A JP2004344016A JP2006155168A JP 2006155168 A JP2006155168 A JP 2006155168A JP 2004344016 A JP2004344016 A JP 2004344016A JP 2004344016 A JP2004344016 A JP 2004344016A JP 2006155168 A JP2006155168 A JP 2006155168A
Authority
JP
Japan
Prior art keywords
random number
random
unit
storage table
simulation calculation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004344016A
Other languages
English (en)
Inventor
Rikika Wada
力佳 和田
Takenori Shimozaka
健則 下坂
Yoshiyuki Hayashida
義幸 林田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2004344016A priority Critical patent/JP2006155168A/ja
Publication of JP2006155168A publication Critical patent/JP2006155168A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】キャッシュメモリを有する計算機上で、入力データの集合から乱数を用いて要素の無作為抽出を繰り返すシミュレーション計算を行う際に、キャッシュメモリを活用して性能を向上させるために、入力データに対するアクセスを局所化する。
【解決手段】乱数を生成する乱数集合生成部102と、生成された乱数を格納する乱数集合格納テーブル109と、並列処理による乱数へのアクセスパターンを、識別番号記憶テーブル110と、アクセス順序記憶テーブル111として取得するアクセス情報記録部115と、アクセス情報記録部115で取得した情報に基づき、乱数集合格納テーブル109内の乱数を自動的に整列する整列処理部106とを具備した乱数生成システム101をシミュレーション計算システム114に接続して構成される。
【選択図】 図1

Description

本発明は、乱数生成方法及びシステムに係り、特に、乱数を使用するシミュレーションを行うシステムに対して入力する乱数の生成に使用して好適な乱数生成方法及びシステムに関する。
近年、一般にモンテカルロ法と呼ばれている乱数を使用するシミュレーション計算の技術が、分子計算、金融計算の分野でよく利用されている。シミュレーションで使用する乱数は、物理乱数、擬似乱数、準乱数等がある。本発明により生成する乱数は、擬似乱数に係るものであり、疑似乱数の生成方法に関する従来技術として、例えば、非特許文献1等に記載されたM系列乱数生成法、非特許文献2等に記載されたメルセンヌツイスター法等の技術がよく知られている。そして、非特許文献1、非特許文献2に記載の乱数生成方法は、いずれも、線形漸化式で生成した乱数を生成した順番に出力するものである。
一方、乱数を使用するシミュレーション計算の技術として、特に、大規模な入力データの集合から乱数を用いた要素の無作為抽出と計算とを繰り返す処理を持ち、乱数による入力データの抽出及び計算部分の処理が独立であって、この部分の並列化が可能な技術が知られている。このような構成を持つシミュレーション計算システムは、入力される乱数として、従来、線形漸化式で生成して順番に出力された乱数をそのまま使用していた。
T. G. Lewis and W. H. Payne. Generalized Feedback Shift Register Pseudorandom Number Algorithm. Journal of the ACM, 20(3):456-468, July 1973. M. Matsumoto and T. Kurita: "Mersenne Twister: A 623-dimensionally equidistributed uniform pseudorandom number generator", ACM Transactions on Modeling and Computer Simulations (1998).
一般に、キャッシュメモリを有する計算機は、メモリへアクセスする順番が連続であればメモリ参照の局所性が向上し、その性能を向上させることができるという特徴を持っていることが知られている。
前述のようなキャッシュメモリを有する逐次計算機上に、従来技術で示したようなシミュレーション計算システムを構築して、シミュレーションを実行させる際に、生成された順に格納された乱数列をそのまま利用すると、シミュレーションの入力データの集合に対するアクセスの順序に規則性がほとんどないため、計算機が持つキャッシュメモリを有効に生かすことができないという問題が生じる。
同様に、キャッシュメモリを有する並列計算機上で、乱数集合に対するアクセスを並列化したシミュレーションを実行させる場合にも、並列処理時入力並列計算機を構成する全てのプロセッサについて、シミュレーションの入力データの集合に対するアクセスの順序に規則性がほとんどないため、前述した逐次計算機の場合と同様の問題が発生する。
本発明の目的は、前述した従来技術の問題にを解決し、キャッシュメモリを有する逐次計算機上あるいは並列計算機上に構築された大規模な入力データの集合から乱数を用いた要素の無作為抽出と計算とを繰り返す処理を行うシミュレーション計算システムに入力して好適な乱数を発生する乱数生成方法及びシステムを提供することにある。
本発明によれば前記目的は、シミュレーション計算システムが使用する乱数の集合を発生する乱数生成システムにおける乱数生成方法において、前記乱数生成システムが、前記シミュレーション計算システムから受け取った計算回数と乱数集合の要素番号とに基づいて、識別番号とアクセス順序とを取得し、取得した識別番号とアクセス順序との情報に基づいて、生成した乱数集合を整列したものとし、整列した乱数集合内の乱数を前記シミュレーション計算システムに対して出力することにより達成される。
また、前記目的は、大規模な入力データの集合から乱数を用いた要素の無作為抽出と計算とを繰り返す処理を行い、乱数による入力データの抽出及び計算部分の処理を複数の独立した処理部で並列実行するシミュレーション計算システムが使用する乱数の集合を発生する乱数生成システムにおける乱数生成方法において、前記乱数生成システムが前記シミュレーション計算システムの前記処理部のそれぞれから受け取った計算回数と乱数集合の要素番号とに基づいて、識別番号とアクセス順序とを取得し、取得した識別番号とアクセス順序との情報に基づいて、生成した乱数集合を整列したものとし、整列した乱数集合内の乱数を前記シミュレーション計算システムの前記処理部のそれぞれに対して出力することにより達成される。
また、前記目的は、シミュレーション計算システムが使用する乱数の集合を発生する乱数生成システムにおいて、生成した乱数の集合を格納する乱数集合格納テーブルと、前記シミュレーション計算システムから受け取った計算回数と乱数集合の要素番号とに基づいて、識別番号とアクセス順序とを取得し、識別番号記憶テーブルとアクセス順序記憶テーブルに格納するアクセス情報記録部と、このアクセス情報記録部で取得した識別番号とアクセス順序との情報に基づいて、生成した前記乱数集合格納テーブル内の乱数集合を整列する整列処理部と、整列した乱数集合内の乱数を前記シミュレーション計算システムに対して出力する手段とを備えることにより達成される。
本発明によれば、キャッシュメモリを有する逐次計算機上あるいは並列計算機上に構築された大規模な入力データの集合から乱数を用いた要素の無作為抽出と計算とを繰り返す処理を行うシミュレーション計算システムに使用した場合に、入力データに対するアクセスを局所化するように、自動的に整列した乱数列を生成することができ、シミュレーション計算システムの性能の向上を図ることができる。
以下、本発明による乱数生成方法及びシステムの実施形態を図面により詳細に説明する。
本発明による乱数生成方法及びシステムを用いて生成した乱数を用いるシミュレーション計算システムは、入力データを乱数により間接的に参照することができ、乱数による入力データの参照及びシミュレーションの計算の部分が乱数毎に独立に計算可能で、この部分の並列化が可能なものを想定している。また、このシミュレーション計算システムは、乱数の値を入力データの集合が持つ要素番号に容易に変換するために、上限及び下限が決まっている乱数を用いることとしている。
生成する乱数集合と参照する入力データとの関係には、どちらを繰り返し適用するかにより、一対多、多対一、多対多の計算の場合がある。多対多の計算とは、入力データの組を複数持ち、入力データのそれぞれの組に対し、複数回生成した乱数集合のそれぞれを用いて間接的な参照を複数回繰り返すような計算の場合である。
以下に説明する本発明の実施形態は、シミュレーション計算における乱数集合と入力データとの関係が1対多の場合であり、入力データの組を複数もち、入力データのそれぞれの組に対し、1つの乱数集合を用いて間接的な参照を行ってシミュレーション計算を行うシミュレーション計算システムに適用されるものとする。そして、本発明の一実施形態による乱数生成システム及びそれを利用するシミュレーション計算システムは、複数のプロセッサ(物理的なプロセッサであっても、論理的なプロセッサであってもよい)を持つ並列計算機上に実装されるものとしている。
図1は本発明の一実施形態による乱数生成システムとそれを利用するシミュレーション計算システムを実装した並列計算機との主記憶装置上の構成を示すブロック図である。図1において、101は乱数生成システム、102は乱数集合生成部、103は整列効果推定部、104は乱数取得部、105はアクセス情報記録部、106は整列処理部、107は識別番号、108はアクセス回数記憶カウンタ、109は乱数集合格納テーブル、110は識別番号記憶テーブル、111はアクセス順序記憶テーブル、112は整列状態フラグ、113は整列効果推定テーブル、114はシミュレーション計算システム、115は入力データ組格納テーブル、116は乱数生成要求部、117は乱数参照部、118はデータ取得部、119は計算部、120は入力部、121は出力部、122は乱数生成用システム接続部、123は乱数取得用システム接続部、124は部分シミュレーション処理部である。
乱数生成システム101は、乱数集合生成部102、整列効果推定部103、複数の乱数取得部104、乱数集合格納テーブル109、識別番号記憶テーブル110、アクセス順序記憶テーブル111、整列状態フラグ112、整列効果推定テーブル113により構成される。乱数取得部104は、アクセス情報記録部105、整列処理部106、識別番号107、アクセス回数記憶カウンタ108により構成される。
シミュレーション計算システム114は、入力データ組格納テーブル115、乱数生成要求部116、複数の部分シミュレーション処理部124、入力部120、出力部121を備えて構成される。複数の部分シミュレーション処理部124のそれぞれは、乱数参照部117、データ取得部118、計算部119により構成され、それぞれが専用の図示しないキャッシュメモリを備えている。
シミュレーション計算システム114は、乱数参照部117、データ取得部118及び計算部119を持つ部分シミュレーション処理部124をP個持ち、これらを並列に動作させることが可能である。そして、乱数生成システム101の乱数集合生成部102とシミュレーション計算システム114の乱数生成要求部116とは乱数生成用システム接続部122により接続され、乱数生成システム101の複数の乱数取得部104のそれぞれとシミュレーション計算システム114の部分シミュレーション処理部124のそれぞれとは、1対1に対応付けられて、乱数取得用システム接続部123により接続されている。
乱数生成システム101における乱数集合生成部102と複数の乱数取得部104とは、シミュレーション計算システム114と接続するためのインターフェースとして設けられている。そして、乱数集合生成部102は、乱数生成用システム接続部122を介して、乱数生成要求部116からの乱数生成の要求を受け付ける。このとき、生成する乱数の個数Nと、整列による効果の有無を推測するための入力データ数D及び並列実行数Pとをあわせて受信する。乱数集合生成部102は、N個の乱数を生成し、生成した乱数を乱数集合格納テーブル109に格納する。乱数集合格納テーブル109は、生成した乱数集合を格納するためのテーブルであり、乱数の個数Nに等しい個数の値を格納することができ、それぞれの値には1〜Nの範囲で要素番号が付けられている。
乱数取得部104は、乱数取得用システム接続部123を介して、部分シミュレーション処理部124内の乱数参照部117からの乱数の取得要求を受け付ける。このとき、乱数取得部104は、乱数集合格納テーブル109に対応する要素番号nと、計算回数cをあわせて受信する。乱数取得部104は、乱数生成システム101で生成され乱数集合格納テーブル109に格納された乱数を、前述の要素番号nを参照し、乱数集合格納テーブル109のn番目の要素から取得し、その乱数の値を、乱数取得用システム接続部123を介して乱数参照部117に送信すると共に、計算回数cを参照して、c=1である間、アクセス情報記録部105での処理を実行し、初めてc=2になったときに、整列処理部106での処理を実行する。ここで、計算回数cは、1組の入力データに対する計算全体を1回として扱ったときの計算の回数と等しい。
シミュレーション計算システム114は、入力データ組格納テーブル115を持ち、乱数を用いた間接参照により、入力データの組を1組ずつ取り出して計算を繰り返す。入力データ組格納テーブル115は、入力データD個を1組として、それをC組持つ。
シミュレーション計算システム114は、入力部120と出力部121とを持ち、入力部120と出力部121は、データの初期値入力と計算結果の出力とを行うためのインターフェースとして設けられている。また、シミュレーション計算システム114における乱数生成要求部116と乱数参照部117とは、乱数生成システム101と接続するためのインターフェースとして設けられている。
入力部120は、入力データ組格納テーブル115に格納するためのデータや計算で用いる乱数の個数Nをはじめとするシミュレーション固有のパラメータの入力を受け付け、また、出力部121は計算結果を出力する。乱数生成要求部116は、乱数生成用システム接続部122を介して、乱数生成システム101に対し乱数生成を要求する。このとき、乱数生成要求部116は、生成する乱数の個数Nと、整列による効果の有無を推測するための入力データ数D及び並列実行数Pとをあわせて送信する。
乱数参照部117は、乱数取得用システム接続部123を介して乱数取得部104に対して乱数参照を要求する。このとき、乱数参照部117は、生成した乱数集合に対して参照する要素番号nと、計算回数cとを送信する。この操作により、乱数参照部117は、乱数取得用システム接続部123を介して乱数取得部104から乱数の値を1つ受信することができる。データ取得部118は、乱数参照部117で得られた乱数を入力データ組格納テーブル115に対する要素番号dに変換して、入力データ組格納テーブル115の要素番号dの要素を得る。計算部119は、データ取得部118で得られた入力データを用いて、シミュレーション固有の計算を行う。
なお、シミュレーション計算システム114は、入力データ組格納テーブル115に格納されたD個のデータの全てのデータに対してシミュレーション計算を行うものではなく、乱数生成システム101から得られる乱数により、D個のデータの一部をデータ全体から均等に抽出して、抽出されたデータに対してシミュレーション計算を行うものである。また、データ取得部118は、入力データ組格納テーブル115からデータを取り込む際に、キャッシュメモリを用いるが、使用されるキャッシュメモリの容量は、入力データ組格納テーブル115に格納されるD個のデータの全てを取り込むことのできない大きさである。
図2は乱数生成システム101を利用するシミュレーション計算システム114での処理動作を説明するフローチャートであり、次に、これについて説明する。
(1)シミュレーション計算システム114は、処理を開始すると、入力部120での処理を実行し、入力データ組格納テーブル115に格納するためのデータ及び計算で用いる乱数の個数Nをはじめとするシミュレーション固有のパラメータの入力を受け付ける(ステップ201、202)。
(2)次に、乱数生成要求部116での処理を実行する。乱数生成要求部116は、乱数生成システム101が持つ乱数集合生成部102に対して乱数生成を要求し、乱数の個数N、入力データ数D及び並列実行数Pを乱数集合生成部102に送信する(ステップ203)。
(3)計算回数cを1に設定し、入力データ組格納テーブル115から1組の入力データを選択し、ステップ206以降の処理で、選択された1組、ここではc組目の入力データに対して計算する設定を行う(ステップ204、205)。
次に、ステップ206の処理として、ステップ207〜ステップ210の各処理について並列処理を行う。
(4)並列化されたステップ206の処理において、まず、値Np に等しい回数だけステップ208〜ステップ210の処理を繰り返すことを設定する。並列化された処理のそれぞれに、識別番号p=0〜P−1を付与したとき、値Np は、識別番号pの処理が乱数集合格納テーブル109に対してアクセスする回数を示す(ステップ207)。
(5)次に、乱数参照部117での処理を実行する。乱数参照部117は、乱数取得部104に対し乱数取得を要求する。このとき、乱数参照部117は、要素番号n及び計算回数cをあわせて送信する。この操作によって、乱数参照部117は、乱数取得部104から乱数の値を受信する(ステップ208)。
ステップ208での処理において、識別番号pの処理における乱数参照部117で利用する要素番号nの値は、シミュレーション計算システム114が並列処理時に乱数集合格納テーブル109を参照するときのアクセスパターンから決定する。また、要素番号nは、1〜Nの範囲内にあり、1組の入力データについて計算する間、異なる乱数参照部117間においても同じ要素番号nが2度現れることはない。言い換えると、乱数集合格納テーブル109の要素番号nを持つ要素は、P個の乱数参照部117のうちいずれか1つから1度だけアクセスされ、同じあるいは異なる乱数参照部117から2度アクセスされることはない。
(6)次に、データ取得部118での処理を実行する。データ取得部118は、ステップ208の処理で取得した乱数xを、入力データ組格納テーブル115に対する要素番号dに変換し、要素番号がdである計算中の組の入力データの値を取得する(ステップ209)。
(7)次に、計算部119での処理を実行する。計算部119は、ステップ209の処理で取得した要素番号がdである入力データ格納テーブルの値をもとにシミュレーション固有の計算を行う(ステップ210)。
(8)入力データ1組に対する計算が全て終了した時点(ステップ207の終了)で、計算回数cを1増加し、計算回数cが入力データ組格納テーブル115のデータ組数Cより小さい(c≦C)か否かを判定し、計算回数cが入力データ組格納テーブル115のデータ組数Cを超えるまで、ステップ205からの処理に戻って、ステップ205〜210の処理を繰り返す(ステップ211、212)。
(9)ステップ212の判定で、計算回数cが入力データ組格納テーブル115のデータ組数Cを超え、全ての繰り返し処理が完了した時点で、出力部121での処理を実行し、シミュレーションの結果を出力して、ここでの処理を終了する(ステップ213、214)。
図3は図2に示すフローのステップ203の処理で実行される乱数集合生成部102での処理の詳細を説明するフローチャートであり、次に、これについて説明する。
(1)乱数集合生成部102での処理が開始されると、乱数集合生成部102は、乱数用システム接続部122を介して、発生させる乱数集合Nの値及び入力データ数Dの値を乱数生成要求部116から読み込む。入力データ数Dは、後に実行される整列効果推定部103で利用される(ステップ301、302)。
(2)次に、乱数集合生成部102は、N個の乱数を生成し、乱数集合格納テーブル109にN個の乱数を格納する。このとき利用する乱数生成方法については様々な方法であってよいが、ここでは、上限及び下限が決まっていて乱数の値から入力データ格納テーブル115に対する要素番号へ容易に変換できる乱数を生成できる乱数生成方法を用いる(ステップ303)。
(3)次に、整列効果推定部103での処理を実行する。整列効果推定部103は、受信した乱数の個数や入力データサイズや並列実行数から整列の効果を推測し、その結果を整列効果推定テーブル113に格納して、ここでの処理を終了する(ステップ304、305)。
前述した整列効果推定テーブル113は、例えば「昇順」や「SMP昇順」といった乱数集合格納テーブル109を整列する規則を要素として持ち、それぞれが「効果あり」、「効果なし」の2つの値をとる。整列規則は、多岐にわたり、それぞれの整列効果の推定方法も同様に多岐にわたるため、本発明の実施形態では、その推定方法の一例として、入力データ数Nと並列実行数Pの値を用いて「昇順」及び「SMP昇順」の効果を推定する方法をとることとする、この方法の詳細については、後述する具体例の中で説明する。
図4は乱数取得部104での処理の詳細を説明するフローチャートであり、次に、これについて説明する。この処理は、図2に示すフローのステップ208の処理で、乱数参照部117から参照要求が行われたときに乱数取得部104が行う処理である。
(1)乱数取得部104での処理が開始されると、乱数取得部104は、乱数取得用システム接続部123を介して、乱数参照部117から、参照する要素番号nの値と、計算回数cとを受信する。計算回数cは、シミュレーション計算システム114がc組目の入力データを計算するために乱数を参照しようとしていることを示す(ステップ401、402)。
(2)次に、計算回数cが1であるか否かを判定し、計算回数cが1であった場合、それまでに乱数集合格納テーブル109が持つ要素の全てにはアクセスされておらず、アクセス解析が行われていないかその途中であることを示すので、乱数生成システム101は、アクセス情報記録部105での処理を実行する。なお、このアクセス情報記録部105での処理の詳細については、図5に示すフローを参照して後述する(ステップ403、404)。
(3)ステップ403の判定で、計算回数cが1でなかった場合、あるいは、ステップ404のアクセス情報記録部105での処理の終了後、計算回数cが初めて2になったか否かを判定し、計算回数cが初めて2になったのであれば、それはアクセス解析が終了した直後であることを示すので、整列処理部106での処理を実行する。なお、この整列処理部106での処理の詳細については、図6に示すフローを参照して後述する(ステップ405、406)。
(4)ステップ405の判定で、計算回数cが初めて2になったのでなかった場合、あるいは、ステップ406の整列処理部106での処理の終了後、乱数集合格納テーブル109の要素番号nの値を乱数取得用システム接続部123を介して、乱数参照部117へ送信して、ここでの処理を終了する(ステップ407、408)。
図5は図4に示すフローのステップ404のアクセス情報記録部105での処理の詳細を説明するフローチャートであり、次に、これについて説明する。
(1)アクセス情報記録部105での処理が開始されると、アクセス情報記録部105は、整列効果推定テーブル113を参照することにより整列の効果の判定を行い、整列効果推定テーブル113のいずれかの要素が「効果あり」であるか否かを判定し、整列効果推定テーブル113が持つどの要素も「効果なし」であれば、整列効果推定テーブル113の整列を行う必要がないためここでの処理を終了する(ステップ501、502、506)。
前述において、整列効果推定テーブル113の内容は、図3に示すフローのステップ304での処理により、また、後述する図7での具体例で接続するように効果の有無として記述されている。
(2)ステップ502の判定で、整列効果推定テーブル113が持ついずれかの要素が「効果あり」であった場合、この乱数取得部104が持つ識別番号pを、識別番号記憶テーブル110の要素番号がnである要素へコピーする。これは、乱数集合格納テーブル109の要素番号nの値が、識別番号がpである乱数取得部104からアクセスされたことを示す。識別番号記憶テーブル110は、乱数の個数Nに等しい個数の値を格納でき、それぞれの値には1〜Nの範囲で要素番号が付けられている(ステップ503)。
(3)次に、この乱数取得部104が持つアクセス回数記憶カウンタ108の値tを、アクセス順序記憶テーブル111の要素番号nの要素にコピーする。これは、乱数集合格納テーブル109の要素番号nの値が、識別番号がpである乱数取得部104においてt番目にアクセスされたことを示す。アクセス順序記憶テーブル111は、乱数の個数Nに等しい個数の値を格納でき、それぞれの値には1〜Nの範囲で要素番号が付けられている(ステップ504)。
(4)その後、この乱数取得部104が持つアクセス回数記憶カウンタ108の値tを1増加させて、ここでの処理を終了する。ここでの処理は、同じ乱数取得部104が再び実行された場合、次にアクセスされる乱数集合格納テーブル109の要素番号n’の値がt+1番目にアクセスされるとき、アクセス順序記憶テーブル111の要素番号n’の要素にt+1を格納するための処理である(ステップ505、506)。
図6は図4に示すフローのステップ406の整列処理部106での処理の詳細を説明するフローチャートであり、次に、これについて説明する。
(1)整列処理部106での処理が開始されると、整列処理部106は、整列効果推定テーブル113を参照することにより整列の効果の判定を行い、整列効果推定テーブル113のいずれかの要素が「効果あり」であるか否かを判定し、整列効果推定テーブル113が持つどの要素も「効果なし」であれば、整列効果推定テーブル113の整列を行う必要がないためここでの処理を終了する(ステップ601、602、609)。
(2)ステップ602の判定で、整列効果推定テーブル113が持ついずれかの要素が「効果あり」であった場合、整列状態フラグ112が「整列済」であるか否かを判定する。整列状態フラグ112の情報は、乱数集合格納テーブル109に対する整列操作が行われたかどうかを示し、「未整列」、「整列中」、「整列済」の3つの値を取る。ここでの判定で、整列効果推定テーブル113に対応する整列状態フラグ112が「整列済」であった場合、整列する必要が無いためここでの処理を終了する(ステップ603、609)。
(3)ステップ603の判定で、整列状態フラグ112が「整列済」でなかった場合、整列状態フラグ112が「整列中」であるか否かを判定し、「整列中」であれば、他の乱数取得部104が乱数を整列している最中であるということを意味するので、その間は乱数へのアクセスもできないため、整列状態フラグ112が「整列中」でなくなるまで待ってから、その後にここでの処理を終了する(ステップ604、608、609)。
(4)ステップ604の判定で、整列状態フラグ112が「整列中」でなかった場合、整列状態フラグ112が「未整列」であるので、整列状態フラグ112を「整列中」にする。この操作によって、他の乱数取得部104が整列中の乱数集合格納テーブル109に対してアクセスできないようにする(ステップ605)。
(5)次に、識別番号記憶テーブル110とアクセス順序記憶テーブル111とを参照して、整列効果推定テーブル113の値を元に乱数集合格納テーブル109の値を整列する。なお、ここでの処理の具体例についてを図9を参照して後述する(ステップ606)。
(6)ステップ606の処理の終了後、整列状態フラグ112を「整列済」にし、ここでの処理を終了する。この処理を行うことにより、ステップ608の処理で待ち状態になっていた他の乱数取得部104も、待ち状態から解放されて処理を終了する(ステップ607、609)。
次に、前述で説明した本発明の実施形態におけるシミュレーション計算システム114及び乱数生成システム101の処理動作の具体例について、図7〜図10を参照して説明する。
図7は乱数集合生成部102が乱数生成の要求を受信し、乱数集合を生成し、整列効果推定部103での処理を実行する例を示す図である。図7に示す例は、図3により説明したフローのステップ302〜304での処理を具体的に示したものである。
ステップ302の処理において、発生させる乱数の個数N=8、入力データ数D=10及び並列実行数P=4を、乱数生成用システム接続部122を介して乱数生成要求部116から受信する。
ステップ303の処理において、ステップ302の処理で得た乱数の個数N=8をもとに8個の乱数を生成する。図7に示す具体例で生成する乱数は、[0,1]区間の乱数、すなわち、生成する乱数の値をxとしたとき、0≦x≦1を満たす値の乱数であり、これら8個の乱数は、乱数集合格納テーブル109に格納される。図7に示す例では、8個の乱数として、[0.53,0.31,0.87,0.16,0.90,0.76,0.15,0.27]が生成されている。
そして、ステップ304の処理において、まず、整列効果推定部103での処理を実行する。図7に示す具体例では、「昇順」または「SMP昇順」の整列規則のいずれかについて、整列の効果の有無を確認している。そして、ここでは、[0,1]区間の乱数を生成する乱数生成方法を利用しているものとしているため、入力データ数を乱数の個数で割った値が2未満であれば、整列したときに乱数が必ず1箇所以上で連続となるといえる。よって、2未満になった場合、整列を行うことにより性能向上が見込めるものとして扱う。なお、前述で挙げた「SMP昇順」の条件は、ハードウェアの特性に従って変化するものであり、一例として挙げたものである。
次に、整列により性能向上が見込めるならば、並列実行数が1であれば整列効果推定テーブル113が持つ「昇順」の要素を「効果あり」に設定し、並列実行数が複数であれば整列効果推定テーブル113が持つ「SMP昇順」の要素を「効果あり」に設定する。ここで「昇順」とは、乱数集合格納テーブル109全体を単純に昇順に並べ替えるという逐次処理に向いた整列規則であり、「SMP昇順」とは、識別番号が0である乱数参照部117のアクセス順に昇順に整列し、次に識別番号が1である乱数参照部117のアクセス順に整列するということを、識別番号が2以上の場合にも同様に繰り返すという並列処理に向いた整列規則である。なお、「SMP昇順」による整列規則は、本発明で定義した整列規則である。
具体的に前述の計算式に値を代入すると、乱数の個数がN=8であり、入力データ数がD=10であるので、10/8<2となり、かつ、並列実行数がP=4であるので、4>1となり、整列効果推定テーブル113が持つ「SMP昇順」の要素に「効果あり」を設定する。
並列実行数がP=4で、乱数の個数がN=8の場合に「SMP昇順」の規則を用いると、識別番号が0である乱数参照部117が1番目にアクセスした要素が1番小さい値になり、識別番号が0である乱数参照部117が2番目にアクセスした要素が2番目に小さい値になり、識別番号が1である乱数参照部117が1番目にアクセスした要素が3番目に小さい値になり、最終的に識別番号が3である乱数参照部117が2番目にアクセスした要素が最も大きい値となる。
図8は計算回数c=1のときに乱数取得部104が実行するアクセス情報記録部での処理の具体例を説明する図である。図8に示す具体例は、図5により説明したフローのステップ503〜505の処理を具体的に示したものであり、識別番号0である乱数取得部104が1番目に、整列前の乱数集合格納テーブル109から要素番号n=1の値を取得する場合の処理の例を示す。この前提から、乱数取得部104が持つ識別番号107の値は、p=0となっており、また、アクセス回数記憶カウンタ108の値は、t=1となっている。また、図8に示す具体例は、図7の場合と同様に、並列実行数P=4、発生させた乱数の個数N=8とする。また、並列化された各乱数参照部117は、乱数集合格納テーブル109をサイクリックに参照するものとする。サイクリックに参照するとは、乱数参照部117に0〜P−1の範囲で識別番号pを割り当て、識別番号pの乱数参照部117がn回目に乱数集合格納テーブル109を参照するとき、要素番号(n−1)*P+(p+1)の値を参照することを示す。
ステップ503の処理において、乱数取得部104が持つ識別番号107の値p=0を、識別番号記憶テーブル110の要素番号n=1の要素へコピーする。
ステップ504の処理において、乱数取得部104が持つ、アクセス回数記憶カウンタ108の値t=1を、アクセス順序記憶テーブル111の要素番号n=1の要素へコピーする。
ステップ505の処理において、この乱数取得部104が持つアクセス回数記憶カウンタ108の値t=1を1増加させてt=2とする。
前述で説明した図8でのアクセス情報記録部105での処理が完了した結果、識別番号記憶テーブル110は、後述する図9に示す識別番号記憶テーブル110のようになり、アクセス順序記憶テーブル111は、図9におけるアクセス順序記憶テーブル111のようになる。
図9は計算回数cが初めて2になったときに乱数取得部104が実行する整列処理部106での処理の具体例を説明する図である。この例の場合も、前述で説明した具体例の場合と同様に、並列実行数P=4であり、乱数の個数N=8であるとする。また、図9に示す例は、整列効果推定テーブル113が持つ「SMP昇順」に「効果あり」が設定されていて、並列化された各乱数参照部117が乱数集合格納テーブル109をサイクリックに参照し、識別番号記憶テーブル110及びアクセス順序記憶テーブル111の値が図9のように設定されているものとする。
図9に示す具体例において、「SMP昇順」の整列規則を用いると、識別番号が0である乱数参照部117が1番目にアクセスした要素が1番小さい値になり、識別番号が0である乱数参照部117が2番目にアクセスした要素が2番目に小さい値になり、識別番号が1である乱数参照部117が1番目にアクセスした要素が3番目に小さい値になり、最終的に識別番号が3である乱数参照部117が2番目にアクセスした要素が最も大きい値になるよう整列される。乱数集合格納テーブル109を「SMP昇順」の規則で整列すると、整列後の乱数集合格納テーブル109は、905として示すようなものになる。
図10は乱数取得部104での取得した乱数を出力する処理とシミュレーション計算システム114での乱数を参照して計算を行う処理との具体例を説明する図である。ここで説明する具体例は、整列後の乱数集合に対して、識別番号107がp=0である乱数取得部104での図4に示すステップ407の処理及び乱数取得部104から乱数を受信した後のシミュレーション計算システム114の図2に示すステップ208〜210の処理の具体例である。また、図10に示す具体例は、図8により説明した例と同様に、並列実行時の処理数P=4、乱数集合生成を1回要求する度に生成する乱数の個数N=8とし、並列化された各乱数参照部117は、乱数集合格納テーブル109をサイクリックに参照するものとする。
図10において、ステップ407の処理を行う乱数取得部104は、整列された乱数を格納している乱数集合格納テーブル109の要素番号n(図示例の場合、要素番号1番)の値に対して1回目の取得を行い、その乱数の値を乱数取得用システム接続部123を介して乱数参照部117に送信する。
ステップ208に対応する処理を行う乱数参照部117は、乱数取得用システム接続部123を介して、乱数の値を乱数取得部104から受信する。
ステップ209に対応する処理を行うデータ取得部118は、乱数参照部117から乱数の値を受け取り、その乱数をもとに入力データへのアクセス先を求める。アクセス先を求めるための計算式1006は、図10に示す例では、d=x*D+1(端数切捨て)としている。ここで、dは参照する入力データ組格納テーブル115の要素番号、xは取得した乱数値、Dは入力データ組格納テーブル115の要素数を示す。ここで説明している例では、計算式1006による計算結果はd=1.5となり、端数の切捨てによりd=1となる。よって、入力データ組格納テーブル115の計算中の組の1番目の要素を参照して、これをデータ取得部118のデータ取得結果とする。
ステップ210に対応する処理を行う計算部119は、データ取得部118から入力データの値を受け取り、シミュレーション固有の計算を行う。
次のシミュレーション計算のために、乱数取得部104は、続いてステップ407の処理を行い、乱数集合格納テーブル109から要素番号5番の乱数の取得を行って乱数参照部117に送信する。乱数参照部117、データ取得部118及び計算部119は、前述下場合と同様にして入力データを取得し、シミュレーション固有の計算を行う。
このとき、整列処理により、乱数集合格納テーブル109の要素番号n=5の乱数の値は、乱数集合格納テーブル109の要素番号1の乱数の値と最も近い値が格納されていて、アクセス先を求めるための計算式1006の計算によっても近い値が現れる。これにより、アクセスの局所性を向上させることができる。
前述した本発明の実施形態における各処理は、処理プログラムとして構成することができ、この処理プログラムは、HD、DAT、FD、MO、DVD−ROM、CD−ROM等の記録媒体に格納して提供することができる。
前述した本発明の実施形態は、シミュレーション計算システムが、乱数による入力データの抽出及び複数の部分シミュレーション処理部での計算部分の処理が独立であって、この部分の並列化が可能なものであるとして説明したが、本発明は、シミュレーション計算システムが、逐次処理の計算機内に構築された場合にも適用することができる。
本発明の一実施形態による乱数生成システムとそれを利用するシミュレーション計算システムを実装した並列計算機との主記憶装置上の構成を示すブロック図である。 乱数生成システム101を利用するシミュレーション計算システム114での処理動作を説明するフローチャートである。 図2に示すフローのステップ203の処理で実行される乱数集合生成部102での処理の詳細を説明するフローチャートである。 乱数取得部での処理の詳細を説明するフローチャートである。 図4に示すフローのステップ404のアクセス情報記録部での処理の詳細を説明するフローチャートである。 図4に示すフローのステップ406の整列処理部での処理の詳細を説明するフローチャートである。 乱数集合生成部が乱数生成の要求を受信し、乱数集合を生成し、整列効果推定部での処理を実行する例を示す図である。 計算回数c=1のときに乱数取得部が実行するアクセス実施形態記録部での処理の具体例を説明する図である。 計算回数cが初めて2になったときに乱数取得部が実行する整列処理部での処理の具体例を説明する図である。 乱数取得部での取得した乱数を出力する処理とシミュレーション計算システム114での乱数を参照して計算を行う処理との具体例を説明する図である。
符号の説明
101 乱数生成システム
102 乱数集合生成部
103 整列効果推定部
104 乱数取得部
105 アクセス情報記録部
106 整列処理部
107 識別番号
108 アクセス回数記憶カウンタ
109 乱数集合格納テーブル
110 識別番号記憶テーブル
111 アクセス順序記憶テーブル
112 整列状態フラグ
113 整列効果推定テーブル
114 シミュレーション計算システム
115 入力データ組格納テーブル
116 乱数生成要求部
117 乱数参照部
118 データ取得部
119 計算部
120 入力部
121 出力部
122 乱数生成用システム接続部
123 乱数取得用システム接続部
124 部分シミュレーション処理部

Claims (5)

  1. シミュレーション計算システムが使用する乱数の集合を発生する乱数生成システムにおける乱数生成方法において、前記乱数生成システムは、前記シミュレーション計算システムから受け取った計算回数と乱数集合の要素番号とに基づいて、識別番号とアクセス順序とを取得し、取得した識別番号とアクセス順序との情報に基づいて、生成した乱数集合を整列したものとし、整列した乱数集合内の乱数を前記シミュレーション計算システムに対して出力することを特徴とする乱数生成方法。
  2. 前記乱数集合の整列によるシミュレーション計算システムの性能向上効果を予め推定し、整列の要否を判定することを特徴とする請求項1記載の乱数生成方法。
  3. 大規模な入力データの集合から乱数を用いた要素の無作為抽出と計算とを繰り返す処理を行い、乱数による入力データの抽出及び計算部分の処理を複数の独立した処理部で並列実行するシミュレーション計算システムが使用する乱数の集合を発生する乱数生成システムにおける乱数生成方法において、前記乱数生成システムは、前記シミュレーション計算システムの前記処理部のそれぞれから受け取った計算回数と乱数集合の要素番号とに基づいて、識別番号とアクセス順序とを取得し、取得した識別番号とアクセス順序との情報に基づいて、生成した乱数集合を整列したものとし、整列した乱数集合内の乱数を前記シミュレーション計算システムの前記処理部のそれぞれに対して出力することを特徴とする乱数生成方法。
  4. シミュレーション計算システムが使用する乱数の集合を発生する乱数生成システムにおいて、生成した乱数の集合を格納する乱数集合格納テーブルと、前記シミュレーション計算システムから受け取った計算回数と乱数集合の要素番号とに基づいて、識別番号とアクセス順序とを取得し、識別番号記憶テーブルとアクセス順序記憶テーブルに格納するアクセス情報記録部と、該アクセス情報記録部で取得した識別番号とアクセス順序との情報に基づいて、生成した前記乱数集合格納テーブル内の乱数集合を整列する整列処理部と、整列した乱数集合内の乱数を前記シミュレーション計算システムに対して出力する手段とを備えることを特徴とする乱数生成システム。
  5. 前記乱数集合の整列によるシミュレーション計算システムの性能向上効果を予め推定し、整列の要否を判定する整列効果推定部をさらに備えることを特徴とする請求項4記載の乱数生成システム。
JP2004344016A 2004-11-29 2004-11-29 乱数生成方法及びシステム Pending JP2006155168A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004344016A JP2006155168A (ja) 2004-11-29 2004-11-29 乱数生成方法及びシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004344016A JP2006155168A (ja) 2004-11-29 2004-11-29 乱数生成方法及びシステム

Publications (1)

Publication Number Publication Date
JP2006155168A true JP2006155168A (ja) 2006-06-15

Family

ID=36633404

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004344016A Pending JP2006155168A (ja) 2004-11-29 2004-11-29 乱数生成方法及びシステム

Country Status (1)

Country Link
JP (1) JP2006155168A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017157197A1 (zh) * 2016-03-17 2017-09-21 阿里巴巴集团控股有限公司 随机数的生成及获取方法和装置
JP2017215955A (ja) * 2016-05-30 2017-12-07 ローム株式会社 乱数生成方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017157197A1 (zh) * 2016-03-17 2017-09-21 阿里巴巴集团控股有限公司 随机数的生成及获取方法和装置
US10691415B2 (en) 2016-03-17 2020-06-23 Alibaba Group Holding Limited Random number generation and acquisition method and device
US10929103B2 (en) 2016-03-17 2021-02-23 Advanced New Technologies Co., Ltd. Random number generation and acquisition method and device
US11182129B2 (en) 2016-03-17 2021-11-23 Advanced New Technologies Co., Ltd. Random number generation and acquisition method and device
JP2017215955A (ja) * 2016-05-30 2017-12-07 ローム株式会社 乱数生成方法

Similar Documents

Publication Publication Date Title
US7856102B2 (en) Methods and apparatus for providing a message authentication code using a pipeline
Coudron et al. Infinite randomness expansion with a constant number of devices
KR102026662B1 (ko) 프로세서 검증을 위한 테스트 케이스 생성 장치 및 방법과, 검증장치
CN107135078B (zh) Pbkdf2密码算法加速方法及所用装置
JP2019053541A (ja) 情報処理装置、情報処理方法、及びプログラム
Lloret-Talavera et al. Enabling homomorphically encrypted inference for large DNN models
WO2012106819A1 (en) True random number generator using gpu and signal processing techniques
Su et al. Large-scale simulations on multiple Graphics Processing Units (GPUs) for the direct simulation Monte Carlo method
Meiron et al. Expansion techniques for collisionless stellar dynamical simulations
JP2019185417A (ja) 情報処理装置、情報処理方法、及びプログラム
JP2019053542A (ja) 情報処理装置、情報処理方法、及びプログラム
Ha et al. Fast Four‐Way Parallel Radix Sorting on GPUs
JP2006155168A (ja) 乱数生成方法及びシステム
Sundfeld et al. Using GPU to accelerate the pairwise structural RNA alignment with base pair probabilities
JPWO2016056502A1 (ja) 非減少列判定装置、非減少列判定方法及びプログラム
Georganas et al. Merbench: Pgas benchmarks for high performance genome assembly
JP2016091488A (ja) データソート方法およびプログラム
Atanassov et al. Tuning the generation of Sobol sequence with Owen scrambling
Głowacz et al. Implementation of digital watermarking algorithms in parallel hardware accelerators
Shantharam et al. Exploiting dense substructures for fast sparse matrix vector multiplication
KR101637187B1 (ko) 이미지에 기반한 랜덤 넘버 생성장치 및 그 방법
Petrou et al. Optimization of a parallel permutation testing function for the SPRINT R package
US9160533B2 (en) Random number generation
Soner et al. Generating multibillion element unstructured meshes on distributed memory parallel machines
US10503475B1 (en) Forensically reproducible random number generator and associated method of use