説明

取引計算シミュレーションシステム、方法及びプログラム

【課題】シナリオ毎に計算ノードにおいて実行される初期化処理の回数を抑えることにより、シミュレーション処理全体の処理時間を短くすること。
【解決手段】取引計算シミュレーションシステムは、市場情報に基づく取引計算のシミュレーション処理における条件の異なる複数のシナリオを実行するものである。マスタノードは、複数の計算ノードの内の2以上の計算ノードを含む複数のグループに対して、ジョブ情報記憶部に格納された複数のジョブを個別に割り当てるジョブ割当手段と、複数のグループのそれぞれにおける各グループに含まれる複数の計算ノードに対して、当該グループに割り当てられたジョブに定義されたシナリオの実行順序に従い、各シナリオを実行するための初期化処理の指示を行い、当該初期化処理後に当該グループに含まれる複数の計算ノードに対して、当該シナリオを分散して実行するための分散実行処理の指示を行う指示手段と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、取引計算シミュレーションシステム、方法及びプログラムに関し、特に、市場情報に基づく複数種類の取引単位についての取引計算のシミュレーション処理を複数の計算ノードに分散して実行する取引計算シミュレーションシステム、方法及びプログラムに関する。
【背景技術】
【0002】
金融商品の取引(以下、「金融取引」という。)には、為替や金利などの市場情報に基づく取引単位が存在し、取引単位には、様々な種類がある。そして、これらの様々な種類の取引単位のそれぞれに対して、任意の市場情報に基づく取引計算により収益及びポジションを算出することができる。このとき、想定した市場情報の変動による収益及びポジションへの影響を推定するためのシミュレーション処理を行う必要がある。近年、取引計算は益々高度化及び複雑化し、また、高度化及び複雑化した取引計算の種類が増加している。それ故、取引計算のシミュレーション処理の処理時間は増加の一途を辿っている。そこで、取引計算のシミュレーション処理について、グリッドコンピューティング技術を用いて高速化することが望まれている。
【0003】
特許文献1には、グリッドコンピューティング技術を用いたジョブ割当装置に関する技術が開示されている。特許文献1にかかるジョブ割当装置は、複数の計算ノードの性能の変化に対応して、予め定めたジョブの優先度に基づきジョブを計算ノードに割り当てることにより、計算ノードの利用効率の向上を図ることができるものである。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−226023号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述した金融取引における取引計算のシミュレーション処理に対して、単純にグリッドコンピューティング技術を適用すると、処理時間が長くなってしまうという問題がある。金融取引における取引計算のシミュレーション処理では、様々に条件を変更した多数のシナリオを実行する必要がある。特に、実行するシナリオ数は、計算ノード数以上となる場合が多い。
【0006】
一般に、複数のタスクを含むシナリオを分散実行する場合、分散する計算ノード数が多いほど、全体の処理時間が短くなる。一方、各計算ノードは、分散処理を開始するために、シナリオごとに初期化処理を実行する。
【0007】
シナリオ数が多い場合には、タスクの処理時間に加えて初期化処理の時間が余分にかかる。これは、初期化処理の時間が複数のシナリオを連続して実行させるジョブの実行時間に与える影響が大きい。そのため、複数のシナリオを連続して分散実行させる場合、後続のシナリオの開始が遅れてしまう。ここで、初期化処理とは、グリッドコンピューティング技術を実現するミドルウェアにより、計算ノードごとの分散処理の準備のための処理である。具体的には、例えば、計算サーバ上のプロセスの立ち上げ処理や初期データの転送等である。
【0008】
尚、特許文献1は、複数のジョブについて異なる優先度が設定されている場合を対象としているが、金融取引の取引計算におけるジョブは、複数のシナリオを連続して実行させるものである。そのため、各シナリオについての実行の優先度に差はない。よって、特許文献1では、上述した課題を解決することができない。
【0009】
本発明は、このような問題を解決するためになされたものであり、複数のシナリオを並列に実行するための取引計算シミュレーションシステム、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明の第1の態様にかかる取引計算シミュレーションシステムは、市場情報に基づく取引計算のシミュレーション処理における条件の異なる複数のシナリオを実行する取引計算シミュレーションシステムであって、前記複数のシナリオの実行順序を定義した複数のジョブを格納するジョブ情報記憶部と、シナリオ単位に前記取引計算のシミュレーション処理を実行する複数の計算ノードと、前記複数の計算ノードにおける実行を制御するマスタノードと、を備え、前記マスタノードは、前記複数の計算ノードの内の2以上の計算ノードを含む複数のグループに対して、前記ジョブ情報記憶部に格納された複数のジョブを個別に割り当てるジョブ割当手段と、前記複数のグループのそれぞれにおける各グループに含まれる複数の計算ノードに対して、当該グループに割り当てられたジョブに定義されたシナリオの実行順序に従い、各シナリオを実行するための初期化処理の指示を行い、当該初期化処理後に当該グループに含まれる複数の計算ノードに対して、当該シナリオを分散して実行するための分散実行処理の指示を行う指示手段と、を備える。
【0011】
また、前記初期化処理は、前記指示を受け付ける各計算ノードにおいて前記分散実行処理のリソースを確保するためのプロセスの立ち上げ処理及び当該各計算ノードへの入力データの転送処理を含むことが望ましい。
【0012】
また、前記複数のグループは、グループ数が前記ジョブ情報記憶部に格納された複数のジョブ数と同数であることが望ましい。
【0013】
さらに、前記複数のグループは、前記複数のシナリオの数が均一となるように前記複数のジョブが定義されている場合に、各グループに前記複数の計算ノードのノード数が均一となるように割り当てられていることが望ましい。
【0014】
または、前記ジョブ情報記憶部に格納された複数のジョブに基づき、前記複数のグループを生成するグループ生成手段をさらに備えるとよい。
【0015】
さらに、前記グループ生成手段は、前記ジョブ情報記憶部に格納された複数のジョブ数と同数の前記複数のグループを生成するとよい。
【0016】
さらに、前記グループ生成手段は、前記複数のシナリオの数が均一となるように前記複数のジョブが定義されている場合に、各グループに前記複数の計算ノードのノード数が均一となるように割り当てるとよい。
【0017】
さらに、前記グループ生成手段は、前記複数の計算ノードについて、前記複数のジョブにおける処理負荷に応じたノード数を各グループに割り当てるとよい。
【0018】
また、前記複数のシナリオを所定数に分類し、分類されたシナリオの実行順序を定義することにより前記複数のジョブを生成し、生成した複数のジョブを前記ジョブ情報記憶部に格納するジョブ生成手段をさらに備えることが望ましい。
【0019】
また、前記取引計算シミュレーションシステムは、前記マスタノードと前記複数の計算ノードの一部である第1計算ノード群とが接続される第1の通信回線と、前記第1の通信回線より低速の通信回線であり、前記第1計算ノード群以外の計算ノードである第2計算ノード群と前記第1の通信回線とが接続される第2の通信回線とをさらに備え、前記グループ生成手段は、前記第1の通信回線及び前記第2の通信回線の通信速度に基づき、前記第1計算ノード群及び前記第2計算ノード群から選択した計算ノードを用いて前記複数のグループを生成することが望ましい。
【0020】
さらに、前記グループ生成手段は、前記複数のシナリオの数が均一となるように前記複数のジョブが定義されている場合に、前記第1計算ノード群に属する計算ノード数と前記第2計算ノード群に属する計算ノード数との比率が均一になるように前記複数のグループを生成するとよい。
【0021】
または、前記グループ生成手段は、前記第1計算ノード群に属する計算ノードを前記第2計算ノード群に属する計算ノードとは異なるグループに割り当て、前記ジョブ割当手段は、前記複数のジョブの内、処理負荷が高いジョブを前記第1計算ノード群に属する計算ノードが割り当てられたグループに割り当てるとよい。
【0022】
また、前記複数の計算ノードがシナリオを実行するために用いる入力データを所定の圧縮率に基づき圧縮するデータ圧縮手段をさらに備え、前記指示手段は、前記データ圧縮手段により圧縮された入力データを前記複数の計算ノードへ転送し、前記複数の計算ノードにおいて前記分散実行処理の開始前までに当該転送された入力データを前記所定の圧縮率に基づき解凍させるように指示を行うことが望ましい。
【0023】
さらに、前記データ圧縮手段は、前記マスタノードと前記複数の計算ノードとが接続される通信回線の帯域に応じて前記所定の圧縮率を決定し、決定した圧縮率に基づき前記入力データを圧縮し、前記指示手段は、前記決定した圧縮率に基づき解凍させるように指示を行うとよい。
【0024】
本発明の第2の態様にかかる取引計算シミュレーション方法は、市場情報に基づく取引計算のシミュレーション処理における条件の異なる複数のシナリオの実行順序を定義した複数のジョブを格納するジョブ情報記憶部と、シナリオ単位に前記取引計算についてのシミュレーション処理を実行する複数の計算ノードと、前記複数の計算ノードにおける実行を制御するマスタノードと、を備えるコンピュータシステムにより前記複数のシナリオを実行するための取引計算シミュレーション方法であって、前記マスタノードにおいて、前記複数の計算ノードの内の2以上の計算ノードを含む複数のグループに対して、前記ジョブ情報記憶部に格納された複数のジョブを個別に割り当てるジョブ割当ステップと、前記複数のグループのそれぞれにおける各グループに含まれる複数の計算ノードに対して、当該グループに割り当てられたジョブに定義されたシナリオの実行順序に従い、各シナリオを実行するための初期化処理の指示を行い、当該初期化処理後に当該グループに含まれる複数の計算ノードに対して、当該シナリオを分散して実行するための分散実行処理の指示を行う指示ステップと、を含む。
【0025】
本発明の第3の態様にかかる取引計算シミュレーションプログラムは、市場情報に基づく取引計算のシミュレーション処理における条件の異なる複数のシナリオの実行順序を定義した複数のジョブを格納するジョブ情報記憶部を備え、シナリオ単位に前記取引計算のシミュレーション処理を実行する複数の計算ノードに対して前記複数のシナリオの実行を制御する処理をコンピュータに実行させる取引計算シミュレーションプログラムであって、前記複数の計算ノードの内の2以上の計算ノードを含む複数のグループに対して、前記ジョブ情報記憶部に格納された複数のジョブを個別に割り当てるジョブ割当処理と、前記複数のグループのそれぞれにおける各グループに含まれる複数の計算ノードに対して、当該グループに割り当てられたジョブに定義されたシナリオの実行順序に従い、各シナリオを実行するための初期化処理の指示を行い、当該初期化処理後に当該グループに含まれる複数の計算ノードに対して、当該シナリオを分散して実行するための分散実行処理の指示を行う指示処理と、を含む。
【発明の効果】
【0026】
本発明によれば、シナリオ毎に計算ノードにおいて実行される初期化処理の回数を抑える、シミュレーション処理全体の処理時間を短くするための取引計算シミュレーションシステム、方法及びプログラムを提供することができる。
【図面の簡単な説明】
【0027】
【図1】本発明の実施の形態1にかかる金融取引管理システムの全体構成を示すブロック図である。
【図2】本発明の実施の形態1にかかる取引計算シミュレーションシステムの機能ブロック図である。
【図3】本発明の実施の形態1において処理対象とするデータ構造の概念を示す図である。
【図4】本発明の実施の形態1にかかるグループの構造の概念を示す図である。
【図5】本発明の実施の形態1にかかる取引計算シミュレーションシステムのハードウェア構成を示すブロック図である。
【図6】本発明の実施の形態1にかかるマスタサーバのハードウェア構成を示すブロック図である。
【図7】本発明の実施の形態1にかかる計算サーバのハードウェア構成を示すブロック図である。
【図8】本発明の実施の形態1にかかる取引計算シミュレーション処理の流れを示すフローチャートである。
【図9】本発明の実施の形態1にかかるジョブ割当処理の流れを示すフローチャートである。
【図10】本発明の実施の形態1にかかるグループ内のジョブ実行指示処理の流れを示すフローチャートである。
【図11】本発明の実施の形態1にかかる分散実行指示処理の流れを示すフローチャートである。
【図12】本発明の実施の形態1にかかるスケジュール情報の例を示す図である。
【図13】本発明の実施の形態1にかかるタスク生成処理の一例の流れを示すフローチャートである。
【図14】本発明の実施の形態1にかかる取引情報の種類の例を示す図である。
【図15】本発明の実施の形態1にかかるタスク生成処理の他の例の流れを示すフローチャートである。
【図16】本発明の実施の形態1にかかる計算ノードのシナリオ単位のシミュレーション処理の流れを示すフローチャートである。
【図17】(a)は、第1の効果を説明するために用いる取引単位の例を示す図である。(b)は、従来の手法により取引単位をタスクに分類した場合の例を示す図である。(c)は、本発明の実施の形態1にかかる第1のタスクと第2のタスクとに分類した場合の例を示す図である。
【図18】従来の手法により発生する課題を説明するための図である。
【図19】本発明の実施の形態1にかかる第1のタスク及び第2のタスクによる効果を説明するための図である。
【図20】(a)は、従来の手法におけるジョブとグループの例を示す図である。(b)は、本発明の実施の形態1におけるジョブとグループの例を示す図である。
【図21】従来の手法により発生する課題を説明するための図である。
【図22】本発明の実施の形態1にかかるシナリオの並列実行による効果を説明するための図である。
【図23】本発明の実施の形態2にかかる選択される計算ノードの例を示す図である。
【図24】本発明の実施の形態3にかかるデータ圧縮処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0028】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。尚、以下の説明において、n1、n2、n3、n4、n5、n6、n7、n8、n9、n10及びmは、3以上の自然数であるものとする。
【0029】
<発明の実施の形態1>
図1は、本発明の実施の形態1にかかる金融取引管理システム100の全体構成を示すブロック図である。金融取引管理システム100は、金融機関における金融取引に関する各種業務を管理する情報システムである。特に、金融取引管理システム100は、金融取引に関する複数の種類の取引単位のそれぞれについて、任意の市場情報に基づき収益やポジションを算出するための取引計算を行う。その際、金融取引管理システム100は、金利や為替などの市場情報の変動に基づき、定期的に取引計算のシミュレーション処理を行う。そして、シミュレーション処理の結果をユーザに提供する。例えば、取引計算のシミュレーション処理は、市場変動実績又は市場変動シナリオに基づく収益又はポジションを予測する処理である。これにより、金融取引について多様かつ有効な情報を得ることができる。尚、本発明の実施の形態1で対象とするシミュレーション処理は、これに限定されなず、大規模な計算処理を必要とする様々な金融商品における取引に対して適用可能である。また、金融取引管理システム100は、アプリケーション(AP)サーバ1と、データベース(DB)サーバ2と、取引計算シミュレーションシステム3とを備え、これらは任意の通信回線により接続されている。
【0030】
APサーバ1は、取引計算シミュレーションシステム3に対して、定期的にシミュレーション処理の開始を指示するためのコンピュータシステムである。例えば、金融取引の場合、日々の市場情報の変動に対応するため、日次にシミュレーション処理の開始を指示することが望ましい。尚、APサーバ1は、ユーザが操作する端末との情報のやり取りを行うためのWEB等によるインタフェースを備えていてもよい。
【0031】
DBサーバ2は、金融取引に必要な市場情報や取引単位の情報等を管理するデータベース21を制御するコンピュータシステムである。DBサーバ2は、例えば、DBMS(DataBase Management System)によりデータベース21との入出力を制御する。DBサーバ2は、APサーバ1又は取引計算シミュレーションシステム3から要求に応じて、データベース21へアクセスし、要求元へ結果を返信するコンピュータシステムである。データベース21は、市場情報22と取引データ23とを管理するための記憶装置である。市場情報22は、所定期間の金利や為替などの情報である。所定期間とは、例えば、3年以上であるとよいが、これに限定されない。取引データ23は、金融取引に関する複数の種類の取引単位についてのデータである。また、取引データ23は、取引計算シミュレーションシステム3により算出された取引計算の予測値、すなわち、シミュレーション処理の結果を含む。尚、データベース21は、ハードディスクドライブ、フラッシュメモリ等の不揮発性の記憶装置であることが望ましい。
【0032】
尚、APサーバ1及びDBサーバ2は、それぞれ一般的なコンピュータ装置により実現されるものであるため、具体的なハードウェア構成については図示及び説明を省略する。また、APサーバ1及びDBサーバ2は、併せて一台のコンピュータ装置として実現されるか、それぞれ複数台に多重化して実現されても構わない。
【0033】
取引計算シミュレーションシステム3は、マスタサーバ30と、計算サーバ31、32、・・・3n1とを備える。取引計算シミュレーションシステム3は、グリッドコンピューティング技術によりシミュレーション処理を複数の計算サーバに分散して実行する。マスタサーバ30は、グリッドコンピューティング技術におけるマスタノードとして動作するコンピュータである。計算サーバ31、32、・・・3n1は、グリッドコンピューティング技術における計算ノードとして動作するコンピュータである。尚、計算サーバの台数は、少なくとも2以上であればよい。尚、各計算サーバは、他の計算サーバとは独立して処理を行うことができる。そして、各計算サーバは、1台あたり複数の計算ノードとして動作することができる。
【0034】
マスタサーバ30は、APサーバ1からの指示に応じて取引計算のシミュレーション処理を開始する。そして、マスタサーバ30は、計算サーバ31、32、・・・3n1に分散して実行するように指示を行う。その際、マスタサーバ30は、適宜、APサーバ1又はDBサーバ2から入力データを取得する。また、計算サーバ31、32、・・・3n1は、マスタサーバ30からの指示に応じて、それぞれ独立に取引計算のシミュレーション処理を実行し、シミュレーション処理の結果をDBサーバ2へ送信して、データベース21内の取引データ23に含めて格納する。
【0035】
図2は、本発明の実施の形態1にかかる取引計算シミュレーションシステム3の機能ブロック図である。取引計算シミュレーションシステム3は、市場情報に基づく複数種類の取引単位についての取引計算のシミュレーション処理を複数の計算ノードに分散して実行する。また、取引計算シミュレーションシステム3は、市場情報に基づく取引計算のシミュレーション処理における条件の異なる複数のシナリオを実行する。取引計算シミュレーションシステム3は、シミュレーション情報記憶部310と、スケジュール情報格納部320と、処理時間記憶部330と、マスタノード340と、計算ノード351、352、・・・35n2とを備える。
【0036】
シミュレーション情報記憶部310は、シミュレーション処理に用いる各種の定義情報であるジョブ情報311と、シナリオ情報312と、タスク情報313と、取引情報314と、グループ情報315とを記憶する記憶装置である。尚、ジョブ情報311は、シミュレーション情報記憶部310とは異なる記憶装置であるジョブ情報記憶部に格納さていても構わない。但し、以下の説明では、ジョブ情報311は、シミュレーション情報記憶部310に格納されているものとする。
【0037】
ここで、ジョブ情報311は、シミュレーション処理の処理単位であるジョブに関する情報である。ジョブは、複数のシナリオの実行順序を定義した情報である。例えば、ジョブは、シミュレーション処理の種類ごとに定義することができる。さらに、ジョブは、同一のシミュレーション処理内の複数のシナリオを異なるジョブに分けて定義することもできる。また、ジョブは、複数のシナリオを直列に実行するように定義されている。シナリオ情報312は、取引計算における各取引単位について、シミュレーションにおける様々な条件を定義したシナリオに関する情報である。また、シナリオは、複数のタスク又は複数の取引単位を定義した情報である。シナリオには、例えば、ユーザが設定する市場変動シナリオ、定型の市場変動シナリオ又は所定期間の市場変動実績に基づき推定された将来の市場変動シナリオ等がある。これらは、それぞれ、同一の取引単位について複数の異なる条件が定義されている。
【0038】
タスク情報313は、各計算ノードにおける処理単位であるタスクに関する情報である。タスクは、1又は複数の取引単位を定義した情報である。取引情報314は、取引計算における各取引単位に関する情報である。例えば、取引情報314は、取引単位の種類及び識別情報である。取引単位は、金融取引における各種契約を表す情報であるが、ここでは、当該取引における予測値を算出するための計算式又は計算処理と対応付けられるものとする。計算式又は計算処理は、処理時間が比較的短い簡易な計算と処理時間が比較的長い複雑な計算とがある。例えば、簡易な計算とは、解析式による計算があり、複雑な計算とは、モンテカルロシミュレーション法等を用いた計算が挙げられる。グループ情報315は、ジョブを分散して実行させるための計算ノードの集合(以下、「グループ」と呼ぶ。)に関する情報である。グループは、複数の利用可能な計算ノードの内、2以上の計算ノードを含む。尚、各計算ノードは、複数のグループに重複して所属することはできないものとする。
【0039】
図3は、本発明の実施の形態1において処理対象とするデータ構造の概念を示す図である。ジョブJ1、・・・Jn5は、図2のジョブ情報311の一例である。そして、例えば、ジョブJ1には、シナリオS1、・・・Sn6が定義されていることを示す。シナリオS1、・・・Sn6は、図2のシナリオ情報312の一例である。そして、例えば、シナリオS1には、タスクT1、・・・Tn7が定義されていることを示す。タスクT1、・・・Tn7は、図2のタスク情報313の一例である。そして、例えば、タスクT1には、取引単位D1、D2、・・・Dn8が定義されていることを示す。取引単位D1、D2、・・・Dn8は、図2の取引情報314の一例である。
【0040】
図4は、本発明の実施の形態1にかかるグループの構造の概念を示す図である。グループG1、・・・Gn9は、図2のグループ情報315の一例である。そして、例えば、グループG1には、計算ノードN1、N2、・・・Nn10が定義されていることを示す。計算ノードN1、N2、・・・Nn10は、図2の計算ノード351、計算ノード352、・・・35n2のそれぞれを識別する情報の一例である。
【0041】
図2に戻り、スケジュール情報格納部320は、各計算ノードが実行する取引計算のスケジュールを特定するスケジュール情報321を記憶する記憶装置である。スケジュール情報321は、第1のタスクと、第2のタスクとが、全てのタスクの計算が終了するまでに要する各計算ノードにおける計算時間が相互に近付くように組み合わされている情報である。すなわち、スケジュール情報321には、全ての第1のタスク及び第2のタスクが各計算ノードのいずれかに分散して所定の順序で実行されるようにスケジュールされている。尚、各計算ノードにおいてスケジュールされた全てのタスクの計算時間は、各計算ノードの間で必ずしも均一である必要はない。ここで、第1のタスクとは、複数の取引単位の種類の内、処理負荷の低い種類の取引単位を所定数まとめてなるタスクである。また、第2のタスクとは、複数の取引単位の種類の内、第1のタスクに含まれる取引単位に比べて処理負荷の高い種類の取引単位について所定数より少ない数の取引単位よりなるタスクである。所定数とは、2以上であり、処理負荷に応じて適宜変更しても構わない。処理負荷の段階に応じて、第3のタスク、第4のタスクを用いても構わない。
【0042】
処理時間記憶部330は、取引単位ごとの過去の処理時間331を記憶する記憶装置である。処理時間331とは、すなわち、各取引単位が計算ノードにおいて過去に実行された処理の実績時間である。尚、シミュレーション情報記憶部310、スケジュール情報格納部320及び処理時間記憶部330は、ハードディスクドライブ、フラッシュメモリ等の不揮発性の記憶装置であることが望ましい。
【0043】
マスタノード340は、複数の計算ノードにおける実行を制御する、グリッドコンピューティング技術における制御手段である。マスタノード340は、ジョブ生成手段341と、グループ生成手段342と、ジョブ割当手段343と、指示手段344と、スケジュール情報生成手段345とを備える。
【0044】
ジョブ生成手段341は、複数のシナリオを所定数に分類し、分類されたシナリオの実行順序を定義することにより複数のジョブを生成し、生成した複数のジョブをシミュレーション情報記憶部310にジョブ情報311として格納する。
【0045】
グループ生成手段342は、シミュレーション情報記憶部310に格納された複数のジョブに基づき、複数のグループを生成し、生成した複数のグループをシミュレーション情報記憶部310にグループ情報315として格納する。特に、グループ生成手段342は、シミュレーション情報記憶部310に格納された複数のジョブ数と同数の複数のグループを生成する。これにより、複数のジョブを各グループに一つずつ割り当てることができ、各グループを並列実行することにより、ジョブを効率的に処理することができる。
【0046】
さらに、グループ生成手段342は、複数のシナリオの数が均一となるように複数のジョブが定義されている場合に、各グループに複数の計算ノードのノード数が均一となるように割り当てるとよい。このように、複数の計算ノードを均一に各グループに割り当てることにより、各グループの処理パフォーマンスを均一に保つことができる。
【0047】
または、グループ生成手段342は、複数の計算ノードについて、複数のジョブにおける処理負荷に応じたノード数を各グループに割り当てるとよい。これにより、ジョブ当たりの処理負荷に応じて、グループに割り当てる計算ノード数を調整して、各計算ノード当たりの処理負荷を均一に保ち、各グループの処理パフォーマンスを均一に保つことができる。
【0048】
ジョブ割当手段343は、複数の計算ノードの内の2以上の計算ノードを含む複数のグループに対して、シミュレーション情報記憶部310に格納された複数のジョブを個別に割り当てる。
【0049】
指示手段344は、複数のグループのそれぞれにおける各グループに含まれる複数の計算ノードに対して、当該グループに割り当てられたジョブに定義されたシナリオの実行順序に従い、各シナリオを実行するための初期化処理の指示を行い、当該初期化処理後に当該グループに含まれる複数の計算ノードに対して、当該シナリオを分散して実行するための分散実行処理の指示を行う。ここで、初期化処理とは、各計算サーバ上のプロセスの立ち上げ処理や、マスタサーバ30から各計算サーバへ市場情報等の入力データの転送処理等である。プロセスの立ち上げ処理とは、指示を受け付ける各計算ノードにおいて分散実行処理のリソースを確保する処理である。例えば、プロセスの立ち上げ処理とは、分散実行処理の対象となる各計算サーバ内のプロセッサにおいて、グリッドコンピューティング技術における分散実行処理を実現するための機能が実装されたコンピュータプログラムを、各計算サーバ内のプロセッサにロードし、メモリ領域やディスク領域等のリソースを確保し、分散実行処理を実行可能とするための処理である。また、プロセスの立ち上げ処理には、直前に実行されたシナリオについてのプロセスにより確保されたメモリ領域をクリアする処理を含む。また、初期化処理には、取引計算を実行するために、取引単位ごとの計算処理が実装されたコンピュータプログラムを各計算サーバ内のプロセッサにロードする処理を含む。このような、各計算サーバにおける初期化処理は、他の計算サーバとは独立して実行される。すなわち、他の計算サーバにおける処理状況の影響を受けずに、各計算サーバにおいてほぼ同内容の処理が実行される。そのため、分散する計算ノードのノード数によらず、初期化処理の処理時間がほぼ一定となる。
【0050】
スケジュール情報生成手段345は、複数種類の取引単位から第1のタスク及び第2のタスクを生成する。そして、スケジュール情報生成手段345は、生成した第1のタスク及び第2のタスクを用いてスケジュール情報321を生成し、スケジュール情報格納部320に格納する。尚、スケジュール情報生成手段345は、シミュレーション処理の開始の指示以前に、予めスケジュール情報321を生成してもよい。
【0051】
但し、各タスクの処理時間は、並列して実行される他のタスクの影響を受けるため、全てのタスクの処理順序及び割り当て先の計算ノードを事前に定義したスケジュール情報321を用いることが最適とは限らない。例えば、複数の計算ノードによるDBへのアクセスの競合等により、同一のタスクであっても、実行する状況により処理時間が異なる場合がある。
【0052】
そこで、さらに好適には、スケジュール情報生成手段345は、生成した第1のタスク及び第2のタスクの中から複数の計算ノード分のタスクを当該複数の計算ノードのそれぞれに対して個別に割り当ててスケジュール情報321を生成し、複数の計算ノードの内、割り当てられたタスクの実行が終了した計算ノードに対して、第1のタスク及び第2のタスクの内、未割り当てのタスクを当該計算ノードに実行させるように割り当ててスケジュール情報321を更新することが望ましい。つまり、スケジュール情報生成手段345は、全てのタスクについてスケジュール情報321を事前に定義するのではなく、タスク実行が終わり次第、順次タスクを割り当てる。言い換えると、スケジュール情報生成手段345は、スケジュール情報321を順次、更新する。これにより、計算ノードにおけるタスクの処理の進捗に応じて、各計算ノードへ適切に、つまり、無駄なくタスクを割り当てることができる。よって、実際の処理時間に応じて均一の計算時間に近付けることができる。
【0053】
計算ノード351、352、・・・35n2は、シナリオ単位に取引計算のシミュレーション処理を実行する、グリッドコンピューティング技術における実行手段である。また、計算ノード351、352、・・・35n2は、スケジュール情報格納部320に格納されたスケジュール情報321に基づいて取引計算のシミュレーション処理を実行する。そして、計算ノード351、352、・・・35n2は、マスタノード340に割り当てられたシナリオに定義された複数のタスクを分散して実行する。
【0054】
尚、マスタノード340は、スケジュール情報格納部320に格納されたスケジュール情報321に基づいて、該当する計算ノードにスケジュールされたタスクを実行するように指示するようにしてもよい。その場合、各計算ノードは、指示されたタスクについて実行を行う。または、計算ノード351、352、・・・35n2は、スケジュール情報格納部320を参照し、自己にスケジュールされたタスクを実行してもよい。
【0055】
尚、スケジュール情報生成手段345は、指示手段344の一部の機能として実現しても構わない。つまり、スケジュール情報生成手段345は、指示手段344における分散実行処理の指示の中で実行される一部の処理であっても構わない。
【0056】
ここで、本発明の実施の形態1にかかる取引計算シミュレーションシステム3にかかる最小構成について説明する。本発明の実施の形態1にかかる取引計算シミュレーションシステム3は、上述したジョブ情報記憶部と、計算ノード351、352、・・・35n2と、マスタノード340とを備えることが必要である。このとき、マスタノード340は、少なくとも、上述したジョブ割当手段343と、指示手段344とを備えることが必要である。
【0057】
これにより、複数のシナリオをグループ単位に並列して実行することできる。そのため、各計算ノードにおいて、シナリオ単位に必要となる初期化処理の回数を減らすことができる。よって、市場情報に基づく取引計算のシミュレーション処理全体の処理時間を短くすることができる。
【0058】
さらに、複数のグループは、グループ数がジョブ情報記憶部に格納された複数のジョブ数と同数であることが望ましい。これにより、ジョブを効率的に処理することができる。
【0059】
さらに、複数のグループは、複数のシナリオの数が均一となるように複数のジョブが定義されている場合に、各グループに複数の計算ノードのノード数が均一となるように割り当てられていることが望ましい。これにより、計算ノードを均等にグループに割り当て、各グループの処理パフォーマンスを均一に保つことができる。
【0060】
さらに、本発明の実施の形態1にかかる取引計算シミュレーションシステム3は、以下の構成を有することが望ましい。本発明の実施の形態1にかかる取引計算シミュレーションシステム3は、少なくとも、上述したスケジュール情報格納部320と、計算ノード351、352、・・・35n2とを有することが望ましい。そして、スケジュール情報格納部320に格納されているスケジュール情報321は、少なくとも、複数種類の内、処理負荷の低い種類の取引単位を所定数まとめてなる第1のタスクと、第1のタスクに含まれる取引単位に比べて処理負荷の高い種類の取引単位について定数より少ない数の取引単位よりなる第2のタスクとが、全てのタスクの計算が終了するまでに要する各計算ノードにおける計算時間が相互に近付くように組み合わされていることが望ましい。
【0061】
これにより、複数の取引単位から所定数の取引単位を無作為にまとめられたタスクを用いた場合に比べて、個々のタスクにおける処理時間のばらつきを小さくすることができる。そして、複数のタスクを複数の計算ノードに分散して実行する場合に、各計算ノード間における計算時間を均一に近付けることができる。そのため、複数の計算ノードの内、一部の計算ノードにおけるタスクの実行が終了しないために、タスクの実行が終了済みの他の多くの計算ノードの待機時間を短くすることができる。それに伴い、リソースの利用効率を高めることができる。よって、市場情報に基づく複数種類の取引単位についての取引計算のシミュレーション処理全体の処理時間を短くすることができる。
【0062】
図5は、本発明の実施の形態1にかかる取引計算シミュレーションシステム3のハードウェア構成を示すブロック図である。取引計算シミュレーションシステム3は、エンクロージャ360及び370と、通信回線381とを備える。エンクロージャ360及び370は、通信回線381を介して接続されている。尚、本発明の実施の形態1にかかるエンクロージャの数は、3以上であっても構わない。
【0063】
エンクロージャ360及び370は、複数のいわゆるブレードサーバを搭載し、各ブレードサーバを個別のコンピュータとして動作させる装置である。ブレードサーバとは、独立したサーバとしての機能を実現するための必要最小限の構成を有するコンピュータ装置である。エンクロージャ360及び370は、搭載された各ブレードサーバで共有するリソースや接続機器を備える。例えば、エンクロージャ内で共有するハードディスク(不図示)やエンクロージャ内の各ブレードサーバの通信インタフェース及び電力供給を中継するバックプレーン(不図示)と呼ばれる高速な信号経路を備える。
【0064】
エンクロージャ360は、ブレードサーバであるマスタサーバ361と、計算サーバ362、・・・36n3と、通信回線382とを備える。また、マスタサーバ361、計算サーバ362、・・・36n3は、それぞれ、通信回線382に接続されている。また、通信回線382は、通信回線381と接続されている。また、計算サーバ362、・・・36n3を第1計算ノード群384と呼ぶ。
【0065】
エンクロージャ370は、ブレードサーバである計算サーバ371、372、・・・37n4と、通信回線383とを備える。また、計算サーバ371、372、・・・37n4は、それぞれ、通信回線383に接続されている。また、通信回線383は、通信回線381と接続されている。また、計算サーバ371、372、・・・37n4を第2計算ノード群385と呼ぶ。
【0066】
図6は、本発明の実施の形態1にかかるマスタサーバ361のハードウェア構成を示すブロック図である。尚、図6は、マスタサーバ361の物理的な構成の内、代表的なものを一例として示すものであり、ブレードサーバとして一般的な構成については図示及び説明を省略する。マスタサーバ361は、CPU(Central Processing Unit)41a、41b、・・・41mと、メモリ42a、42b、・・・42mと、IF部43と、ハードディスク44とを備える。また、CPU41aとメモリ42aとは一対となって動作するため、ノード45aと呼ぶ。同様に、CPU41bとメモリ42bとをノード45b、・・・CPU41mとメモリ42mとをノード45mとそれぞれ呼ぶ。
【0067】
CPU41a、41b、・・・41mは、ノードごとの処理を制御するためのプロセッサである。メモリ42a、42b、・・・42mは、RAM(Random Access Memory)等の主記憶装置である。尚、メモリ42a、42b、・・・42mは、物理的に一つの主記憶装置を論理的に分割して実現しても構わない。IF部43は、上述したバックプレーンと接続され、通信回線382を介して、第1計算ノード群384及び第2計算ノード群385、エンクロージャ360内の他のリソース等との通信を行う。
【0068】
また、ハードディスク44は、不揮発性記憶装置であり、OS(Operating System)441と、分散サーバプログラム442と、取引計算シミュレーションプログラム443とが格納されている。分散サーバプログラム442は、マスタサーバ361をグリッドコンピューティング技術におけるマスタノードとして機能させるためのミドルウェアである。取引計算シミュレーションプログラム443は、上述したジョブ生成手段341と、グループ生成手段342と、ジョブ割当手段343と、指示手段344と、スケジュール情報生成手段345とによる各処理が実装されたコンピュータプログラムである。尚、ハードディスク44は、シミュレーション情報記憶部310と、スケジュール情報格納部320と、処理時間記憶部330とをさらに含むものであってもよい。または、ハードディスク44は、エンクロージャ360内、かつ、マスタサーバ361の外部に存在していても構わない。
【0069】
以下の説明では、ノード45aが図2のマスタノード340に対応するものとする。但し、他のノードや複数のCPU及びメモリの対をマスタノード340に対応するものとしても構わない。CPU41aは、マスタノード340としての各種処理、メモリ42a、IF部43及びハードディスク44へのアクセス等を制御する。
【0070】
マスタサーバ361は、少なくともCPU41aがメモリ42a又はハードディスク44に格納されたOS441と、分散サーバプログラム442と、取引計算シミュレーションプログラム443とを読み込み、実行する。これにより、マスタノード340として動作する。尚、ノード45a以外のノードを分散処理の管理用のノードや計算ノードとして使用しても構わない。
【0071】
図7は、本発明の実施の形態1にかかる計算サーバ362のハードウェア構成を示すブロック図である。尚、第1計算ノード群384の他の計算サーバや第2計算ノード群385の計算サーバについても同様の構成であるため、図示及び説明を省略する。また、図7において、図6と同等の構成については、同じ符号を付し、詳細な説明を省略する。
【0072】
IF部43は、上述したバックプレーンと接続され、通信回線382を介して、マスタサーバ361、計算サーバ362以外の第1計算ノード群384及び第2計算ノード群385、エンクロージャ360内の他のリソース等との通信を行う。
【0073】
計算サーバ362において、ハードディスク44には、OS444と、分散クライアントプログラム445と、取引計算プログラム446とが格納されている。尚、OS444は、マスタノード340に用いられるOS441と異なる種類であってもよい。分散クライアントプログラム445は、グリッドコンピューティング技術における計算ノードとして機能させるためのミドルウェアであり、上述した初期化処理及び分散実行処理を実現するための機能等が実装されたコンピュータプログラムである。取引計算プログラム446は、各取引単位における取引計算の各処理が実装されたコンピュータプログラムである。
【0074】
ノード45a、45b、・・・45mは、それぞれ、図2の計算ノード351、352、・・・35n2のいずれかに対応するものとする。計算サーバ362は、例えば、CPU41aがメモリ42a又はハードディスク44に格納されたOS444と、分散クライアントプログラム445と、取引計算プログラム446とを読み込み、実行する。これにより、計算サーバ362は、計算ノード351として動作する。尚、ノード45a以外のノードを分散処理の管理用のノードや計算ノードとして使用しても構わない。但し、ノード45a、45b、・・・45mの内、一部を分散処理における制御用に用いても構わない。
【0075】
図8は、本発明の実施の形態1にかかる取引計算シミュレーション処理の流れを示すフローチャートである。前提として、取引計算シミュレーションシステム3は、APサーバ1から取引計算のシミュレーション処理を開始する指示を受け付けたものとする。まず、マスタノード340は、ジョブを生成する(S11)。具体的には、まず、ジョブ生成手段341は、シミュレーション情報記憶部310に格納されたシナリオ情報312を参照し、シナリオ情報312に定義された複数のシナリオを所定数に分類する。このとき、ジョブ生成手段341は、複数のシナリオの数が均一となるように分類するとよい。または、ジョブ生成手段341は、マスタノード340が利用可能な計算ノードの数に応じて所定数を定めても構わない。
【0076】
次に、ジョブ生成手段341は、分類されたシナリオの実行順序を定義することにより複数のジョブを生成する。また、ジョブ生成手段341は、各ジョブにおいて、定義されたシナリオが直列に実行されるように定義する。そして、ジョブ生成手段341は、生成した複数のジョブをシミュレーション情報記憶部310にジョブ情報311として格納する。
【0077】
続いて、マスタノード340は、グループを生成する(S12)。具体的には、まず、グループ生成手段342は、シミュレーション情報記憶部310を参照し、ジョブ情報311に含まれるジョブ数と同数のグループを生成する。次に、ジョブ割当手段343は、生成した各グループに計算ノードを割り当てる。例えば、各ジョブに定義されたシナリオ数が均一相当である場合、ジョブ割当手段343は、各グループに計算ノードのノード数が均一となるように割り当てる。または、グループ生成手段342は、ジョブに定義されたシナリオの処理負荷に応じたノード数を各グループに割り当てる。そして、グループ生成手段342は、計算ノードが割り当てられたグループをシミュレーション情報記憶部310にグループ情報315として格納する。
【0078】
そして、マスタノード340は、各グループにジョブを割り当てるジョブ割当処理を実行する(S13)。すなわち、ジョブ割当手段343は、ステップS12にて生成された複数のグループに対して、シミュレーション情報記憶部310に格納された複数のジョブを個別に割り当てる。
【0079】
図9は、本発明の実施の形態1にかかるジョブ割当処理の流れを示すフローチャートである。まず、ジョブ割当手段343は、グループを選択する(S21)。具体的には、ジョブ割当手段343は、シミュレーション情報記憶部310を参照し、グループ情報315の内、一つを選択する。次に、ジョブ割当手段343は、ジョブを選択する(S22)。具体的には、ジョブ割当手段343は、シミュレーション情報記憶部310を参照し、ジョブ情報311の内、一つを選択する。
【0080】
そして、ジョブ割当手段343は、選択されたグループに選択されたジョブを割り当てる(S23)。尚、ジョブ割当手段343は、割り当てられたジョブとグループに対応付けてシミュレーション情報記憶部310に格納されたグループ情報315を更新する。続いて、ジョブ割当手段343は、未選択のグループが存在するか否かを判定する(S24)。具体的には、ジョブ割当手段343は、シミュレーション情報記憶部310を参照し、グループ情報315の内、未選択のグループが存在するか否かを判定する。未選択のグループが存在すると判定した場合、ジョブ割当手段343は、未選択のジョブが存在するか否かを判定する(S25)。具体的には、ジョブ割当手段343は、シミュレーション情報記憶部310を参照し、ジョブ情報311の内、未選択のジョブが存在するか否かを判定する。未選択のジョブが存在すると判定した場合、ジョブ割当手段343は、未選択のグループ及びジョブを選択する(S26)。そして、全てのグループ又はジョブが選択し終えるまでの間、ステップS23乃至S26を繰り返し実行する。
【0081】
ステップS24において未選択のグループが存在しないと判定した場合又はステップS25において未選択のジョブが存在しないと判定した場合、ジョブ割当処理を終了する。
【0082】
図8に戻り、その後、マスタノード340は、グループ毎にジョブを実行させるためのジョブ実行指示処理を実行する(S14)。すなわち、指示手段344は、グループ毎にジョブ実行指示処理を実行する。このとき、指示手段344は、各グループに対して直列又は並列にジョブ実行指示処理を実行する。
【0083】
図10は、本発明の実施の形態1にかかるグループ内のジョブ実行指示処理の流れを示すフローチャートである。まず、指示手段344は、シナリオを選択する(S31)。具体的には、まず、指示手段344は、シミュレーション情報記憶部310を参照し、ジョブ情報311及びグループ情報315から、当該グループに割り当てられたジョブを特定する。次に、指示手段344は、特定されたジョブに定義されたシナリオの実行順序の内、最初のシナリオを選択する。
【0084】
次に、指示手段344は、グループ内の各計算ノードに初期化処理を指示する(S32)。このとき、指示手段344は、初期化処理の指示に併せて、選択されたシナリオを指定する。このとき、指示手段344は、各計算ノードに対して直列又は並列に初期化処理を指示する。そして、指示手段344は、グループ内の各計算ノードに分散実行処理を指示する(S33)。このとき、指示手段344は、グループ内の各計算ノードにおいて、初期化処理が終了し次第、当該計算ノードに対して分散実行処理を指示する。尚、分散実行処理を指示する処理である分散実行指示処理の詳細は、図11にて後述する。
【0085】
続いて、指示手段344は、未選択のシナリオが存在するか否かを判定する(S34)。具体的には、指示手段344は、当該グループに割り当てられたジョブに定義されたシナリオの内、未選択のシナリオが存在するか否かを判定する。未選択のシナリオが存在すると判定した場合、指示手段344は、未選択のシナリオの内、実行順序が最初のシナリオを選択する(S35)。そして、全てのシナリオが選択し終えるまでの間、ステップS32乃至S35を繰り返し実行する。
【0086】
ステップS34において未選択のシナリオが存在しないと判定した場合、グループ内のジョブ実行指示処理を終了する。
【0087】
図11は、本発明の実施の形態1にかかる分散実行指示処理の流れを示すフローチャートである。以下では、スケジュール情報生成手段345が指示手段344の一部の機能であるものとして説明する。まず、スケジュール情報生成手段345は、タスク生成処理を行う(S40)。すなわち、スケジュール情報生成手段345は、シミュレーション情報記憶部310を参照し、シナリオ情報312及び取引情報314から指定されたシナリオについてのタスク情報313を生成する。尚、タスク生成処理の詳細は、図13及び図15にて後述する。
【0088】
次に、スケジュール情報生成手段345は、グループ内の計算ノードを選択する(S41)。具体的には、スケジュール情報生成手段345は、シミュレーション情報記憶部310を参照し、指定されたグループに定義された計算ノードの内、一つを選択する。そして、スケジュール情報生成手段345は、シナリオ内のタスクを選択する(S42)。具体的には、スケジュール情報生成手段345は、シミュレーション情報記憶部310を参照し、当該シナリオに定義されたタスクの内、ソート順で1番目のタスクを選択する。
【0089】
続いて、スケジュール情報生成手段345は、選択した計算ノードに選択したタスクを割り当てる(S43)。つまり、スケジュール情報生成手段345は、スケジュール情報格納部320に格納されたスケジュール情報321を更新する。具体的には、スケジュール情報生成手段345は、スケジュール情報321の内、選択した計算ノードにスケジュールされたタスクの末尾に、当該選択したタスクを追加する。また、スケジュール情報生成手段345は、スケジュール情報格納部320を参照し、スケジュール情報321の内、選択した計算ノードに設定されたタスクを、当該計算ノードへ通知して、実行させる。
【0090】
その後、スケジュール情報生成手段345は、未選択のタスクが存在するか否かを判定する(S44)。具体的には、スケジュール情報生成手段345は、スケジュール情報格納部320を参照し、タスクが不実行である計算ノードについてのスケジュール情報321の内、未選択のタスクが存在するか否かを判定する。ステップS44において、未選択のタスクが存在すると判定した場合、スケジュール情報生成手段345は、当該グループの計算ノードの内、タスクが不実行、すなわち、タスクが実行されていない計算ノードが存在するか否かを判定する(S45)。例えば、スケジュール情報生成手段345は、当該グループの計算ノードの内、タスクが未割り当ての計算ノードが存在するか否か、及び、計算ノードから割り当てたタスクの実行が終了した旨の通知が届いているか否かを判定する。ステップS45において、タスクが不実行である計算ノードが存在しないと判定した場合、スケジュール情報生成手段345は、所定時間、処理を待機する(S46)。そして、所定時間経過後に、再度、ステップS45を実行する。ステップS45において、タスクが不実行である計算ノードが存在すると判定した場合、スケジュール情報生成手段345は、タスクが不実行である計算ノードと、未選択のタスクの内、先頭にスケジュールされたタスクを選択する(S47)。そして、全ての計算ノードについてスケジュールされた全てのタスクが選択し終えるまでの間、ステップS43乃至S47を繰り返し実行する。このとき、ステップS43においては、スケジュール情報生成手段345は、複数の計算ノードの内、割り当てられたタスクの実行が終了した計算ノードに対して、第1のタスク及び第2のタスクの内、未割り当てのタスクを当該計算ノードに実行させるように割り当ててスケジュール情報321を更新することとなる。
【0091】
図12は、本発明の実施の形態1にかかるスケジュール情報の例を示す図である。図12では、計算ノードN1にタスクT11、T14、・・・の順序で、計算ノードN2にタスクT12、T15、・・・の順序で、また、計算ノードN3にタスクT13、T16、・・・の順序で実行するようにスケジュールされていることを示す。
【0092】
図11に戻り、ステップS44において、未選択のタスクが存在しないと判定した場合、スケジュール情報生成手段345は、グループ内の全ての計算ノードにおいてタスクの実行が終了したか否かを判定する(S48)。具体的には、スケジュール情報生成手段345は、当該グループの計算ノードの内、全ての計算ノードから割り当てたタスクの実行が終了した旨の通知が届いているか否かを判定する。ステップS48において、タスクの実行が終了していない計算ノードが存在すると判定した場合、スケジュール情報生成手段345は、所定時間、処理を待機する(S49)。そして、所定時間経過後に、再度、ステップS48を実行する。ステップS48において、全ての計算ノードにおいてタスクの実行が終了したと判定した場合、分散実行指示処理を終了する。
【0093】
続いて、本発明の実施の形態1にかかるタスク生成処理の一例について説明する。ここでは、タスク生成処理として、スケジュール情報生成手段345は、取引単位の種類について、処理負荷が低い種類又は高い種類のいずれであるかを判定し、処理負荷が低い種類であると判定された取引単位を所定数にまとめて第1のタスクを生成し、処理負荷が高い種類であると判定された取引単位を第2のタスクとして生成する。
【0094】
図13は、本発明の実施の形態1にかかる上述したタスク生成処理の一例の流れを示すフローチャートである。まず、スケジュール情報生成手段345は、取引情報を選択する(S51)。具体的には、スケジュール情報生成手段345は、シミュレーション情報記憶部310を参照し、取引情報314の内、一つを選択する。
【0095】
次に、スケジュール情報生成手段345は、処理負荷が低いか否かを判定する(S52)。具体的には、スケジュール情報生成手段345は、選択した取引情報314に含まれる取引単位の種類が簡易な計算であることを示すか否かを判定する。そのため、マスタノード340は、予め簡易な計算を示す取引単位の種類のリストを有しているものとする。
【0096】
ステップS52において、処理負荷が低いと判定した場合、スケジュール情報生成手段345は、選択した取引情報を取引群Aへ分類する(S53)。具体的には、スケジュール情報生成手段345は、メモリ42a内の取引群Aを定義した領域に当該取引単位の識別情報を格納する。また、ステップS52において、処理負荷が高いと判定した場合、スケジュール情報生成手段345は、選択した取引情報を取引群Bへ分類する(S54)。例えば、スケジュール情報生成手段345は、メモリ42a内の取引群Bを定義した領域に当該取引単位の識別情報を格納する。
【0097】
その後、スケジュール情報生成手段345は、未選択の取引情報が存在するか否かを判定する(S55)。具体的には、スケジュール情報生成手段345は、シミュレーション情報記憶部310を参照し、取引情報314の内、未選択の取引情報が存在するか否かを判定する。ステップS55において、未選択の取引情報が存在すると判定した場合、スケジュール情報生成手段345は、取引情報を選択する(S56)。そして、全ての取引情報が選択し終えるまでの間、ステップS52乃至S56を繰り返し実行する。
【0098】
ステップS55において、未選択の取引情報が存在しないと判定した場合、スケジュール情報生成手段345は、取引群Aに分類された所定数の取引情報を1タスクとして生成する(S57)。具体的には、まず、スケジュール情報生成手段345は、メモリ42aを参照し、取引群Aを定義した領域から所定数の取引情報を選択する。次に、スケジュール情報生成手段345は、選択した取引情報を1タスクつまり第1のタスクとして、シミュレーション情報記憶部310に格納されたタスク情報313に追加する。そして、取引群Aに含まれる全ての取引情報が選択し終えるまでの間、繰り返し実行する。尚、ステップS57において、最後に生成されるタスクに含まれる取引情報の数は、所定数以下であっても構わない。
【0099】
同時に、スケジュール情報生成手段345は、取引群Bに分類された各取引情報を1タスクとして生成する(S58)。具体的には、まず、スケジュール情報生成手段345は、メモリ42aを参照し、取引群Bを定義した領域から一つの取引情報を選択する。次に、スケジュール情報生成手段345は、選択した取引情報を1タスクつまり第2のタスクとして、シミュレーション情報記憶部310に格納されたタスク情報313に追加する。そして、取引群Bに含まれる全ての取引情報が選択し終えるまでの間、繰り返し実行する。尚、ステップS58において、選択される取引情報は、所定数未満であれば2以上であっても構わない。いずれにしても、処理負荷の高い取引単位については、第1のタスクより少ない取引単位とすることで、第1のタスクと第2のタスクとの処理時間の差を近づけることができる。尚、ステップS57及びS58は、いずれかを先に実行しても構わない。
【0100】
図14は、本発明の実施の形態1にかかる取引情報の種類の例を示す図である。取引A1乃至取引A9は、処理負荷の低い取引単位を示し、取引群Aに分類されることを示す。そして、ここでは、所定数を"5"とし、取引群Aに分類される取引単位の総数は、"900"であり、第1のタスクの数は、"180"となる。一方、取引B1乃至取引B11は、処理負荷の高い取引単位を示し、取引群Bに分類されることを示す。そして、取引群Bに分類される取引単位の総数は、"110"であり、第2のタスクの数は、同じく"110"となる。
【0101】
また、本発明の実施の形態1にかかるタスク生成処理の他の例について説明する。ここでは、タスク生成処理として、スケジュール情報生成手段345は、処理時間記憶部330に格納された処理時間331が閾値より短い取引単位を処理負荷が低い種類であると判定し、処理時間331が閾値以上である取引単位を処理負荷が高い種類であると判定する。さらに、スケジュール情報生成手段345は、処理時間記憶部330に格納された処理時間331に基づき、第1のタスク及び第2のタスクの処理時間の予測時間を算出し、第1のタスク及び第2のタスクの内、予測時間が長いタスクを優先して実行させるようにスケジュール情報321を生成する。
【0102】
図15は、本発明の実施の形態1にかかる上述したタスク生成処理の他の例の流れを示すフローチャートである。以下の説明において、図13と同様の処理については、同じ符号を付し、適宜、説明を省略する。また、ここでは、処理時間記憶部330には、各取引単位の過去の処理時間331が予め格納済みであるものとする。また、処理時間の閾値が定められているものとする。
【0103】
ステップS51の後、スケジュール情報生成手段345は、処理時間が閾値より短いか否かを判定する(S61)。具体的には、スケジュール情報生成手段345は、処理時間記憶部330を参照し、選択した取引情報に対応する処理時間331が閾値より短いか否かを判定する。以下、ステップS53乃至S56は、図13と同様である。これにより、過去の処理実績を用いてより正確な分類を行うことができる。
【0104】
また、ステップS57及びS58の後、スケジュール情報生成手段345は、タスクごとに処理時間の予測時間を算出する(S62)。具体的には、スケジュール情報生成手段345は、生成した各タスクについて、処理時間記憶部330を参照し、タスクに含まれる取引単位に対応する処理時間331を取得し、合算することにより予測時間を算出するする。そして、スケジュール情報生成手段345は、予測時間をタスクに対応付けてシミュレーション情報記憶部310のタスク情報313を更新する。
【0105】
その後、スケジュール情報生成手段345は、予測時間の降順で全タスクをソートする(S63)。具体的には、スケジュール情報生成手段345は、シミュレーション情報記憶部310を参照し、タスク情報313の内、各タスクに対応付けられた予測時間について降順でソートをし、ソート結果の順序によりタスク情報313を更新する。これにより、処理時間が長いタスクを優先的に計算ノードへ割り当て、先に処理をさせることとなる。そのため、当該シナリオにおける生成されたタスク数が計算ノードのノード数の整数倍でない場合であっても、後半のタスクは処理時間がより短いため、タスクが実行済みの計算ノードの待ち時間は少なくなる。よって、各計算ノード間で均一の計算時間に近付けることができる。
【0106】
さらに、スケジュール情報生成手段345は、処理時間記憶部330に格納された処理時間331に基づき、第1のタスクの処理時間の予測時間と第2のタスクの処理時間の予測時間との差が小さくなるようにタスクを生成してもよい。具体的には、ステップS57及びS58における所定数を調整する。例えば、取引群Aに分類された取引単位の処理時間の平均値と取引群Bに分類された取引単位の処理時間の平均値との最小公倍数を算出する。そして、それぞれの平均値が最小公倍数となるような所定数を算出してもよい。これにより、各計算ノード間での計算時間のばらつきをさらに小さくすることができる。
【0107】
図16は、本発明の実施の形態1にかかる計算ノードのシナリオ単位のシミュレーション処理の流れを示すフローチャートである。ここでは、計算ノード351についての処理として説明する。また、計算ノード351は、図7における計算サーバ362内のノード45aであるものとする。まず、計算ノード351は、マスタノード340からシナリオを受け付ける(S71)。具体的には、計算ノード351は、マスタノード340の指示手段344から初期化処理の指示と併せてシナリオの指定を受け付ける。
【0108】
次に、計算ノード351は、初期化処理を実行する(S72)。具体的には、まず、計算ノード351が属する計算サーバ362は、分散クライアントプログラム445のプロセスを起動する。例えば、まず、メモリ42aの内容をクリアする。そして、CPU45aは、ハードディスク44から分散クライアントプログラム445及び取引計算プログラム446を読み込み、受け付けたシナリオの実行に必要なメモリ領域及びディスク領域等を確保する。そして、計算ノード351は、マスタノード340から転送される市場情報等の入力データを受信する。
【0109】
その後、計算ノード351は、タスクを受け付けたか否かを判定する(S73)。マスタノード340の指示手段344は、初期化処理が終了し次第、当該計算ノードに対して分散実行処理を指示するため、ステップS72の後は、計算ノード351は、直ちに実行すべきタスクを受け付ける。ステップS73において、タスクを受け付けたと判定した場合、計算ノード351は、取引計算プログラム446に基づいて、受け付けたタスクを実行する(S74)。具体的には、計算ノード351は、受け付けたタスクに含まれる取引単位を確認し、必要に応じて、当該取引単位に関する取引データをDBサーバ2から取得する。そして、計算ノード351は、入力データと、取得した取引データとを用いて当該取引単位における計算処理を実行する。
【0110】
計算ノード351は、タスクに含まれる全ての取引単位についての計算処理を直列に実行する。計算ノード351は、タスクに含まれる全ての取引単位についての計算処理が終了後に、各取引単位の実行結果をまとめてDBに格納する(S75)。その後、計算ノード351は、マスタノード340へ割り当てられたタスクの実行が終了した旨を通知する(S76)。そして、ステップS73において、タスクを受け付けないと判定するまでの間、ステップS73乃至S76を繰り返し実行する。尚、ステップS73において、タスクを受け付けないと判定するには、例えば、計算ノード351は、マスタノード340から明示的にシナリオを終了する通知を受け付けるまで待機し続けてもよい。
【0111】
続いて、図20、図21及び図22を用いて本発明の実施の形態1にかかる取引計算シミュレーションシステム3にかかる第1の効果を説明する。ここでは、500シナリオを125の計算ノードによりシミュレーション処理を行う場合について、従来の手法及び本発明の実施の形態1にかかる手法とを比較する。また、従来の手法を「1ジョブに全シナリオを割り当てて実行する」こととする。
【0112】
図20(a)は、従来の手法におけるジョブとグループの例を示す図である。ジョブJ1には、シミュレーション処理の対象である全てのシナリオが定義されている。また、グループG1には、全ての計算ノードが定義されている。そして、グループG1にジョブJ1が割り当てられていることを示す。
【0113】
図21は、従来の手法により発生する課題を説明するための図である。まず、ジョブJ1に定義されたシナリオの内、実行順序が最初のシナリオS1がグループG1に定義された125の計算ノードに対して分散して並列に実行される。このとき、各計算ノードは、それぞれシナリオS1を実行するための初期化処理を実行する。その後、シナリオS1に定義された複数のタスクを各計算ノードに分散して実行する。ここで、シナリオS1の分散実行処理の処理時間をシナリオ処理時間L41とする。以後、シナリオS2〜S500のそれぞれについて、同様に、初期化処理及び分散実行処理が実行される。ジョブJ1の全てのシナリオの処理時間をジョブ処理時間L4とする。
【0114】
シナリオ処理時間L41は、分散実行処理を行う計算ノードのノード数が多いほど、短くなる。その理由は、計算ノード当たりに割り当てられる1シナリオのタスク数が少なくなるためである。しかし、ノード数を多くしたとしても、各計算ノードにおける初期化処理時間が受ける影響は、小さい。その理由は、初期化処理がプロセスの立ち上げ処理やタスクに共通の入力データの転送処理であるため、割り当てられるタスク数に関係がないためである。そのため、複数のシナリオを直列に実行する限り、シナリオ数分の初期化処理時間が必要となる。そして、ノード数が多いほど、分散実行処理時間に対する初期化処理時間の比率が大きくなり、初期化処理の回数の影響が大きくなるという課題が発生する。
【0115】
図20(b)は、本発明の実施の形態1におけるジョブとグループの例を示す図である。ジョブJ1〜J5には、それぞれシナリオ数が均一となるように定義されている。グループG1〜G5には、計算ノードのノード数が均一となるように定義されている。また、グループ数は、ジョブ数と同数である。
【0116】
図22は、本発明の実施の形態1にかかるシナリオの並列実行による効果を説明するための図である。まず、ジョブJ1〜J5がそれぞれグループG1〜G5に個別に割り当てられる。以後、ジョブJ1〜J5は並列に実行される。そして、各グループにおいて、割り当てられたジョブに定義された定義されたシナリオの内、実行順序が最初のシナリオS1〜S5が各計算ノードに対して分散して並列に実行される。このとき、グループG1に含まれる各計算ノードは、シナリオS1を実行するための初期化処理を実行する。その後、シナリオS1に定義された複数のタスクを各計算ノードに分散して実行する。ここで、シナリオS1の分散実行処理の処理時間をシナリオ処理時間L51とする。同様に、並行して、グループG2〜G5に含まれる各計算ノードは、シナリオS2〜S5を実行するための初期化処理及び分散実行処理を実行する。以後、各ジョブに定義されたシナリオの実行順序に従い、シナリオS6〜S496、S7〜S497、S8〜S498、S9〜S499及びS10〜S500のそれぞれについて、同様に、初期化処理及び分散実行処理が実行される。ジョブJ1〜J5の全てのシナリオの処理時間をジョブ処理時間L5とする。そのため、図21の例に比べて、短縮時間L6分が短縮されることとなる。
【0117】
図22では、図21に比べてグループ当たりのノード数が減るため、1計算ノード当たりに割り当てられる1シナリオのタスク数が多くなる。そのため、分散実行処理の時間は、シナリオ処理時間L41に比べてシナリオ処理時間L51が長くなる。一方で、初期化処理の時間は、図21及び図22において差が小さい。しかし、1計算ノード当たりに割り当てられるシナリオ数は、図21に比べて少なくなる。そのため、1計算ノード当たりの初期化処理の回数が少なくなる。つまり、複数のシナリオを並列に実行することにより、シナリオ毎に計算ノードにおいて実行される初期化処理の回数を抑えることができる。
【0118】
さらに、図17、図18及び図19を用いて本発明の実施の形態1にかかる取引計算シミュレーションシステム3にかかる第2の効果を説明する。図17(a)は、第1の効果を説明するために用いる取引単位の例を示す図である。ここでは、取引D1〜D30は、処理負荷の低い取引単位であり、取引D31〜D39は、処理負荷の高い取引単位である。以下の説明では、図17(a)に例示した39の取引単位を1シナリオとし、従来の手法及び本発明の実施の形態1にかかる手法とを用いて、当該シナリオを対象としたシミュレーション処理を行った場合を比較する。ここでは、図17(a)に例示した39の取引単位について、所定のタスクに分類したものを5つの計算ノードN1乃至N5により分散実行させるものとする。また、従来の手法を「5取引ずつを無作為に8つのタスクに分類する」こととする。
【0119】
図17(b)は、図17(a)の取引単位について、5取引ずつを無作為に8つのタスクに分類した場合の例を示す図である。ここで、タスクT1、T6〜T8は、処理負荷の低い取引単位のみを含む。タスクT3及びT5は、処理負荷の高い取引単位が1つと、処理負荷の低い取引単位が4つとを含む。タスクT4は、処理負荷の高い取引単位が2つと、処理負荷の低い取引単位が2つとを含む。タスクT2は、処理負荷の高い取引単位のみを含む。
【0120】
図18は、図17(b)におけるタスクを分散実行させた場合に発生する課題を説明するための図である。まず、計算ノードN1〜N5は、それぞれタスクT1〜T5の実行を開始する。次に、計算ノードN1は、他の計算ノードよりも短い時間にタスクT1の実行を終了する。それに伴い、計算ノードN1は、タスクT6の実行を開始する。その後、計算ノードN3及びN5は、タスクT3及びT5の実行を終了し、続いて、タスクT7及びT8の実行を開始する。この時点で、処理対象のタスクが全て選択済みとなる。以後は、全ての計算ノードにおいて、タスクの実行が終了することによりシナリオが終了することとなる。ここでは、計算ノードN2がタスクT2の実行を終了することにより、当該シナリオ全体が終了することとなる。当該シナリオの全タスクの処理時間は、シナリオ処理時間L1となる。
【0121】
つまり、5つの計算ノードの内、4つの計算ノードにおいてタスクの実行が終了済みであったとしても、1つの計算ノードN2がタスクT2を実行中であるため、シナリオの処理は終了しない。計算ノードN1、N3、N4及びN5は、シナリオ処理時間L1の内、後半の時間帯は、割り当てるタスクが存在しないため、タスクを実行することができず、終了待ち時間L11〜L14が生じる。そのため、従来の手法では、タスクの処理が終了した計算ノードN1、N3、N4、N5において、それぞれ終了待ち時間L11〜L14の分のリソースが有効に利用されないという課題が発生する。
【0122】
図17(c)は、図17(a)の取引単位について、所定数を"5"として、本発明の実施の形態1にかかる取引計算シミュレーションシステム3における第1のタスクと第2のタスクとに分類した場合の例を示す図である。ここでは、タスクT1、T6、T8、T10、T14及びT15が第1のタスクである。また、タスクT2〜T5、T7、T9及びT11〜T13が第2のタスクである。図17(c)に示すように、第1のタスクには、図17(a)における処理負荷の低い取引単位である取引D1〜D30について5取引ごとに分類されている。また、第2のタスクには、図17(a)における処理負荷の高い取引単位である取引D31〜D39について1取引ごとに分類されている。
【0123】
図19は、本発明の実施の形態1にかかる第1のタスク及び第2のタスクによる効果を説明するための図である。まず、計算ノードN1〜N5は、それぞれタスクT1〜T5の実行を開始する。次に、計算ノードN1〜N5は、タスクT1〜T5の実行を概ね同時間にて終了し、引き続き、タスクT6〜T10の実行、そして、タスクT11〜T15の実行を開始する。その後、計算ノードN1〜N5は、タスクT11〜T15の実行を概ね同時間にて終了する。つまり、各計算ノードの間で均一の計算時間となるように実行される。当該シナリオの全タスクの処理時間は、シナリオ処理時間L2となる。そのため、図18の例に比べて、短縮時間L3分が短縮されることとなる。
【0124】
このように、取引単位の種類により計算処理における処理時間が極端に異なるという特徴がある場合、処理時間に起因する処理負荷に基づき、取引単位を第1のタスク又は第2のタスクのいずれかへ分類することにより、個々のタスクの処理時間のかい離幅が小さくなる。言い換えると、一部のタスクの処理時間が著しく長くなる可能性が低くなる。そのため、複数の計算サーバに複数のタスクを分散して実行させると、計算時間の差が小さくなる。つまり、タスクごとの処理時間を平準化することにより、分散処理におけるリソースを効率的に利用することができる。
【0125】
以上のことから、本発明の実施の形態1にかかる取引計算シミュレーションシステム3により、シミュレーション処理全体の処理時間を短くすることができる。
【0126】
<発明の実施の形態2>
上述した本発明の実施の形態1にかかる計算ノード351、352、・・・35n2は、同等の機能を実現するものであるが、取引計算シミュレーションシステム3の物理構成によっては、各計算ノードにおける処理パフォーマンスの差が生じ得る。例えば、上述した図5の場合、第1計算ノード群384は、マスタサーバ361と同一のエンクロージャ360内に搭載されている。一方、第2計算ノード群385は、エンクロージャ360とは異なるエンクロージャ370内に搭載されている。すなわち、第1計算ノード群384は、エンクロージャ360内の通信回線382を介してマスタサーバ361と接続されている。一方、第2計算ノード群385は、エンクロージャ370内の通信回線383、エンクロージャ間を接続する通信回線381及びエンクロージャ360内の通信回線382を介してマスタサーバ361と接続されている。
【0127】
ここで、例えば、通信回線381が通信回線382及び383に比べて低速であることがあり得る。このとき、マスタサーバ361にとって、第1計算ノード群384と第2計算ノード群385とは回線速度の差から処理パフォーマンスに差が生じ得る。そこで、本発明の実施の形態2では、複数の計算ノード間で接続される通信回線の速度の差に伴う処理パフォーマンスの差を考慮した場合の実施例を示す。本発明の実施の形態2にかかる取引計算シミュレーションシステムは、本発明の実施の形態1に改良を加えたものである。以下、実施の形態1との違いを中心に説明し、実施の形態1と同等の構成及び処理については、図示及び詳細な説明を省略する。
【0128】
まず、本発明の実施の形態2にかかる実施例1は、1グループ内の処理パフォーマンスを向上させるものである。実施例1にかかる取引計算シミュレーションシステムは、マスタノードと複数の計算ノードの一部である第1計算ノード群とが接続される第1の通信回線と、第1の通信回線より低速の通信回線であり、第1計算ノード群以外の計算ノードである第2計算ノード群と第1の通信回線とが接続される第2の通信回線とを備える。ここで、マスタノードは、複数の計算ノードにおける実行を制御し、少なくともスケジュール情報生成手段(例えば、本発明の実施の形態1にかかるスケジュール情報生成手段345)を有する。また、スケジュール情報生成手段は、第2計算ノード群に属する計算ノード数を第1計算ノード群に属する計算ノード数より少なく選択する。そして、スケジュール情報生成手段は、第1計算ノード群に属する計算ノード及び第2計算ノード群から選択した計算ノードのそれぞれに対して、生成した第1のタスク及び第2のタスクの中のタスクを個別に割り当ててスケジュール情報を生成する。
【0129】
第1計算ノード群は、マスタサーバと同一のエンクロージャに搭載される計算サーバである。また、第2計算ノード群は、マスタサーバとは異なるエンクロージャに搭載される計算サーバである。第2計算ノード群は、マスタノードと低速な通信回線を介して接続されているため、第1計算ノード群に比べてマスタノードからの指示やタスクの受け付け及びデータの転送等の時間が長くなる。そのため、ネットワークがボトルネックとなり、1タスクの処理時間が相対的に長くなる。さらに、マスタノードにとって、第2計算ノード群に属する計算ノードについて所定時間応答がないと判定され、利用不可とみなされる場合があり、タスクの実行自体は終了している計算ノードが利用されなくなり、リソースの利用効率が悪くなる。
【0130】
そして、例えば、エンクロージャ数が3台以上である場合、利用可能な計算サーバの全台数の内、第1計算ノード群に属する計算ノードが占める割合は、半分以下となる。よって、通信回線の低速又は高速を考慮せずに無作為に計算ノードを選択した場合、第2計算ノード群に属する計算ノード数が第1計算ノード群に属する計算ノード数より多くなってしまう。
【0131】
図23(a)は、本発明の実施の形態2にかかる実施例1により選択される計算ノードの例を示す図である。グループG1には、第1計算ノード群から9つの計算ノード、第2計算ノード群から3つの計算ノードが選択されていることを示す。実施例1では、利用可能な計算サーバの全てを同等して扱うのではなく、第2計算ノード群に属する計算ノード数を第1計算ノード群に属する計算ノード数より少なく選択することで、1タスク当たりの処理時間が相対的に短い第1計算ノード群に属する計算ノードに対して繰り返して多くのタスクを実行させることができる。そのため、1シナリオ当たりの処理時間を短くすることができる。
【0132】
次に、本発明の実施の形態2にかかる実施例2は、ジョブ間の処理時間を均一になるようにして、処理パフォーマンスを向上させるものである。実施例2にかかる取引計算シミュレーションシステムは、マスタノードと複数の計算ノードの一部である第1計算ノード群とが接続される第1の通信回線と、第1の通信回線より低速の通信回線であり、第1計算ノード群以外の計算ノードである第2計算ノード群と第1の通信回線とが接続される第2の通信回線とを備える。マスタノードは、少なくともグループ生成手段(例えば、本発明の実施の形態1にかかるグループ生成手段342)を有する。そして、グループ生成手段は、第1の通信回線及び第2の通信回線の通信速度に基づき、第1計算ノード群及び第2計算ノード群から選択した計算ノードを用いて複数のグループを生成する。このように、通信回線の制約を考慮してグループを生成することにより、計算ノードを効率的に利用できる。
【0133】
さらに、実施例2にかかるグループ生成手段は、複数のシナリオの数が均一となるように複数のジョブが定義されている場合に、第1計算ノード群に属する計算ノード数と第2計算ノード群に属する計算ノード数との比率が均一になるように複数のグループを生成する。ジョブ間の処理負荷が均等である場合、高速と低速を一定比率でグループ分けすることにより、各グループ内でそれぞれ高速ノードが優先してタスクが実行されるため、ジョブ間の処理時間を均一とすることができる。
【0134】
図23(b)は、本発明の実施の形態2にかかる実施例2により選択される計算ノードの例を示す図である。グループG1〜G3には、それぞれ第1計算ノード群から3つの計算ノード、第2計算ノード群から1つの計算ノードが選択されていることを示す。これにより、複数のグループにより複数のジョブを並列に実行する場合に、各グループにおけるシナリオの処理時間を短くしつつ、グループ間の処理時間の差を小さくすることができる。
【0135】
また、本発明の実施の形態2にかかる実施例3は、実施例2の変形例であり、ジョブ間の処理負荷に差がある場合、処理パフォーマンスを向上させるものである。実施例3にかかるグループ生成手段は、第1計算ノード群に属する計算ノードを第2計算ノード群に属する計算ノードとは異なるグループに割り当てる。また、実施例3にかかるジョブ割当手段(例えば、本発明の実施の形態1にかかるジョブ割当手段343)は、複数のジョブの内、処理負荷が高いジョブを第1計算ノード群に属する計算ノードが割り当てられたグループに割り当てる。つまり、ジョブ間の処理負荷に差がある場合、1タスク当たりの処理時間が相対的に短い第1計算ノード群に属する計算ノードのみのグループG1と、1タスク当たりの処理時間が相対的に長い第2計算ノード群に属する計算ノードのみのグループG2とを生成し、処理負荷の高いジョブをグループG1に割り当てる。
【0136】
図23(c)は、本発明の実施の形態2にかかる実施例3により選択される計算ノードの例を示す図である。グループG1には、第1計算ノード群のみから6つの計算ノードが選択されていることを示す。グループG2には、第2計算ノード群のみから6つの計算ノードが選択されていることを示す。これにより、グループ間の処理時間を近づけることができる。
【0137】
<発明の実施の形態3>
金融取引における取引計算のシナリオ数は、年々増加する傾向がある。そのため、計算ノードの追加や通信回線の帯域の増強を含めたリソースの追加が発生し得る。上述した本発明の実施の形態1又は2にかかる取引計算シミュレーションシステムは、各計算ノードに取引計算のシミュレーション処理を実行させるために、シナリオ毎にマスタノードから各計算ノードへ市場情報等の入力データを転送する必要がある。上述したように、一般的には、分散させる計算ノード数が多いほど、シナリオ当たりの処理時間は短くなる。しかし、入力データのサイズが大きい場合は、各計算ノードへの転送時間が処理時間に与える影響が無視できなくなる。
【0138】
そこで、本発明の実施の形態3にかかる取引計算シミュレーションシステムは、複数の計算ノードがシナリオを実行するために用いる入力データを所定の圧縮率に基づき圧縮するデータ圧縮手段(不図示)をさらに備える。そして、指示手段(例えば、本発明の実施の形態1にかかる指示手段344)は、データ圧縮手段により圧縮された入力データを複数の計算ノードへ転送し、複数の計算ノードにおいて分散実行処理の開始前までに当該転送された入力データを所定の圧縮率に基づき解凍させるように指示を行う。これにより、計算ノードが増加された場合であっても、入力データの転送時間が処理時間に与える影響を少なくすることができる。
【0139】
但し、データの圧縮及び解凍の処理自体は、純粋に処理時間の増加となる。一般に、高い圧縮率によりデータ圧縮及び解凍を行うと、低い圧縮率によりデータ圧縮及び解凍を行う場合に比べて処理時間が長くなる。そのため、データ圧縮手段は、マスタノードと複数の計算ノードとが接続される通信回線の帯域に応じて所定の圧縮率を決定し、決定した圧縮率に基づき入力データを圧縮し、指示手段は、決定した圧縮率に基づき解凍させるように指示を行うようにするとよい。これにより、通信回線の帯域が増強された場合には、入力データの転送時間が短くなるため、多少圧縮率を低くしても転送時間への影響は少なく、逆に圧縮及び解凍の処理時間を短くすることも可能となる。
【0140】
図24は、本発明の実施の形態3にかかるデータ圧縮処理の流れを示すフローチャートである。まず、マスタノードにおいて、データ圧縮手段は、通信回線の帯域を判定する(S81)。例えば、データ圧縮手段は、現在の通信状態を調査するための通信コマンドを発行し、当該通信コマンドの応答時間を計測する。次に、データ圧縮手段は、計測した現在の応答時間と過去の応答時間とを比較する。そして、現在の応答時間が長い場合に、マスタノードと複数の計算ノードとが接続される通信回線の帯域が狭いと判定する。また、現在の応答時間が短い場合に、通信回線の帯域が広いと判定する。
【0141】
次に、データ圧縮手段は、圧縮率を決定する(S82)。例えば、ステップS81により通信回線の帯域が狭いと判定した場合、データ圧縮手段は、前回の圧縮率より高く決定する。また、ステップS81により通信回線の帯域が広いと判定した場合、データ圧縮手段は、前回の圧縮率より低く決定する。
【0142】
そして、データ圧縮手段は、決定した圧縮率に基づき入力データを圧縮する(S83)。尚、データを圧縮する方法は、公知なものであるため、具体的な説明を省略する。続いて、指示手段は、圧縮された入力データを各計算ノードへ転送する(図10のステップS33)。その際、指示手段は、各計算ノードにおいて分散実行処理の開始前までに当該転送された入力データを、ステップS82により決定した圧縮率に基づき解凍させるように指示を行う。これにより、各計算ノードは、受信した入力データについて、ステップS82により決定した圧縮率に基づき解凍(例えば、図16のステップS72の直後)し、シナリオの処理を実行することができる。
【0143】
このように、本発明の実施の形態3により、入力データの転送時間を抑えつつ、本発明の実施の形態1と同様の効果を奏することができる。これにより、計算ノードの追加がされた場合であっても、処理時間を短くすることができる。さらに、通信回線の帯域の増強が発生した場合であっても、設定を変更する必要がない。
<その他の発明の実施の形態>
【0144】
尚、図8のステップS11及びS12は、必ずしも上述したタイミングで実行されなくても構わない。または、ステップS11及びS12を実行する代わりに、シミュレーション処理の開始前にシミュレーション情報記憶部310に予め格納されたジョブ情報311、シナリオ情報312、タスク情報313、取引情報314及びグループ情報315を用いて、図8のステップS13以降を実行しても構わない。
【0145】
また、図11のステップS40は、必ずしも上述したタイミングで実行されなくても構わない。例えば、図8のステップS13以前に実行しても構わない。または、ステップS40を実行する代わりに、シミュレーション処理の開始前にスケジュール情報格納部320に予めに格納されたスケジュール情報321を用いて図11のステップS41乃至S49を実行しても構わない。
【0146】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【符号の説明】
【0147】
100 金融取引管理システム
1 APサーバ
2 DBサーバ
21 データベース
22 市場情報
23 取引データ
3 取引計算シミュレーションシステム
30 マスタサーバ
31、32、・・・3n1 計算サーバ
310 シミュレーション情報記憶部
311 ジョブ情報
312 シナリオ情報
313 タスク情報
314 取引情報
315 グループ情報
320 スケジュール情報格納部
321 スケジュール情報
330 処理時間記憶部
331 処理時間
340 マスタノード
341 ジョブ生成手段
342 グループ生成手段
343 ジョブ割当手段
344 指示手段
345 スケジュール情報生成手段
351、352、35n2 計算ノード
360 エンクロージャ
361 マスタサーバ
362、・・・36n3 計算サーバ
370 エンクロージャ
371、372、・・・37n4 計算サーバ
381 通信回線
382 通信回線
383 通信回線
384 第1計算ノード群
385 第2計算ノード群
41a〜41m CPU
42a〜42m メモリ
43 IF部
44 ハードディスク
441 OS
442 分散サーバプログラム
443 取引計算シミュレーションプログラム
444 OS
445 分散クライアントプログラム
446 取引計算プログラム
45a〜45m ノード
J1〜J5 ジョブ
Jn5 ジョブ
S1〜S500 シナリオ
Sn6 シナリオ
T1〜T15 タスク
Tn7 タスク
D1〜D39 取引単位
Dn8 取引単位
G1〜G5 グループ
Gn9 グループ
N1〜N5 計算ノード
Nn10 計算ノード
L1、L2 シナリオ処理時間
L11〜L14 終了待ち時間
L3 短縮時間
L4、L5 ジョブ処理時間
L41、L51 シナリオ処理時間
L6 短縮時間

【特許請求の範囲】
【請求項1】
市場情報に基づく取引計算のシミュレーション処理における条件の異なる複数のシナリオを実行する取引計算シミュレーションシステムであって、
前記複数のシナリオの実行順序を定義した複数のジョブを格納するジョブ情報記憶部と、
シナリオ単位に前記取引計算のシミュレーション処理を実行する複数の計算ノードと、
前記複数の計算ノードにおける実行を制御するマスタノードと、を備え、
前記マスタノードは、
前記複数の計算ノードの内の2以上の計算ノードを含む複数のグループに対して、前記ジョブ情報記憶部に格納された複数のジョブを個別に割り当てるジョブ割当手段と、
前記複数のグループのそれぞれにおける各グループに含まれる複数の計算ノードに対して、当該グループに割り当てられたジョブに定義されたシナリオの実行順序に従い、各シナリオを実行するための初期化処理の指示を行い、当該初期化処理後に当該グループに含まれる複数の計算ノードに対して、当該シナリオを分散して実行するための分散実行処理の指示を行う指示手段と、を備える取引計算シミュレーションシステム。
【請求項2】
前記初期化処理は、前記指示を受け付ける各計算ノードにおいて前記分散実行処理のリソースを確保するためのプロセスの立ち上げ処理及び当該各計算ノードへの入力データの転送処理を含むことを特徴とする請求項1に記載の取引計算シミュレーションシステム。
【請求項3】
前記複数のグループは、グループ数が前記ジョブ情報記憶部に格納された複数のジョブ数と同数であることを特徴とする請求項1又は2に記載の取引計算シミュレーションシステム。
【請求項4】
前記複数のグループは、前記複数のシナリオの数が均一となるように前記複数のジョブが定義されている場合に、各グループに前記複数の計算ノードのノード数が均一となるように割り当てられていることを特徴とする請求項3に記載の取引計算シミュレーションシステム。
【請求項5】
前記ジョブ情報記憶部に格納された複数のジョブに基づき、前記複数のグループを生成するグループ生成手段をさらに備えることを特徴とする請求項1又は2に記載の取引計算シミュレーションシステム。
【請求項6】
前記グループ生成手段は、前記ジョブ情報記憶部に格納された複数のジョブ数と同数の前記複数のグループを生成することを特徴とする請求項5に記載の取引計算シミュレーションシステム。
【請求項7】
前記グループ生成手段は、前記複数のシナリオの数が均一となるように前記複数のジョブが定義されている場合に、各グループに前記複数の計算ノードのノード数が均一となるように割り当てることを特徴とする請求項6に記載の取引計算シミュレーションシステム。
【請求項8】
前記グループ生成手段は、前記複数の計算ノードについて、前記複数のジョブにおける処理負荷に応じたノード数を各グループに割り当てることを特徴とする請求項6に記載の取引計算シミュレーションシステム。
【請求項9】
前記複数のシナリオを所定数に分類し、分類されたシナリオの実行順序を定義することにより前記複数のジョブを生成し、生成した複数のジョブを前記ジョブ情報記憶部に格納するジョブ生成手段をさらに備えることを特徴とする請求項5乃至8のいずれか1項に記載の取引計算シミュレーションシステム。
【請求項10】
前記取引計算シミュレーションシステムは、
前記マスタノードと前記複数の計算ノードの一部である第1計算ノード群とが接続される第1の通信回線と、
前記第1の通信回線より低速の通信回線であり、前記第1計算ノード群以外の計算ノードである第2計算ノード群と前記第1の通信回線とが接続される第2の通信回線とをさらに備え、
前記グループ生成手段は、前記第1の通信回線及び前記第2の通信回線の通信速度に基づき、前記第1計算ノード群及び前記第2計算ノード群から選択した計算ノードを用いて前記複数のグループを生成することを特徴とする請求項5乃至9のいずれか1項に記載の取引計算シミュレーションシステム。
【請求項11】
前記グループ生成手段は、前記複数のシナリオの数が均一となるように前記複数のジョブが定義されている場合に、前記第1計算ノード群に属する計算ノード数と前記第2計算ノード群に属する計算ノード数との比率が均一になるように前記複数のグループを生成することを特徴とする請求項10に記載の取引計算シミュレーションシステム。
【請求項12】
前記グループ生成手段は、前記第1計算ノード群に属する計算ノードを前記第2計算ノード群に属する計算ノードとは異なるグループに割り当て、
前記ジョブ割当手段は、前記複数のジョブの内、処理負荷が高いジョブを前記第1計算ノード群に属する計算ノードが割り当てられたグループに割り当てることを特徴とする請求項10に記載の取引計算シミュレーションシステム。
【請求項13】
前記複数の計算ノードがシナリオを実行するために用いる入力データを所定の圧縮率に基づき圧縮するデータ圧縮手段をさらに備え、
前記指示手段は、前記データ圧縮手段により圧縮された入力データを前記複数の計算ノードへ転送し、前記複数の計算ノードにおいて前記分散実行処理の開始前までに当該転送された入力データを前記所定の圧縮率に基づき解凍させるように指示を行うことを特徴とする請求項1乃至12のいずれか1項に記載の取引計算シミュレーションシステム。
【請求項14】
前記データ圧縮手段は、前記マスタノードと前記複数の計算ノードとが接続される通信回線の帯域に応じて前記所定の圧縮率を決定し、決定した圧縮率に基づき前記入力データを圧縮し、
前記指示手段は、前記決定した圧縮率に基づき解凍させるように指示を行うことを特徴とする請求項13に記載の取引計算シミュレーションシステム。
【請求項15】
市場情報に基づく取引計算のシミュレーション処理における条件の異なる複数のシナリオの実行順序を定義した複数のジョブを格納するジョブ情報記憶部と、
シナリオ単位に前記取引計算についてのシミュレーション処理を実行する複数の計算ノードと、
前記複数の計算ノードにおける実行を制御するマスタノードと、を備えるコンピュータシステムにより前記複数のシナリオを実行するための取引計算シミュレーション方法であって、
前記マスタノードにおいて、
前記複数の計算ノードの内の2以上の計算ノードを含む複数のグループに対して、前記ジョブ情報記憶部に格納された複数のジョブを個別に割り当てるジョブ割当ステップと、
前記複数のグループのそれぞれにおける各グループに含まれる複数の計算ノードに対して、当該グループに割り当てられたジョブに定義されたシナリオの実行順序に従い、各シナリオを実行するための初期化処理の指示を行い、当該初期化処理後に当該グループに含まれる複数の計算ノードに対して、当該シナリオを分散して実行するための分散実行処理の指示を行う指示ステップと、を含む取引計算シミュレーション方法。
【請求項16】
市場情報に基づく取引計算のシミュレーション処理における条件の異なる複数のシナリオの実行順序を定義した複数のジョブを格納するジョブ情報記憶部を備え、
シナリオ単位に前記取引計算のシミュレーション処理を実行する複数の計算ノードに対して前記複数のシナリオの実行を制御する処理をコンピュータに実行させる取引計算シミュレーションプログラムであって、
前記複数の計算ノードの内の2以上の計算ノードを含む複数のグループに対して、前記ジョブ情報記憶部に格納された複数のジョブを個別に割り当てるジョブ割当処理と、
前記複数のグループのそれぞれにおける各グループに含まれる複数の計算ノードに対して、当該グループに割り当てられたジョブに定義されたシナリオの実行順序に従い、各シナリオを実行するための初期化処理の指示を行い、当該初期化処理後に当該グループに含まれる複数の計算ノードに対して、当該シナリオを分散して実行するための分散実行処理の指示を行う指示処理と、を含む取引計算シミュレーションプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate


【公開番号】特開2012−38275(P2012−38275A)
【公開日】平成24年2月23日(2012.2.23)
【国際特許分類】
【出願番号】特願2010−180711(P2010−180711)
【出願日】平成22年8月12日(2010.8.12)
【出願人】(592131906)みずほ情報総研株式会社 (187)