(57)【要約】【課題】分散処理におけるリソースを効率的に利用してシミュレーション処理全体の処理時間を短くすること。【解決手段】本発明にかかる取引計算シミュレーションシステムは、市場情報に基づく複数種類の取引単位についての取引計算のシミュレーション処理を複数の計算ノードに分散して実行するものである。各計算ノードが実行する取引計算のスケジュールを特定するスケジュール情報を格納するスケジュール情報格納部を備え、スケジュール情報は、複数種類の内、処理負荷の低い種類の取引単位を所定数まとめてなる第１のタスクと、第１のタスクに含まれる取引単位に比べて処理負荷の高い種類の取引単位について所定数より少ない数の取引単位よりなる第２のタスクとが、全てのタスクの計算が終了するまでに要する各計算ノードにおける計算時間が相互に近付くように組み合わされている。【選択図】図２
2012038274.tif 000002
【特許請求の範囲】
【請求項１】
市場情報に基づく複数種類の取引単位についての取引計算のシミュレーション処理を複数の計算ノードに分散して実行する取引計算シミュレーションシステムであって、
前記各計算ノードが実行する前記取引計算のスケジュールを特定するスケジュール情報を格納するスケジュール情報格納部を備え、
前記複数の計算ノードは、前記スケジュール情報格納部に格納されたスケジュール情報に基づいて前記取引計算のシミュレーション処理を実行し、
前記スケジュール情報は、前記複数種類の内、処理負荷の低い種類の取引単位を所定数まとめてなる第１のタスクと、前記第１のタスクに含まれる取引単位に比べて処理負荷の高い種類の取引単位について前記所定数より少ない数の取引単位よりなる第２のタスクとが、全てのタスクの計算が終了するまでに要する前記各計算ノードにおける計算時間が相互に近付くように組み合わされていることを特徴とする取引計算シミュレーションシステム。
【請求項２】
前記複数種類の取引単位から前記第１のタスク及び前記第２のタスクを生成し、生成した前記第１のタスク及び前記第２のタスクを用いて前記スケジュール情報を生成し、前記スケジュール情報格納部に格納するスケジュール情報生成手段をさらに備えることを特徴とする請求項１に記載の取引計算シミュレーションシステム。
【請求項３】
前記スケジュール情報生成手段は、前記生成した前記第１のタスク及び前記第２のタスクの中から前記複数の計算ノード分のタスクを当該複数の計算ノードのそれぞれに対して個別に割り当てて前記スケジュール情報を生成し、前記複数の計算ノードの内、割り当てられたタスクの実行が終了した計算ノードに対して、前記第１のタスク及び前記第２のタスクの内、未割り当てのタスクを当該計算ノードに実行させるように割り当てて当該スケジュール情報を更新することを特徴とする請求項２に記載の取引計算シミュレーションシステム。
【請求項４】
前記スケジュール情報生成手段は、前記取引単位の種類について、処理負荷が低い種類又は高い種類のいずれであるかを判定し、処理負荷が低い種類であると判定された取引単位を前記所定数にまとめて前記第１のタスクを生成し、処理負荷が高い種類であると判定された取引単位を前記第２のタスクとして生成することを特徴とする請求項２又は３に記載の取引計算シミュレーションシステム。
【請求項５】
前記取引単位ごとの過去の処理時間を格納する処理時間記憶部をさらに備え、
前記スケジュール情報生成手段は、前記処理時間記憶部に格納された処理時間が閾値より短い取引単位を処理負荷が低い種類であると判定し、当該処理時間が閾値以上である取引単位を処理負荷が高い種類であると判定することを特徴とする請求項４に記載の取引計算シミュレーションシステム。
【請求項６】
前記スケジュール情報生成手段は、前記処理時間記憶部に格納された処理時間に基づき、前記第１のタスク及び前記第２のタスクの処理時間の予測時間を算出し、前記第１のタスク及び前記第２のタスクの内、前記予測時間が長いタスクを優先して実行させるように前記スケジュール情報を生成することを特徴とする請求項５に記載の取引計算シミュレーションシステム。
【請求項７】
前記スケジュール情報生成手段は、前記処理時間記憶部に格納された処理時間に基づき、前記第１のタスクの処理時間の予測時間と前記第２のタスクの処理時間の予測時間との差が小さくなるようにタスクを生成することを特徴とする請求項５に記載の取引計算シミュレーションシステム。
【請求項８】
前記取引計算シミュレーションシステムは、
前記複数の計算ノードにおける実行を制御し、前記スケジュール情報生成手段を有するマスタノードと、
前記マスタノードと前記複数の計算ノードの一部である第１計算ノード群とが接続される第１の通信回線と、
前記第１の通信回線より低速の通信回線であり、前記第１計算ノード群以外の計算ノードである第２計算ノード群と前記第１の通信回線とが接続される第２の通信回線とをさらに備え、
前記スケジュール情報生成手段は、前記第２計算ノード群に属する計算ノード数を前記第１計算ノード群に属する計算ノード数より少なく選択し、前記第１計算ノード群に属する計算ノード及び前記第２計算ノード群から前記選択した計算ノードのそれぞれに対して、前記生成した前記第１のタスク及び前記第２のタスクの中のタスクを個別に割り当てて前記スケジュール情報を生成することを特徴とする請求項３に記載の取引計算シミュレーションシステム。
【請求項９】
前記取引計算のシミュレーション処理は、市場変動実績又は市場変動シナリオに基づく収益又はポジションを予測する処理であることを特徴とする請求項１乃至８のいずれか１項に記載の取引計算シミュレーションシステム。
【請求項１０】
複数の計算ノードが実行する市場情報に基づく複数種類の取引単位についての取引計算のスケジュールを特定するスケジュール情報を格納するスケジュール情報格納部を備え、
前記取引計算のシミュレーション処理を前記複数の計算ノードに分散して実行するコンピュータを制御するための取引計算シミュレーション方法であって、
前記複数の計算ノードにおいて、前記スケジュール情報格納部に格納されたスケジュール情報に基づいて前記取引計算のシミュレーション処理を実行し、
前記スケジュール情報は、前記複数種類の内、処理負荷の低い種類の取引単位を所定数まとめてなる第１のタスクと、前記第１のタスクに含まれる取引単位に比べて処理負荷の高い種類の取引単位について前記所定数より少ない数の取引単位よりなる第２のタスクとが、全てのタスクの計算が終了するまでに要する前記各計算ノードにおける計算時間が相互に近付くように組み合わされていることを特徴とする取引計算シミュレーション方法。
【請求項１１】
複数の計算ノードが実行する市場情報に基づく複数種類の取引単位についての取引計算のスケジュールを特定するスケジュール情報を格納するスケジュール情報格納部を備えるコンピュータに、
前記取引計算のシミュレーション処理を前記複数の計算ノードに分散させる制御処理を実行させる取引計算シミュレーションプログラムであって、
前記複数の計算ノードにおいて、前記スケジュール情報格納部に格納されたスケジュール情報に基づいて前記取引計算のシミュレーション処理を実行させ、
前記スケジュール情報は、前記複数種類の内、処理負荷の低い種類の取引単位を所定数まとめてなる第１のタスクと、前記第１のタスクに含まれる取引単位に比べて処理負荷の高い種類の取引単位について前記所定数より少ない数の取引単位よりなる第２のタスクとが、全てのタスクの計算が終了するまでに要する前記各計算ノードにおける計算時間が相互に近付くように組み合わされていることを特徴とする取引計算シミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、取引計算シミュレーションシステム、方法及びプログラムに関し、特に、市場情報に基づく複数種類の取引単位についての取引計算のシミュレーション処理を複数の計算ノードに分散して実行する取引計算シミュレーションシステム、方法及びプログラムに関する。
【背景技術】
【０００２】
金融商品の取引（以下、「金融取引」という。）には、為替や金利などの市場情報に基づく取引単位が存在し、取引単位には、様々な種類がある。そして、これらの様々な種類の取引単位のそれぞれに対して、任意の市場情報に基づく取引計算により収益及びポジションを算出することができる。このとき、想定した市場情報の変動による収益及びポジションへの影響を推定するためのシミュレーション処理を行う必要がある。近年、取引計算は益々高度化及び複雑化し、また、高度化及び複雑化した取引計算の種類が増加している。それ故、取引計算のシミュレーション処理の処理時間は増加の一途を辿っている。そこで、取引計算のシミュレーション処理について、グリッドコンピューティング技術を用いて高速化することが望まれている。
【０００３】
特許文献１には、グリッドコンピューティング技術を用いたジョブ割当装置に関する技術が開示されている。特許文献１にかかるジョブ割当装置は、複数の計算ノードの性能の変化に対応して、予め定めたジョブの優先度に基づきジョブを計算ノードに割り当てることにより、計算ノードの利用効率の向上を図ることができるものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２２６０２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述した金融取引における取引計算のシミュレーション処理に対して、単純にグリッドコンピューティング技術を適用すると、リソースの利用効率が悪いという問題がある。
【０００６】
その理由は、金融取引における取引計算では、大量の取引単位について様々に条件を変更したシナリオについてのシミュレーション処理が必要とされるためである。そのため、グリッドコンピューティング技術により各取引単位における計算処理を分散して連続実行した場合に、データの通信回数及び通信量が膨大となる。例えば、データベースへのアクセス処理がボトルネックとなり得る。そこで、所定数の取引単位の計算処理を１タスクにまとめて、タスク単位にデータベースとの入出力を実行させることが考えられる。しかし、金融取引の取引計算のシミュレーション処理では、取引単位の種類により計算処理における処理時間が極端に異なるという特徴がある。そのため、一律に所定数にまとめると、リソースの利用効率が悪い。
【０００７】
尚、特許文献１は、複数のジョブについて異なる優先度が設定されている場合を対象としたものである。しかし、金融取引の取引計算におけるジョブは、所定数の取引単位について、様々に条件を変化させた複数のシナリオをまとめて実行するものである。そのため、各シナリオや取引単位についての実行の優先度に差はない。よって、特許文献１では、上述した課題を解決することができない。
【０００８】
本発明は、このような問題を解決するためになされたものであり、タスクごとの処理時間を平準化するための取引計算シミュレーションシステム、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の第１の態様にかかる取引計算シミュレーションシステムは、市場情報に基づく複数種類の取引単位についての取引計算のシミュレーション処理を複数の計算ノードに分散して実行する取引計算シミュレーションシステムであって、前記各計算ノードが実行する前記取引計算のスケジュールを特定するスケジュール情報を格納するスケジュール情報格納部を備え、前記複数の計算ノードは、前記スケジュール情報格納部に格納されたスケジュール情報に基づいて前記取引計算のシミュレーション処理を実行し、前記スケジュール情報は、前記複数種類の内、処理負荷の低い種類の取引単位を所定数まとめてなる第１のタスクと、前記第１のタスクに含まれる取引単位に比べて処理負荷の高い種類の取引単位について前記所定数より少ない数の取引単位よりなる第２のタスクとが、全てのタスクの計算が終了するまでに要する前記各計算ノードにおける計算時間が相互に近付くように組み合わされている。
【００１０】
また、前記複数種類の取引単位から前記第１のタスク及び前記第２のタスクを生成し、生成した前記第１のタスク及び前記第２のタスクを用いて前記スケジュール情報を生成し、前記スケジュール情報格納部に格納するスケジュール情報生成手段をさらに備えることが望ましい。
【００１１】
さらに、前記スケジュール情報生成手段は、前記生成した前記第１のタスク及び前記第２のタスクの中から前記複数の計算ノード分のタスクを当該複数の計算ノードのそれぞれに対して個別に割り当てて前記スケジュール情報を生成し、前記複数の計算ノードの内、割り当てられたタスクの実行が終了した計算ノードに対して、前記第１のタスク及び前記第２のタスクの内、未割り当てのタスクを当該計算ノードに実行させるように割り当てて当該スケジュール情報を更新することが望ましい。
【００１２】
さらに、前記スケジュール情報生成手段は、前記取引単位の種類について、処理負荷が低い種類又は高い種類のいずれであるかを判定し、処理負荷が低い種類であると判定された取引単位を前記所定数にまとめて前記第１のタスクを生成し、処理負荷が高い種類であると判定された取引単位を前記第２のタスクとして生成するとよい。
【００１３】
さらに、前記取引単位ごとの過去の処理時間を格納する処理時間記憶部をさらに備え、前記スケジュール情報生成手段は、前記処理時間記憶部に格納された処理時間が閾値より短い取引単位を処理負荷が低い種類であると判定し、当該処理時間が閾値以上である取引単位を処理負荷が高い種類であると判定するとよい。
【００１４】
さらに、前記スケジュール情報生成手段は、前記処理時間記憶部に格納された処理時間に基づき、前記第１のタスク及び前記第２のタスクの処理時間の予測時間を算出し、前記第１のタスク及び前記第２のタスクの内、前記予測時間が長いタスクを優先して実行させるように前記スケジュール情報を生成するとよい。
【００１５】
または、前記スケジュール情報生成手段は、前記処理時間記憶部に格納された処理時間に基づき、前記第１のタスクの処理時間の予測時間と前記第２のタスクの処理時間の予測時間との差が小さくなるようにタスクを生成するとよい。
【００１６】
また、前記取引計算シミュレーションシステムは、前記複数の計算ノードにおける実行を制御し、前記スケジュール情報生成手段を有するマスタノードと、前記マスタノードと前記複数の計算ノードの一部である第１計算ノード群とが接続される第１の通信回線と、前記第１の通信回線より低速の通信回線であり、前記第１計算ノード群以外の計算ノードである第２計算ノード群と前記第１の通信回線とが接続される第２の通信回線とをさらに備え、前記スケジュール情報生成手段は、前記第２計算ノード群に属する計算ノード数を前記第１計算ノード群に属する計算ノード数より少なく選択し、前記第１計算ノード群に属する計算ノード及び前記第２計算ノード群から前記選択した計算ノードのそれぞれに対して、前記生成した前記第１のタスク及び前記第２のタスクの中のタスクを個別に割り当てて前記スケジュール情報を生成するとよい。
【００１７】
さらに、前記取引計算のシミュレーション処理は、市場変動実績又は市場変動シナリオに基づく収益又はポジションを予測する処理であることが望ましい。
【００１８】
本発明の第２の態様にかかる取引計算シミュレーション方法は、複数の計算ノードが実行する市場情報に基づく複数種類の取引単位についての取引計算のスケジュールを特定するスケジュール情報を格納するスケジュール情報格納部を備え、前記取引計算のシミュレーション処理を前記複数の計算ノードに分散して実行するコンピュータを制御するための取引計算シミュレーション方法であって、前記複数の計算ノードにおいて、前記スケジュール情報格納部に格納されたスケジュール情報に基づいて前記取引計算のシミュレーション処理を実行し、前記スケジュール情報は、前記複数種類の内、処理負荷の低い種類の取引単位を所定数まとめてなる第１のタスクと、前記第１のタスクに含まれる取引単位に比べて処理負荷の高い種類の取引単位について前記所定数より少ない数の取引単位よりなる第２のタスクとが、全てのタスクの計算が終了するまでに要する前記各計算ノードにおける計算時間を近付けるように組み合わされている。
【００１９】
本発明の第３の態様にかかる取引計算シミュレーションプログラムは、複数の計算ノードが実行する市場情報に基づく複数種類の取引単位についての取引計算のスケジュールを特定するスケジュール情報を格納するスケジュール情報格納部を備えるコンピュータに、前記取引計算のシミュレーション処理を前記複数の計算ノードに分散させる制御処理を実行させる取引計算シミュレーションプログラムであって、前記複数の計算ノードにおいて、前記スケジュール情報格納部に格納されたスケジュール情報に基づいて前記取引計算のシミュレーション処理を実行させ、前記スケジュール情報は、前記複数種類の内、処理負荷の低い種類の取引単位を所定数まとめてなる第１のタスクと、前記第１のタスクに含まれる取引単位に比べて処理負荷の高い種類の取引単位について前記所定数より少ない数の取引単位よりなる第２のタスクとが、全てのタスクの計算が終了するまでに要する前記各計算ノードにおける計算時間が相互に近付くように組み合わされている。
【発明の効果】
【００２０】
本発明によれば、分散処理におけるリソースを効率的に利用してシミュレーション処理全体の処理時間を短くするための取引計算シミュレーションシステム、方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施の形態１にかかる金融業務管理システムの全体構成を示すブロック図である。
【図２】本発明の実施の形態１にかかる取引計算シミュレーションシステムの機能ブロック図である。
【図３】本発明の実施の形態１において処理対象とするデータ構造の概念を示す図である。
【図４】本発明の実施の形態１にかかるグループの構造の概念を示す図である。
【図５】本発明の実施の形態１にかかる取引計算シミュレーションシステムのハードウェア構成を示すブロック図である。
【図６】本発明の実施の形態１にかかるマスタサーバのハードウェア構成を示すブロック図である。
【図７】本発明の実施の形態１にかかる計算サーバのハードウェア構成を示すブロック図である。
【図８】本発明の実施の形態１にかかる取引計算シミュレーション処理の流れを示すフローチャートである。
【図９】本発明の実施の形態１にかかるジョブ割当処理の流れを示すフローチャートである。
【図１０】本発明の実施の形態１にかかるグループ内のジョブ実行指示処理の流れを示すフローチャートである。
【図１１】本発明の実施の形態１にかかる分散実行指示処理の流れを示すフローチャートである。
【図１２】本発明の実施の形態１にかかるスケジュール情報の例を示す図である。
【図１３】本発明の実施の形態１にかかるタスク生成処理の一例の流れを示すフローチャートである。
【図１４】本発明の実施の形態１にかかる取引情報の種類の例を示す図である。
【図１５】本発明の実施の形態１にかかるタスク生成処理の他の例の流れを示すフローチャートである。
【図１６】本発明の実施の形態１にかかる計算ノードのシナリオ単位のシミュレーション処理の流れを示すフローチャートである。
【図１７】（ａ）は、第１の効果を説明するために用いる取引単位の例を示す図である。（ｂ）は、従来の手法により取引単位をタスクに分類した場合の例を示す図である。（ｃ）は、本発明の実施の形態１にかかる第１のタスクと第２のタスクとに分類した場合の例を示す図である。
【図１８】従来の手法により発生する課題を説明するための図である。
【図１９】本発明の実施の形態１にかかる第１のタスク及び第２のタスクによる効果を説明するための図である。
【図２０】（ａ）は、従来の手法におけるジョブとグループの例を示す図である。（ｂ）は、本発明の実施の形態１におけるジョブとグループの例を示す図である。
【図２１】従来の手法により発生する課題を説明するための図である。
【図２２】本発明の実施の形態１にかかるシナリオの並列実行による効果を説明するための図である。
【図２３】本発明の実施の形態２にかかる選択される計算ノードの例を示す図である。
【図２４】本発明の実施の形態３にかかるデータ圧縮処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００２２】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。尚、以下の説明において、ｎ１、ｎ２、ｎ３、ｎ４、ｎ５、ｎ６、ｎ７、ｎ８、ｎ９、ｎ１０及びｍは、３以上の自然数であるものとする。
【００２３】
＜発明の実施の形態１＞
図１は、本発明の実施の形態１にかかる金融取引管理システム１００の全体構成を示すブロック図である。金融取引管理システム１００は、金融機関における金融取引に関する各種業務を管理する情報システムである。特に、金融取引管理システム１００は、金融取引に関する複数の種類の取引単位のそれぞれについて、任意の市場情報に基づき収益やポジションを算出するための取引計算を行う。その際、金融取引管理システム１００は、金利や為替などの市場情報の変動に基づき、定期的に取引計算のシミュレーション処理を行う。そして、シミュレーション処理の結果をユーザに提供する。例えば、取引計算のシミュレーション処理は、市場変動実績又は市場変動シナリオに基づく収益又はポジションを予測する処理である。これにより、金融取引について多様かつ有効な情報を得ることができる。尚、本発明の実施の形態１で対象とするシミュレーション処理は、これに限定されず、大規模な計算処理を必要とする様々な金融商品における取引に対して適用可能である。また、金融取引管理システム１００は、アプリケーション（ＡＰ）サーバ１と、データベース（ＤＢ）サーバ２と、取引計算シミュレーションシステム３とを備え、これらは任意の通信回線により接続されている。
【００２４】
ＡＰサーバ１は、取引計算シミュレーションシステム３に対して、定期的にシミュレーション処理の開始を指示するためのコンピュータシステムである。例えば、金融取引の場合、日々の市場情報の変動に対応するため、日次にシミュレーション処理の開始を指示することが望ましい。尚、ＡＰサーバ１は、ユーザが操作する端末との情報のやり取りを行うためのＷＥＢ等によるインタフェースを備えていてもよい。
【００２５】
ＤＢサーバ２は、金融取引に必要な市場情報や取引単位の情報等を管理するデータベース２１を制御するコンピュータシステムである。ＤＢサーバ２は、例えば、ＤＢＭＳ（DataBase Management System）によりデータベース２１との入出力を制御する。ＤＢサーバ２は、ＡＰサーバ１又は取引計算シミュレーションシステム３からの要求に応じて、データベース２１へアクセスし、要求元へ結果を返信するコンピュータシステムである。データベース２１は、市場情報２２と取引データ２３とを管理するための記憶装置である。市場情報２２は、所定期間の金利や為替などの情報である。所定期間とは、例えば、３年以上であるとよいが、これに限定されない。取引データ２３は、金融取引に関する複数の種類の取引単位についてのデータである。また、取引データ２３は、取引計算シミュレーションシステム３により算出された取引計算の予測値、すなわち、シミュレーション処理の結果を含む。尚、データベース２１は、ハードディスクドライブ、フラッシュメモリ等の不揮発性の記憶装置であることが望ましい。
【００２６】
尚、ＡＰサーバ１及びＤＢサーバ２は、それぞれ一般的なコンピュータ装置により実現されるものであるため、具体的なハードウェア構成については図示及び説明を省略する。また、ＡＰサーバ１及びＤＢサーバ２は、併せて一台のコンピュータ装置として実現されるか、それぞれ複数台に多重化して実現されても構わない。
【００２７】
取引計算シミュレーションシステム３は、マスタサーバ３０と、計算サーバ３１、３２、・・・３ｎ１とを備える。取引計算シミュレーションシステム３は、グリッドコンピューティング技術によりシミュレーション処理を複数の計算サーバに分散して実行する。マスタサーバ３０は、グリッドコンピューティング技術におけるマスタノードとして動作するコンピュータである。計算サーバ３１、３２、・・・３ｎ１は、グリッドコンピューティング技術における計算ノードとして動作するコンピュータである。尚、計算サーバの台数は、少なくとも２以上であればよい。尚、各計算サーバは、他の計算サーバとは独立して処理を行うことができる。そして、各計算サーバは、１台あたり複数の計算ノードとして動作することができる。
【００２８】
マスタサーバ３０は、ＡＰサーバ１からの指示に応じて取引計算のシミュレーション処理を開始する。そして、マスタサーバ３０は、計算サーバ３１、３２、・・・３ｎ１に分散して実行するように指示を行う。その際、マスタサーバ３０は、適宜、ＡＰサーバ１又はＤＢサーバ２から入力データを取得する。また、計算サーバ３１、３２、・・・３ｎ１は、マスタサーバ３０からの指示に応じて、それぞれ独立に取引計算のシミュレーション処理を実行し、シミュレーション処理の結果をＤＢサーバ２へ送信して、データベース２１内の取引データ２３に含めて格納する。
【００２９】
図２は、本発明の実施の形態１にかかる取引計算シミュレーションシステム３の機能ブロック図である。取引計算シミュレーションシステム３は、市場情報に基づく複数種類の取引単位についての取引計算のシミュレーション処理を複数の計算ノードに分散して実行する。また、取引計算シミュレーションシステム３は、市場情報に基づく取引計算のシミュレーション処理における条件の異なる複数のシナリオを実行する。取引計算シミュレーションシステム３は、シミュレーション情報記憶部３１０と、スケジュール情報格納部３２０と、処理時間記憶部３３０と、マスタノード３４０と、計算ノード３５１、３５２、・・・３５ｎ２とを備える。
【００３０】
シミュレーション情報記憶部３１０は、シミュレーション処理に用いる各種の定義情報であるジョブ情報３１１と、シナリオ情報３１２と、タスク情報３１３と、取引情報３１４と、グループ情報３１５とを記憶する記憶装置である。尚、ジョブ情報３１１は、シミュレーション情報記憶部３１０とは異なる記憶装置であるジョブ情報記憶部に格納さていても構わない。但し、以下の説明では、ジョブ情報３１１は、シミュレーション情報記憶部３１０に格納されているものとする。
【００３１】
ここで、ジョブ情報３１１は、シミュレーション処理の処理単位であるジョブに関する情報である。ジョブは、複数のシナリオの実行順序を定義した情報である。例えば、ジョブは、シミュレーション処理の種類ごとに定義することができる。さらに、ジョブは、同一のシミュレーション処理内の複数のシナリオを異なるジョブに分けて定義することもできる。また、ジョブは、複数のシナリオを直列に実行するように定義されている。シナリオ情報３１２は、取引計算における各取引単位について、シミュレーションにおける様々な条件を定義したシナリオに関する情報である。また、シナリオは、複数のタスク又は複数の取引単位を定義した情報である。シナリオには、例えば、ユーザが設定する市場変動シナリオ、定型の市場変動シナリオ又は所定期間の市場変動実績に基づき推定された将来の市場変動シナリオ等がある。これらは、それぞれ、同一の取引単位について複数の異なる条件が定義されている。
【００３２】
タスク情報３１３は、各計算ノードにおける処理単位であるタスクに関する情報である。タスクは、１又は複数の取引単位を定義した情報である。取引情報３１４は、取引計算における各取引単位に関する情報である。例えば、取引情報３１４は、取引単位の種類及び識別情報である。取引単位は、金融取引における各種契約を表す情報であるが、ここでは、当該取引における予測値を算出するための計算式又は計算処理と対応付けられるものとする。計算式又は計算処理は、処理時間が比較的短い簡易な計算と処理時間が比較的長い複雑な計算とがある。例えば、簡易な計算とは、解析式による計算があり、複雑な計算とは、モンテカルロシミュレーション法等を用いた計算が挙げられる。グループ情報３１５は、ジョブを分散して実行させるための計算ノードの集合（以下、「グループ」と呼ぶ。）に関する情報である。グループは、複数の利用可能な計算ノードの内、２以上の計算ノードを含む。尚、各計算ノードは、複数のグループに重複して所属することはできないものとする。
【００３３】
図３は、本発明の実施の形態１において処理対象とするデータ構造の概念を示す図である。ジョブＪ１、・・・Ｊｎ５は、図２のジョブ情報３１１の一例である。そして、例えば、ジョブＪ１には、シナリオＳ１、・・・Ｓｎ６が定義されていることを示す。シナリオＳ１、・・・Ｓｎ６は、図２のシナリオ情報３１２の一例である。そして、例えば、シナリオＳ１には、タスクＴ１、・・・Ｔｎ７が定義されていることを示す。タスクＴ１、・・・Ｔｎ７は、図２のタスク情報３１３の一例である。そして、例えば、タスクＴ１には、取引単位Ｄ１、Ｄ２、・・・Ｄｎ８が定義されていることを示す。取引単位Ｄ１、Ｄ２、・・・Ｄｎ８は、図２の取引情報３１４の一例である。
【００３４】
図４は、本発明の実施の形態１にかかるグループの構造の概念を示す図である。グループＧ１、・・・Ｇｎ９は、図２のグループ情報３１５の一例である。そして、例えば、グループＧ１には、計算ノードＮ１、Ｎ２、・・・Ｎｎ１０が定義されていることを示す。計算ノードＮ１、Ｎ２、・・・Ｎｎ１０は、図２の計算ノード３５１、計算ノード３５２、・・・３５ｎ２のそれぞれを識別する情報の一例である。
【００３５】
図２に戻り、スケジュール情報格納部３２０は、各計算ノードが実行する取引計算のスケジュールを特定するスケジュール情報３２１を記憶する記憶装置である。スケジュール情報３２１は、第１のタスクと、第２のタスクとが、全てのタスクの計算が終了するまでに要する各計算ノードにおける計算時間が相互に近付くように組み合わされている情報である。すなわち、スケジュール情報３２１には、全ての第１のタスク及び第２のタスクが各計算ノードのいずれかに分散して所定の順序で実行されるようにスケジュールされている。尚、各計算ノードにおいてスケジュールされた全てのタスクの計算時間は、各計算ノードの間で必ずしも均一である必要はない。ここで、第１のタスクとは、複数の取引単位の種類の内、処理負荷の低い種類の取引単位を所定数まとめてなるタスクである。また、第２のタスクとは、複数の取引単位の種類の内、第１のタスクに含まれる取引単位に比べて処理負荷の高い種類の取引単位について所定数より少ない数の取引単位よりなるタスクである。所定数とは、２以上であり、処理負荷に応じて適宜変更しても構わない。処理負荷の段階に応じて、第３のタスク、第４のタスクを用いても構わない。
【００３６】
処理時間記憶部３３０は、取引単位ごとの過去の処理時間３３１を記憶する記憶装置である。処理時間３３１とは、すなわち、各取引単位が計算ノードにおいて過去に実行された処理の実績時間である。尚、シミュレーション情報記憶部３１０、スケジュール情報格納部３２０及び処理時間記憶部３３０は、ハードディスクドライブ、フラッシュメモリ等の不揮発性の記憶装置であることが望ましい。
【００３７】
マスタノード３４０は、複数の計算ノードにおける実行を制御する、グリッドコンピューティング技術における制御手段である。マスタノード３４０は、ジョブ生成手段３４１と、グループ生成手段３４２と、ジョブ割当手段３４３と、指示手段３４４と、スケジュール情報生成手段３４５とを備える。
【００３８】
ジョブ生成手段３４１は、複数のシナリオを所定数に分類し、分類されたシナリオの実行順序を定義することにより複数のジョブを生成し、生成した複数のジョブをシミュレーション情報記憶部３１０にジョブ情報３１１として格納する。
【００３９】
グループ生成手段３４２は、シミュレーション情報記憶部３１０に格納された複数のジョブに基づき、複数のグループを生成し、生成した複数のグループをシミュレーション情報記憶部３１０にグループ情報３１５として格納する。特に、グループ生成手段３４２は、シミュレーション情報記憶部３１０に格納された複数のジョブ数と同数の複数のグループを生成する。これにより、複数のジョブを各グループに一つずつ割り当てることができ、各グループを並列実行することにより、ジョブを効率的に処理することができる。
【００４０】
さらに、グループ生成手段３４２は、複数のシナリオの数が均一となるように複数のジョブが定義されている場合に、各グループに複数の計算ノードのノード数が均一となるように割り当てるとよい。このように、複数の計算ノードを均一に各グループに割り当てることにより、各グループの処理パフォーマンスを均一に保つことができる。
【００４１】
または、グループ生成手段３４２は、複数の計算ノードについて、複数のジョブにおける処理負荷に応じたノード数を各グループに割り当てるとよい。これにより、ジョブ当たりの処理負荷に応じて、グループに割り当てる計算ノード数を調整して、各計算ノード当たりの処理負荷を均一に保ち、各グループの処理パフォーマンスを均一に保つことができる。
【００４２】
ジョブ割当手段３４３は、複数の計算ノードの内の２以上の計算ノードを含む複数のグループに対して、シミュレーション情報記憶部３１０に格納された複数のジョブを個別に割り当てる。
【００４３】
指示手段３４４は、複数のグループのそれぞれにおける各グループに含まれる複数の計算ノードに対して、当該グループに割り当てられたジョブに定義されたシナリオの実行順序に従い、各シナリオを実行するための初期化処理の指示を行い、当該初期化処理後に当該グループに含まれる複数の計算ノードに対して、当該シナリオを分散して実行するための分散実行処理の指示を行う。ここで、初期化処理とは、各計算サーバ上のプロセスの立ち上げ処理や、マスタサーバ３０から各計算サーバへ市場情報等の入力データの転送処理等である。プロセスの立ち上げ処理とは、指示を受け付ける各計算ノードにおいて分散実行処理のリソースを確保する処理である。例えば、プロセスの立ち上げ処理とは、分散実行処理の対象となる各計算サーバ内のプロセッサにおいて、グリッドコンピューティング技術における分散実行処理を実現するための機能が実装されたコンピュータプログラムを、各計算サーバ内のプロセッサにロードし、メモリ領域やディスク領域等のリソースを確保し、分散実行処理を実行可能とするための処理である。また、プロセスの立ち上げ処理には、直前に実行されたシナリオについてのプロセスにより確保されたメモリ領域をクリアする処理を含む。また、初期化処理には、取引計算を実行するために、取引単位ごとの計算処理が実装されたコンピュータプログラムを各計算サーバ内のプロセッサにロードする処理を含む。このような、各計算サーバにおける初期化処理は、他の計算サーバとは独立して実行される。すなわち、他の計算サーバにおける処理状況の影響を受けずに、各計算サーバにおいてほぼ同内容の処理が実行される。そのため、分散する計算ノードのノード数によらず、初期化処理の処理時間がほぼ一定となる。
【００４４】
スケジュール情報生成手段３４５は、複数種類の取引単位から第１のタスク及び第２のタスクを生成する。そして、スケジュール情報生成手段３４５は、生成した第１のタスク及び第２のタスクを用いてスケジュール情報３２１を生成し、スケジュール情報格納部３２０に格納する。尚、スケジュール情報生成手段３４５は、シミュレーション処理の開始の指示以前に、予めスケジュール情報３２１を生成してもよい。
【００４５】
但し、各タスクの処理時間は、並列して実行される他のタスクの影響を受けるため、全てのタスクの処理順序及び割り当て先の計算ノードを事前に定義したスケジュール情報３２１を用いることが最適とは限らない。例えば、複数の計算ノードによるＤＢへのアクセスの競合等により、同一のタスクであっても、実行する状況により処理時間が異なる場合がある。
【００４６】
そこで、さらに好適には、スケジュール情報生成手段３４５は、生成した第１のタスク及び第２のタスクの中から複数の計算ノード分のタスクを当該複数の計算ノードのそれぞれに対して個別に割り当ててスケジュール情報３２１を生成し、複数の計算ノードの内、割り当てられたタスクの実行が終了した計算ノードに対して、第１のタスク及び第２のタスクの内、未割り当てのタスクを当該計算ノードに実行させるように割り当ててスケジュール情報３２１を更新することが望ましい。つまり、スケジュール情報生成手段３４５は、全てのタスクについてスケジュール情報３２１を事前に定義するのではなく、タスク実行が終わり次第、順次タスクを割り当てる。言い換えると、スケジュール情報生成手段３４５は、スケジュール情報３２１を順次、更新する。これにより、計算ノードにおけるタスクの処理の進捗に応じて、各計算ノードへ適切に、つまり、無駄なくタスクを割り当てることができる。よって、実際の処理時間に応じて均一の計算時間に近付けることができる。
【００４７】
計算ノード３５１、３５２、・・・３５ｎ２は、シナリオ単位に取引計算のシミュレーション処理を実行する、グリッドコンピューティング技術における実行手段である。また、計算ノード３５１、３５２、・・・３５ｎ２は、スケジュール情報格納部３２０に格納されたスケジュール情報３２１に基づいて取引計算のシミュレーション処理を実行する。そして、計算ノード３５１、３５２、・・・３５ｎ２は、マスタノード３４０に割り当てられたシナリオに定義された複数のタスクを分散して実行する。
【００４８】
尚、マスタノード３４０は、スケジュール情報格納部３２０に格納されたスケジュール情報３２１に基づいて、該当する計算ノードにスケジュールされたタスクを実行するように指示するようにしてもよい。その場合、各計算ノードは、指示されたタスクについて実行を行う。または、計算ノード３５１、３５２、・・・３５ｎ２は、スケジュール情報格納部３２０を参照し、自己にスケジュールされたタスクを実行してもよい。
【００４９】
尚、スケジュール情報生成手段３４５は、指示手段３４４の一部の機能として実現しても構わない。つまり、スケジュール情報生成手段３４５は、指示手段３４４における分散実行処理の指示の中で実行される一部の処理であっても構わない。
【００５０】
ここで、本発明の実施の形態１にかかる取引計算シミュレーションシステム３にかかる最小構成について説明する。本発明の実施の形態１にかかる取引計算シミュレーションシステム３は、少なくとも、上述したスケジュール情報格納部３２０と、計算ノード３５１、３５２、・・・３５ｎ２とを備えることが必要である。そして、スケジュール情報格納部３２０に格納されているスケジュール情報３２１は、少なくとも、複数種類の内、処理負荷の低い種類の取引単位を所定数まとめてなる第１のタスクと、第１のタスクに含まれる取引単位に比べて処理負荷の高い種類の取引単位について定数より少ない数の取引単位よりなる第２のタスクとが、全てのタスクの計算が終了するまでに要する各計算ノードにおける計算時間が相互に近付くように組み合わされていることが必要である。
【００５１】
これにより、複数の取引単位から所定数の取引単位を無作為にまとめられたタスクを用いた場合に比べて、個々のタスクにおける処理時間のばらつきを小さくすることができる。そして、複数のタスクを複数の計算ノードに分散して実行する場合に、各計算ノード間における計算時間を均一に近付けることができる。そのため、複数の計算ノードの内、一部の計算ノードにおけるタスクの実行が終了しないために、タスクの実行が終了済みの他の多くの計算ノードの待機時間を短くすることができる。それに伴い、リソースの利用効率を高めることができる。よって、市場情報に基づく複数種類の取引単位についての取引計算のシミュレーション処理全体の処理時間を短くすることができる。
【００５２】
さらに、本発明の実施の形態１にかかる取引計算シミュレーションシステム３は、以下の構成を有することが望ましい。本発明の実施の形態１にかかる取引計算シミュレーションシステム３は、上述したジョブ情報記憶部と、計算ノード３５１、３５２、・・・３５ｎ２と、マスタノード３４０とを有することが望ましい。このとき、マスタノード３４０は、少なくとも、上述したジョブ割当手段３４３と、指示手段３４４とを有することが望ましい。
【００５３】
これにより、複数のシナリオをグループ単位に並列して実行することできる。そのため、各計算ノードにおいて、シナリオ単位に必要となる初期化処理の回数を減らすことができる。よって、市場情報に基づく取引計算のシミュレーション処理全体の処理時間を短くすることができる。
【００５４】
さらに、複数のグループは、グループ数がジョブ情報記憶部に格納された複数のジョブ数と同数であることが望ましい。これにより、ジョブを効率的に処理することができる。
【００５５】
さらに、複数のグループは、複数のシナリオの数が均一となるように複数のジョブが定義されている場合に、各グループに複数の計算ノードのノード数が均一となるように割り当てられていることが望ましい。これにより、計算ノードを均等にグループに割り当て、各グループの処理パフォーマンスを均一に保つことができる。
【００５６】
図５は、本発明の実施の形態１にかかる取引計算シミュレーションシステム３のハードウェア構成を示すブロック図である。取引計算シミュレーションシステム３は、エンクロージャ３６０及び３７０と、通信回線３８１とを備える。エンクロージャ３６０及び３７０は、通信回線３８１を介して接続されている。尚、本発明の実施の形態１にかかるエンクロージャの数は、３以上であっても構わない。
【００５７】
エンクロージャ３６０及び３７０は、複数のいわゆるブレードサーバを搭載し、各ブレードサーバを個別のコンピュータとして動作させる装置である。ブレードサーバとは、独立したサーバとしての機能を実現するための必要最小限の構成を有するコンピュータ装置である。エンクロージャ３６０及び３７０は、搭載された各ブレードサーバで共有するリソースや接続機器を備える。例えば、エンクロージャ内で共有するハードディスク（不図示）やエンクロージャ内の各ブレードサーバの通信インタフェース及び電力供給を中継するバックプレーン（不図示）と呼ばれる高速な信号経路を備える。
【００５８】
エンクロージャ３６０は、ブレードサーバであるマスタサーバ３６１と、計算サーバ３６２、・・・３６ｎ３と、通信回線３８２とを備える。また、マスタサーバ３６１、計算サーバ３６２、・・・３６ｎ３は、それぞれ、通信回線３８２に接続されている。また、通信回線３８２は、通信回線３８１と接続されている。また、計算サーバ３６２、・・・３６ｎ３を第１計算ノード群３８４と呼ぶ。
【００５９】
エンクロージャ３７０は、ブレードサーバである計算サーバ３７１、３７２、・・・３７ｎ４と、通信回線３８３とを備える。また、計算サーバ３７１、３７２、・・・３７ｎ４は、それぞれ、通信回線３８３に接続されている。また、通信回線３８３は、通信回線３８１と接続されている。また、計算サーバ３７１、３７２、・・・３７ｎ４を第２計算ノード群３８５と呼ぶ。
【００６０】
図６は、本発明の実施の形態１にかかるマスタサーバ３６１のハードウェア構成を示すブロック図である。尚、図６は、マスタサーバ３６１の物理的な構成の内、代表的なものを一例として示すものであり、ブレードサーバとして一般的な構成については図示及び説明を省略する。マスタサーバ３６１は、ＣＰＵ（Central Processing Unit）４１ａ、４１ｂ、・・・４１ｍと、メモリ４２ａ、４２ｂ、・・・４２ｍと、ＩＦ部４３と、ハードディスク４４とを備える。また、ＣＰＵ４１ａとメモリ４２ａとは一対となって動作するため、ノード４５ａと呼ぶ。同様に、ＣＰＵ４１ｂとメモリ４２ｂとをノード４５ｂ、・・・ＣＰＵ４１ｍとメモリ４２ｍとをノード４５ｍとそれぞれ呼ぶ。
【００６１】
ＣＰＵ４１ａ、４１ｂ、・・・４１ｍは、ノードごとの処理を制御するためのプロセッサである。メモリ４２ａ、４２ｂ、・・・４２ｍは、ＲＡＭ（Random Access Memory）等の主記憶装置である。尚、メモリ４２ａ、４２ｂ、・・・４２ｍは、物理的に一つの主記憶装置を論理的に分割して実現しても構わない。ＩＦ部４３は、上述したバックプレーンと接続され、通信回線３８２を介して、第１計算ノード群３８４及び第２計算ノード群３８５、エンクロージャ３６０内の他のリソース等との通信を行う。
【００６２】
また、ハードディスク４４は、不揮発性記憶装置であり、ＯＳ（Operating System）４４１と、分散サーバプログラム４４２と、取引計算シミュレーションプログラム４４３とが格納されている。分散サーバプログラム４４２は、マスタサーバ３６１をグリッドコンピューティング技術におけるマスタノードとして機能させるためのミドルウェアである。取引計算シミュレーションプログラム４４３は、上述したジョブ生成手段３４１と、グループ生成手段３４２と、ジョブ割当手段３４３と、指示手段３４４と、スケジュール情報生成手段３４５とによる各処理が実装されたコンピュータプログラムである。尚、ハードディスク４４は、シミュレーション情報記憶部３１０と、スケジュール情報格納部３２０と、処理時間記憶部３３０とをさらに含むものであってもよい。または、ハードディスク４４は、エンクロージャ３６０内、かつ、マスタサーバ３６１の外部に存在していても構わない。
【００６３】
以下の説明では、ノード４５ａが図２のマスタノード３４０に対応するものとする。但し、他のノードや複数のＣＰＵ及びメモリの対をマスタノード３４０に対応するものとしても構わない。ＣＰＵ４１ａは、マスタノード３４０としての各種処理、メモリ４２ａ、ＩＦ部４３及びハードディスク４４へのアクセス等を制御する。
【００６４】
マスタサーバ３６１は、少なくともＣＰＵ４１ａがメモリ４２ａ又はハードディスク４４に格納されたＯＳ４４１と、分散サーバプログラム４４２と、取引計算シミュレーションプログラム４４３とを読み込み、実行する。これにより、マスタノード３４０として動作する。尚、ノード４５ａ以外のノードを分散処理の管理用のノードや計算ノードとして使用しても構わない。
【００６５】
図７は、本発明の実施の形態１にかかる計算サーバ３６２のハードウェア構成を示すブロック図である。尚、第１計算ノード群３８４の他の計算サーバや第２計算ノード群３８５の計算サーバについても同様の構成であるため、図示及び説明を省略する。また、図７において、図６と同等の構成については、同じ符号を付し、詳細な説明を省略する。
【００６６】
ＩＦ部４３は、上述したバックプレーンと接続され、通信回線３８２を介して、マスタサーバ３６１、計算サーバ３６２以外の第１計算ノード群３８４及び第２計算ノード群３８５、エンクロージャ３６０内の他のリソース等との通信を行う。
【００６７】
計算サーバ３６２において、ハードディスク４４には、ＯＳ４４４と、分散クライアントプログラム４４５と、取引計算プログラム４４６とが格納されている。尚、ＯＳ４４４は、マスタノード３４０に用いられるＯＳ４４１と異なる種類であってもよい。分散クライアントプログラム４４５は、グリッドコンピューティング技術における計算ノードとして機能させるためのミドルウェアであり、上述した初期化処理及び分散実行処理を実現するための機能等が実装されたコンピュータプログラムである。取引計算プログラム４４６は、各取引単位における取引計算の各処理が実装されたコンピュータプログラムである。
【００６８】
ノード４５ａ、４５ｂ、・・・４５ｍは、それぞれ、図２の計算ノード３５１、３５２、・・・３５ｎ２のいずれかに対応するものとする。計算サーバ３６２は、例えば、ＣＰＵ４１ａがメモリ４２ａ又はハードディスク４４に格納されたＯＳ４４４と、分散クライアントプログラム４４５と、取引計算プログラム４４６とを読み込み、実行する。これにより、計算サーバ３６２は、計算ノード３５１として動作する。尚、ノード４５ａ以外のノードを分散処理の管理用のノードや計算ノードとして使用しても構わない。但し、ノード４５ａ、４５ｂ、・・・４５ｍの内、一部を分散処理における制御用に用いても構わない。
【００６９】
図８は、本発明の実施の形態１にかかる取引計算シミュレーション処理の流れを示すフローチャートである。前提として、取引計算シミュレーションシステム３は、ＡＰサーバ１から取引計算のシミュレーション処理を開始する指示を受け付けたものとする。まず、マスタノード３４０は、ジョブを生成する（Ｓ１１）。具体的には、まず、ジョブ生成手段３４１は、シミュレーション情報記憶部３１０に格納されたシナリオ情報３１２を参照し、シナリオ情報３１２に定義された複数のシナリオを所定数に分類する。このとき、ジョブ生成手段３４１は、複数のシナリオの数が均一となるように分類するとよい。または、ジョブ生成手段３４１は、マスタノード３４０が利用可能な計算ノードの数に応じて所定数を定めても構わない。
【００７０】
次に、ジョブ生成手段３４１は、分類されたシナリオの実行順序を定義することにより複数のジョブを生成する。また、ジョブ生成手段３４１は、各ジョブにおいて、定義されたシナリオが直列に実行されるように定義する。そして、ジョブ生成手段３４１は、生成した複数のジョブをシミュレーション情報記憶部３１０にジョブ情報３１１として格納する。
【００７１】
続いて、マスタノード３４０は、グループを生成する（Ｓ１２）。具体的には、まず、グループ生成手段３４２は、シミュレーション情報記憶部３１０を参照し、ジョブ情報３１１に含まれるジョブ数と同数のグループを生成する。次に、ジョブ割当手段３４３は、生成した各グループに計算ノードを割り当てる。例えば、各ジョブに定義されたシナリオ数が均一相当である場合、ジョブ割当手段３４３は、各グループに計算ノードのノード数が均一となるように割り当てる。または、グループ生成手段３４２は、ジョブに定義されたシナリオの処理負荷に応じたノード数を各グループに割り当てる。そして、グループ生成手段３４２は、計算ノードが割り当てられたグループをシミュレーション情報記憶部３１０にグループ情報３１５として格納する。
【００７２】
そして、マスタノード３４０は、各グループにジョブを割り当てるジョブ割当処理を実行する（Ｓ１３）。すなわち、ジョブ割当手段３４３は、ステップＳ１２にて生成された複数のグループに対して、シミュレーション情報記憶部３１０に格納された複数のジョブを個別に割り当てる。
【００７３】
図９は、本発明の実施の形態１にかかるジョブ割当処理の流れを示すフローチャートである。まず、ジョブ割当手段３４３は、グループを選択する（Ｓ２１）。具体的には、ジョブ割当手段３４３は、シミュレーション情報記憶部３１０を参照し、グループ情報３１５の内、一つを選択する。次に、ジョブ割当手段３４３は、ジョブを選択する（Ｓ２２）。具体的には、ジョブ割当手段３４３は、シミュレーション情報記憶部３１０を参照し、ジョブ情報３１１の内、一つを選択する。
【００７４】
そして、ジョブ割当手段３４３は、選択されたグループに選択されたジョブを割り当てる（Ｓ２３）。尚、ジョブ割当手段３４３は、割り当てられたジョブとグループに対応付けてシミュレーション情報記憶部３１０に格納されたグループ情報３１５を更新する。続いて、ジョブ割当手段３４３は、未選択のグループが存在するか否かを判定する（Ｓ２４）。具体的には、ジョブ割当手段３４３は、シミュレーション情報記憶部３１０を参照し、グループ情報３１５の内、未選択のグループが存在するか否かを判定する。未選択のグループが存在すると判定した場合、ジョブ割当手段３４３は、未選択のジョブが存在するか否かを判定する（Ｓ２５）。具体的には、ジョブ割当手段３４３は、シミュレーション情報記憶部３１０を参照し、ジョブ情報３１１の内、未選択のジョブが存在するか否かを判定する。未選択のジョブが存在すると判定した場合、ジョブ割当手段３４３は、未選択のグループ及びジョブを選択する（Ｓ２６）。そして、全てのグループ又はジョブが選択し終えるまでの間、ステップＳ２３乃至Ｓ２６を繰り返し実行する。
【００７５】
ステップＳ２４において未選択のグループが存在しないと判定した場合又はステップＳ２５において未選択のジョブが存在しないと判定した場合、ジョブ割当処理を終了する。
【００７６】
図８に戻り、その後、マスタノード３４０は、グループ毎にジョブを実行させるためのジョブ実行指示処理を実行する（Ｓ１４）。すなわち、指示手段３４４は、グループ毎にジョブ実行指示処理を実行する。このとき、指示手段３４４は、各グループに対して直列又は並列にジョブ実行指示処理を実行する。
【００７７】
図１０は、本発明の実施の形態１にかかるグループ内のジョブ実行指示処理の流れを示すフローチャートである。まず、指示手段３４４は、シナリオを選択する（Ｓ３１）。具体的には、まず、指示手段３４４は、シミュレーション情報記憶部３１０を参照し、ジョブ情報３１１及びグループ情報３１５から、当該グループに割り当てられたジョブを特定する。次に、指示手段３４４は、特定されたジョブに定義されたシナリオの実行順序の内、最初のシナリオを選択する。
【００７８】
次に、指示手段３４４は、グループ内の各計算ノードに初期化処理を指示する（Ｓ３２）。このとき、指示手段３４４は、初期化処理の指示に併せて、選択されたシナリオを指定する。このとき、指示手段３４４は、各計算ノードに対して直列又は並列に初期化処理を指示する。そして、指示手段３４４は、グループ内の各計算ノードに分散実行処理を指示する（Ｓ３３）。このとき、指示手段３４４は、グループ内の各計算ノードにおいて、初期化処理が終了し次第、当該計算ノードに対して分散実行処理を指示する。尚、分散実行処理を指示する処理である分散実行指示処理の詳細は、図１１にて後述する。
【００７９】
続いて、指示手段３４４は、未選択のシナリオが存在するか否かを判定する（Ｓ３４）。具体的には、指示手段３４４は、当該グループに割り当てられたジョブに定義されたシナリオの内、未選択のシナリオが存在するか否かを判定する。未選択のシナリオが存在すると判定した場合、指示手段３４４は、未選択のシナリオの内、実行順序が最初のシナリオを選択する（Ｓ３５）。そして、全てのシナリオが選択し終えるまでの間、ステップＳ３２乃至Ｓ３５を繰り返し実行する。
【００８０】
ステップＳ３４において未選択のシナリオが存在しないと判定した場合、グループ内のジョブ実行指示処理を終了する。
【００８１】
図１１は、本発明の実施の形態１にかかる分散実行指示処理の流れを示すフローチャートである。以下では、スケジュール情報生成手段３４５が指示手段３４４の一部の機能であるものとして説明する。まず、スケジュール情報生成手段３４５は、タスク生成処理を行う（Ｓ４０）。すなわち、スケジュール情報生成手段３４５は、シミュレーション情報記憶部３１０を参照し、シナリオ情報３１２及び取引情報３１４から指定されたシナリオについてのタスク情報３１３を生成する。尚、タスク生成処理の詳細は、図１３及び図１５にて後述する。
【００８２】
次に、スケジュール情報生成手段３４５は、グループ内の計算ノードを選択する（Ｓ４１）。具体的には、スケジュール情報生成手段３４５は、シミュレーション情報記憶部３１０を参照し、指定されたグループに定義された計算ノードの内、一つを選択する。そして、スケジュール情報生成手段３４５は、シナリオ内のタスクを選択する（Ｓ４２）。具体的には、スケジュール情報生成手段３４５は、シミュレーション情報記憶部３１０を参照し、当該シナリオに定義されたタスクの内、ソート順で１番目のタスクを選択する。
【００８３】
続いて、スケジュール情報生成手段３４５は、選択した計算ノードに選択したタスクを割り当てる（Ｓ４３）。つまり、スケジュール情報生成手段３４５は、スケジュール情報格納部３２０に格納されたスケジュール情報３２１を更新する。具体的には、スケジュール情報生成手段３４５は、スケジュール情報３２１の内、選択した計算ノードにスケジュールされたタスクの末尾に、当該選択したタスクを追加する。また、スケジュール情報生成手段３４５は、スケジュール情報格納部３２０を参照し、スケジュール情報３２１の内、選択した計算ノードに設定されたタスクを、当該計算ノードへ通知して、実行させる。
【００８４】
その後、スケジュール情報生成手段３４５は、未選択のタスクが存在するか否かを判定する（Ｓ４４）。具体的には、スケジュール情報生成手段３４５は、スケジュール情報格納部３２０を参照し、タスクが不実行である計算ノードについてのスケジュール情報３２１の内、未選択のタスクが存在するか否かを判定する。ステップＳ４４において、未選択のタスクが存在すると判定した場合、スケジュール情報生成手段３４５は、当該グループの計算ノードの内、タスクが不実行、すなわち、タスクが実行されていない計算ノードが存在するか否かを判定する（Ｓ４５）。例えば、スケジュール情報生成手段３４５は、当該グループの計算ノードの内、タスクが未割り当ての計算ノードが存在するか否か、及び、計算ノードから割り当てたタスクの実行が終了した旨の通知が届いているか否かを判定する。ステップＳ４５において、タスクが不実行である計算ノードが存在しないと判定した場合、スケジュール情報生成手段３４５は、所定時間、処理を待機する（Ｓ４６）。そして、所定時間経過後に、再度、ステップＳ４５を実行する。ステップＳ４５において、タスクが不実行である計算ノードが存在すると判定した場合、スケジュール情報生成手段３４５は、タスクが不実行である計算ノードと、未選択のタスクの内、先頭にスケジュールされたタスクを選択する（Ｓ４７）。そして、全ての計算ノードについてスケジュールされた全てのタスクが選択し終えるまでの間、ステップＳ４３乃至Ｓ４７を繰り返し実行する。このとき、ステップＳ４３においては、スケジュール情報生成手段３４５は、複数の計算ノードの内、割り当てられたタスクの実行が終了した計算ノードに対して、第１のタスク及び第２のタスクの内、未割り当てのタスクを当該計算ノードに実行させるように割り当ててスケジュール情報３２１を更新することとなる。
【００８５】
図１２は、本発明の実施の形態１にかかるスケジュール情報の例を示す図である。図１２では、計算ノードＮ１にタスクＴ１１、Ｔ１４、・・・の順序で、計算ノードＮ２にタスクＴ１２、Ｔ１５、・・・の順序で、また、計算ノードＮ３にタスクＴ１３、Ｔ１６、・・・の順序で実行するようにスケジュールされていることを示す。
【００８６】
図１１に戻り、ステップＳ４４において、未選択のタスクが存在しないと判定した場合、スケジュール情報生成手段３４５は、グループ内の全ての計算ノードにおいてタスクの実行が終了したか否かを判定する（Ｓ４８）。具体的には、スケジュール情報生成手段３４５は、当該グループの計算ノードの内、全ての計算ノードから割り当てたタスクの実行が終了した旨の通知が届いているか否かを判定する。ステップＳ４８において、タスクの実行が終了していない計算ノードが存在すると判定した場合、スケジュール情報生成手段３４５は、所定時間、処理を待機する（Ｓ４９）。そして、所定時間経過後に、再度、ステップＳ４８を実行する。ステップＳ４８において、全ての計算ノードにおいてタスクの実行が終了したと判定した場合、分散実行指示処理を終了する。
【００８７】
続いて、本発明の実施の形態１にかかるタスク生成処理の一例について説明する。ここでは、タスク生成処理として、スケジュール情報生成手段３４５は、取引単位の種類について、処理負荷が低い種類又は高い種類のいずれであるかを判定し、処理負荷が低い種類であると判定された取引単位を所定数にまとめて第１のタスクを生成し、処理負荷が高い種類であると判定された取引単位を第２のタスクとして生成する。
【００８８】
図１３は、本発明の実施の形態１にかかる上述したタスク生成処理の一例の流れを示すフローチャートである。まず、スケジュール情報生成手段３４５は、取引情報を選択する（Ｓ５１）。具体的には、スケジュール情報生成手段３４５は、シミュレーション情報記憶部３１０を参照し、取引情報３１４の内、一つを選択する。
【００８９】
次に、スケジュール情報生成手段３４５は、処理負荷が低いか否かを判定する（Ｓ５２）。具体的には、スケジュール情報生成手段３４５は、選択した取引情報３１４に含まれる取引単位の種類が簡易な計算であることを示すか否かを判定する。そのため、マスタノード３４０は、予め簡易な計算を示す取引単位の種類のリストを有しているものとする。
【００９０】
ステップＳ５２において、処理負荷が低いと判定した場合、スケジュール情報生成手段３４５は、選択した取引情報を取引群Ａへ分類する（Ｓ５３）。具体的には、スケジュール情報生成手段３４５は、メモリ４２ａ内の取引群Ａを定義した領域に当該取引単位の識別情報を格納する。また、ステップＳ５２において、処理負荷が高いと判定した場合、スケジュール情報生成手段３４５は、選択した取引情報を取引群Ｂへ分類する（Ｓ５４）。例えば、スケジュール情報生成手段３４５は、メモリ４２ａ内の取引群Ｂを定義した領域に当該取引単位の識別情報を格納する。
【００９１】
その後、スケジュール情報生成手段３４５は、未選択の取引情報が存在するか否かを判定する（Ｓ５５）。具体的には、スケジュール情報生成手段３４５は、シミュレーション情報記憶部３１０を参照し、取引情報３１４の内、未選択の取引情報が存在するか否かを判定する。ステップＳ５５において、未選択の取引情報が存在すると判定した場合、スケジュール情報生成手段３４５は、取引情報を選択する（Ｓ５６）。そして、全ての取引情報が選択し終えるまでの間、ステップＳ５２乃至Ｓ５６を繰り返し実行する。
【００９２】
ステップＳ５５において、未選択の取引情報が存在しないと判定した場合、スケジュール情報生成手段３４５は、取引群Ａに分類された所定数の取引情報を１タスクとして生成する（Ｓ５７）。具体的には、まず、スケジュール情報生成手段３４５は、メモリ４２ａを参照し、取引群Ａを定義した領域から所定数の取引情報を選択する。次に、スケジュール情報生成手段３４５は、選択した取引情報を１タスクつまり第１のタスクとして、シミュレーション情報記憶部３１０に格納されたタスク情報３１３に追加する。そして、取引群Ａに含まれる全ての取引情報が選択し終えるまでの間、繰り返し実行する。尚、ステップＳ５７において、最後に生成されるタスクに含まれる取引情報の数は、所定数以下であっても構わない。
【００９３】
同時に、スケジュール情報生成手段３４５は、取引群Ｂに分類された各取引情報を１タスクとして生成する（Ｓ５８）。具体的には、まず、スケジュール情報生成手段３４５は、メモリ４２ａを参照し、取引群Ｂを定義した領域から一つの取引情報を選択する。次に、スケジュール情報生成手段３４５は、選択した取引情報を１タスクつまり第２のタスクとして、シミュレーション情報記憶部３１０に格納されたタスク情報３１３に追加する。そして、取引群Ｂに含まれる全ての取引情報が選択し終えるまでの間、繰り返し実行する。尚、ステップＳ５８において、選択される取引情報は、所定数未満であれば２以上であっても構わない。いずれにしても、処理負荷の高い取引単位については、第１のタスクより少ない取引単位とすることで、第１のタスクと第２のタスクとの処理時間の差を近づけることができる。尚、ステップＳ５７及びＳ５８は、いずれかを先に実行しても構わない。
【００９４】
図１４は、本発明の実施の形態１にかかる取引情報の種類の例を示す図である。取引Ａ１乃至取引Ａ９は、処理負荷の低い取引単位を示し、取引群Ａに分類されることを示す。そして、ここでは、所定数を"５"とし、取引群Ａに分類される取引単位の総数は、"９００"であり、第１のタスクの数は、"１８０"となる。一方、取引Ｂ１乃至取引Ｂ１１は、処理負荷の高い取引単位を示し、取引群Ｂに分類されることを示す。そして、取引群Ｂに分類される取引単位の総数は、"１１０"であり、第２のタスクの数は、同じく"１１０"となる。
【００９５】
また、本発明の実施の形態１にかかるタスク生成処理の他の例について説明する。ここでは、タスク生成処理として、スケジュール情報生成手段３４５は、処理時間記憶部３３０に格納された処理時間３３１が閾値より短い取引単位を処理負荷が低い種類であると判定し、処理時間３３１が閾値以上である取引単位を処理負荷が高い種類であると判定する。さらに、スケジュール情報生成手段３４５は、処理時間記憶部３３０に格納された処理時間３３１に基づき、第１のタスク及び第２のタスクの処理時間の予測時間を算出し、第１のタスク及び第２のタスクの内、予測時間が長いタスクを優先して実行させるようにスケジュール情報３２１を生成する。
【００９６】
図１５は、本発明の実施の形態１にかかる上述したタスク生成処理の他の例の流れを示すフローチャートである。以下の説明において、図１３と同様の処理については、同じ符号を付し、適宜、説明を省略する。また、ここでは、処理時間記憶部３３０には、各取引単位の過去の処理時間３３１が予め格納済みであるものとする。また、処理時間の閾値が定められているものとする。
【００９７】
ステップＳ５１の後、スケジュール情報生成手段３４５は、処理時間が閾値より短いか否かを判定する（Ｓ６１）。具体的には、スケジュール情報生成手段３４５は、処理時間記憶部３３０を参照し、選択した取引情報に対応する処理時間３３１が閾値より短いか否かを判定する。以下、ステップＳ５３乃至Ｓ５６は、図１３と同様である。これにより、過去の処理実績を用いてより正確な分類を行うことができる。
【００９８】
また、ステップＳ５７及びＳ５８の後、スケジュール情報生成手段３４５は、タスクごとに処理時間の予測時間を算出する（Ｓ６２）。具体的には、スケジュール情報生成手段３４５は、生成した各タスクについて、処理時間記憶部３３０を参照し、タスクに含まれる取引単位に対応する処理時間３３１を取得し、合算することにより予測時間を算出するする。そして、スケジュール情報生成手段３４５は、予測時間をタスクに対応付けてシミュレーション情報記憶部３１０のタスク情報３１３を更新する。
【００９９】
その後、スケジュール情報生成手段３４５は、予測時間の降順で全タスクをソートする（Ｓ６３）。具体的には、スケジュール情報生成手段３４５は、シミュレーション情報記憶部３１０を参照し、タスク情報３１３の内、各タスクに対応付けられた予測時間について降順でソートをし、ソート結果の順序によりタスク情報３１３を更新する。これにより、処理時間が長いタスクを優先的に計算ノードへ割り当て、先に処理をさせることとなる。そのため、当該シナリオにおける生成されたタスク数が計算ノードのノード数の整数倍でない場合であっても、後半のタスクは処理時間がより短いため、タスクが実行済みの計算ノードの待ち時間は少なくなる。よって、各計算ノード間で均一の計算時間に近付けることができる。
【０１００】
さらに、スケジュール情報生成手段３４５は、処理時間記憶部３３０に格納された処理時間３３１に基づき、第１のタスクの処理時間の予測時間と第２のタスクの処理時間の予測時間との差が小さくなるようにタスクを生成してもよい。具体的には、ステップＳ５７及びＳ５８における所定数を調整する。例えば、取引群Ａに分類された取引単位の処理時間の平均値と取引群Ｂに分類された取引単位の処理時間の平均値との最小公倍数を算出する。そして、それぞれの平均値が最小公倍数となるような所定数を算出してもよい。これにより、各計算ノード間での計算時間のばらつきをさらに小さくすることができる。
【０１０１】
図１６は、本発明の実施の形態１にかかる計算ノードのシナリオ単位のシミュレーション処理の流れを示すフローチャートである。ここでは、計算ノード３５１についての処理として説明する。また、計算ノード３５１は、図７における計算サーバ３６２内のノード４５ａであるものとする。まず、計算ノード３５１は、マスタノード３４０からシナリオを受け付ける（Ｓ７１）。具体的には、計算ノード３５１は、マスタノード３４０の指示手段３４４から初期化処理の指示と併せてシナリオの指定を受け付ける。
【０１０２】
次に、計算ノード３５１は、初期化処理を実行する（Ｓ７２）。具体的には、まず、計算ノード３５１が属する計算サーバ３６２は、分散クライアントプログラム４４５のプロセスを起動する。例えば、まず、メモリ４２ａの内容をクリアする。そして、ＣＰＵ４５ａは、ハードディスク４４から分散クライアントプログラム４４５及び取引計算プログラム４４６を読み込み、受け付けたシナリオの実行に必要なメモリ領域及びディスク領域等を確保する。そして、計算ノード３５１は、マスタノード３４０から転送される市場情報等の入力データを受信する。
【０１０３】
その後、計算ノード３５１は、タスクを受け付けたか否かを判定する（Ｓ７３）。マスタノード３４０の指示手段３４４は、初期化処理が終了し次第、当該計算ノードに対して分散実行処理を指示するため、ステップＳ７２の後は、計算ノード３５１は、直ちに実行すべきタスクを受け付ける。ステップＳ７３において、タスクを受け付けたと判定した場合、計算ノード３５１は、取引計算プログラム４４６に基づいて、受け付けたタスクを実行する（Ｓ７４）。具体的には、計算ノード３５１は、受け付けたタスクに含まれる取引単位を確認し、必要に応じて、当該取引単位に関する取引データをＤＢサーバ２から取得する。そして、計算ノード３５１は、入力データと、取得した取引データとを用いて当該取引単位における計算処理を実行する。
【０１０４】
計算ノード３５１は、タスクに含まれる全ての取引単位についての計算処理を直列に実行する。計算ノード３５１は、タスクに含まれる全ての取引単位についての計算処理が終了後に、各取引単位の実行結果をまとめてＤＢに格納する（Ｓ７５）。その後、計算ノード３５１は、マスタノード３４０へ割り当てられたタスクの実行が終了した旨を通知する（Ｓ７６）。そして、ステップＳ７３において、タスクを受け付けないと判定するまでの間、ステップＳ７３乃至Ｓ７６を繰り返し実行する。尚、ステップＳ７３において、タスクを受け付けないと判定するには、例えば、計算ノード３５１は、マスタノード３４０から明示的にシナリオを終了する通知を受け付けるまで待機し続けてもよい。
【０１０５】
続いて、図１７、図１８及び図１９を用いて本発明の実施の形態１にかかる取引計算シミュレーションシステム３にかかる第１の効果を説明する。図１７（ａ）は、第１の効果を説明するために用いる取引単位の例を示す図である。ここでは、取引Ｄ１〜Ｄ３０は、処理負荷の低い取引単位であり、取引Ｄ３１〜Ｄ３９は、処理負荷の高い取引単位である。以下の説明では、図１７（ａ）に例示した３９の取引単位を１シナリオとし、従来の手法及び本発明の実施の形態１にかかる手法とを用いて、当該シナリオを対象としたシミュレーション処理を行った場合を比較する。ここでは、図１７（ａ）に例示した３９の取引単位について、所定のタスクに分類したものを５つの計算ノードＮ１乃至Ｎ５により分散実行させるものとする。また、従来の手法を「５取引ずつを無作為に８つのタスクに分類する」こととする。
【０１０６】
図１７（ｂ）は、図１７（ａ）の取引単位について、５取引ずつを無作為に８つのタスクに分類した場合の例を示す図である。ここで、タスクＴ１、Ｔ６〜Ｔ８は、処理負荷の低い取引単位のみを含む。タスクＴ３及びＴ５は、処理負荷の高い取引単位が１つと、処理負荷の低い取引単位が４つとを含む。タスクＴ４は、処理負荷の高い取引単位が２つと、処理負荷の低い取引単位が２つとを含む。タスクＴ２は、処理負荷の高い取引単位のみを含む。
【０１０７】
図１８は、図１７（ｂ）におけるタスクを分散実行させた場合に発生する課題を説明するための図である。まず、計算ノードＮ１〜Ｎ５は、それぞれタスクＴ１〜Ｔ５の実行を開始する。次に、計算ノードＮ１は、他の計算ノードよりも短い時間にタスクＴ１の実行を終了する。それに伴い、計算ノードＮ１は、タスクＴ６の実行を開始する。その後、計算ノードＮ３及びＮ５は、タスクＴ３及びＴ５の実行を終了し、続いて、タスクＴ７及びＴ８の実行を開始する。この時点で、処理対象のタスクが全て選択済みとなる。以後は、全ての計算ノードにおいて、タスクの実行が終了することによりシナリオが終了することとなる。ここでは、計算ノードＮ２がタスクＴ２の実行を終了することにより、当該シナリオ全体が終了することとなる。当該シナリオの全タスクの処理時間は、シナリオ処理時間Ｌ１となる。
【０１０８】
つまり、５つの計算ノードの内、４つの計算ノードにおいてタスクの実行が終了済みであったとしても、１つの計算ノードＮ２がタスクＴ２を実行中であるため、シナリオの処理は終了しない。計算ノードＮ１、Ｎ３、Ｎ４及びＮ５は、シナリオ処理時間Ｌ１の内、後半の時間帯は、割り当てるタスクが存在しないため、タスクを実行することができず、終了待ち時間Ｌ１１〜Ｌ１４が生じる。そのため、従来の手法では、タスクの処理が終了した計算ノードＮ１、Ｎ３、Ｎ４、Ｎ５において、それぞれ終了待ち時間Ｌ１１〜Ｌ１４の分のリソースが有効に利用されないという課題が発生する。
【０１０９】
図１７（ｃ）は、図１７（ａ）の取引単位について、所定数を"５"として、本発明の実施の形態１にかかる取引計算シミュレーションシステム３における第１のタスクと第２のタスクとに分類した場合の例を示す図である。ここでは、タスクＴ１、Ｔ６、Ｔ８、Ｔ１０、Ｔ１４及びＴ１５が第１のタスクである。また、タスクＴ２〜Ｔ５、Ｔ７、Ｔ９及びＴ１１〜Ｔ１３が第２のタスクである。図１７（ｃ）に示すように、第１のタスクには、図１７（ａ）における処理負荷の低い取引単位である取引Ｄ１〜Ｄ３０について５取引ごとに分類されている。また、第２のタスクには、図１７（ａ）における処理負荷の高い取引単位である取引Ｄ３１〜Ｄ３９について１取引ごとに分類されている。
【０１１０】
図１９は、本発明の実施の形態１にかかる第１のタスク及び第２のタスクによる効果を説明するための図である。まず、計算ノードＮ１〜Ｎ５は、それぞれタスクＴ１〜Ｔ５の実行を開始する。次に、計算ノードＮ１〜Ｎ５は、タスクＴ１〜Ｔ５の実行を概ね同時間にて終了し、引き続き、タスクＴ６〜Ｔ１０の実行、そして、タスクＴ１１〜Ｔ１５の実行を開始する。その後、計算ノードＮ１〜Ｎ５は、タスクＴ１１〜Ｔ１５の実行を概ね同時間にて終了する。つまり、各計算ノードの間で均一の計算時間となるように実行される。当該シナリオの全タスクの処理時間は、シナリオ処理時間Ｌ２となる。そのため、図１８の例に比べて、短縮時間Ｌ３分が短縮されることとなる。
【０１１１】
このように、取引単位の種類により計算処理における処理時間が極端に異なるという特徴がある場合、処理時間に起因する処理負荷に基づき、取引単位を第１のタスク又は第２のタスクのいずれかへ分類することにより、個々のタスクの処理時間のかい離幅が小さくなる。言い換えると、一部のタスクの処理時間が著しく長くなる可能性が低くなる。そのため、複数の計算サーバに複数のタスクを分散して実行させると、計算時間の差が小さくなる。つまり、タスクごとの処理時間を平準化することにより、分散処理におけるリソースを効率的に利用することができる。
【０１１２】
さらに、図２０、図２１及び図２２を用いて本発明の実施の形態１にかかる取引計算シミュレーションシステム３にかかる第２の効果を説明する。ここでは、５００シナリオを１２５の計算ノードによりシミュレーション処理を行う場合について、従来の手法及び本発明の実施の形態１にかかる手法とを比較する。また、従来の手法を「１ジョブに全シナリオを割り当てて実行する」こととする。
【０１１３】
図２０（ａ）は、従来の手法におけるジョブとグループの例を示す図である。ジョブＪ１には、シミュレーション処理の対象である全てのシナリオが定義されている。また、グループＧ１には、全ての計算ノードが定義されている。そして、グループＧ１にジョブＪ１が割り当てられていることを示す。
【０１１４】
図２１は、従来の手法により発生する課題を説明するための図である。まず、ジョブＪ１に定義されたシナリオの内、実行順序が最初のシナリオＳ１がグループＧ１に定義された１２５の計算ノードに対して分散して並列に実行される。このとき、各計算ノードは、それぞれシナリオＳ１を実行するための初期化処理を実行する。その後、シナリオＳ１に定義された複数のタスクを各計算ノードに分散して実行する。ここで、シナリオＳ１の分散実行処理の処理時間をシナリオ処理時間Ｌ４１とする。以後、シナリオＳ２〜Ｓ５００のそれぞれについて、同様に、初期化処理及び分散実行処理が実行される。ジョブＪ１の全てのシナリオの処理時間をジョブ処理時間Ｌ４とする。
【０１１５】
シナリオ処理時間Ｌ４１は、分散実行処理を行う計算ノードのノード数が多いほど、短くなる。その理由は、計算ノード当たりに割り当てられる１シナリオのタスク数が少なくなるためである。しかし、ノード数を多くしたとしても、各計算ノードにおける初期化処理時間が受ける影響は、小さい。その理由は、初期化処理がプロセスの立ち上げ処理やタスクに共通の入力データの転送処理であるため、割り当てられるタスク数に関係がないためである。そのため、複数のシナリオを直列に実行する限り、シナリオ数分の初期化処理時間が必要となる。そして、ノード数が多いほど、分散実行処理時間に対する初期化処理時間の比率が大きくなり、初期化処理の回数の影響が大きくなるという課題が発生する。
【０１１６】
図２０（ｂ）は、本発明の実施の形態１におけるジョブとグループの例を示す図である。ジョブＪ１〜Ｊ５には、それぞれシナリオ数が均一となるように定義されている。グループＧ１〜Ｇ５には、計算ノードのノード数が均一となるように定義されている。また、グループ数は、ジョブ数と同数である。
【０１１７】
図２２は、本発明の実施の形態１にかかるシナリオの並列実行による効果を説明するための図である。まず、ジョブＪ１〜Ｊ５がそれぞれグループＧ１〜Ｇ５に個別に割り当てられる。以後、ジョブＪ１〜Ｊ５は並列に実行される。そして、各グループにおいて、割り当てられたジョブに定義された定義されたシナリオの内、実行順序が最初のシナリオＳ１〜Ｓ５が各計算ノードに対して分散して並列に実行される。このとき、グループＧ１に含まれる各計算ノードは、シナリオＳ１を実行するための初期化処理を実行する。その後、シナリオＳ１に定義された複数のタスクを各計算ノードに分散して実行する。ここで、シナリオＳ１の分散実行処理の処理時間をシナリオ処理時間Ｌ５１とする。同様に、並行して、グループＧ２〜Ｇ５に含まれる各計算ノードは、シナリオＳ２〜Ｓ５を実行するための初期化処理及び分散実行処理を実行する。以後、各ジョブに定義されたシナリオの実行順序に従い、シナリオＳ６〜Ｓ４９６、Ｓ７〜Ｓ４９７、Ｓ８〜Ｓ４９８、Ｓ９〜Ｓ４９９及びＳ１０〜Ｓ５００のそれぞれについて、同様に、初期化処理及び分散実行処理が実行される。ジョブＪ１〜Ｊ５の全てのシナリオの処理時間をジョブ処理時間Ｌ５とする。そのため、図２１の例に比べて、短縮時間Ｌ６分が短縮されることとなる。
【０１１８】
図２２では、図２１に比べてグループ当たりのノード数が減るため、１計算ノード当たりに割り当てられる１シナリオのタスク数が多くなる。そのため、分散実行処理の時間は、シナリオ処理時間Ｌ４１に比べてシナリオ処理時間Ｌ５１が長くなる。一方で、初期化処理の時間は、図２１及び図２２において差が小さい。しかし、１計算ノード当たりに割り当てられるシナリオ数は、図２１に比べて少なくなる。そのため、１計算ノード当たりの初期化処理の回数が少なくなる。つまり、複数のシナリオを並列に実行することにより、シナリオ毎に計算ノードにおいて実行される初期化処理の回数を抑えることができる。
【０１１９】
以上のことから、本発明の実施の形態１にかかる取引計算シミュレーションシステム３により、シミュレーション処理全体の処理時間を短くすることができる。
【０１２０】
＜発明の実施の形態２＞
上述した本発明の実施の形態１にかかる計算ノード３５１、３５２、・・・３５ｎ２は、同等の機能を実現するものであるが、取引計算シミュレーションシステム３の物理構成によっては、各計算ノードにおける処理パフォーマンスの差が生じ得る。例えば、上述した図５の場合、第１計算ノード群３８４は、マスタサーバ３６１と同一のエンクロージャ３６０内に搭載されている。一方、第２計算ノード群３８５は、エンクロージャ３６０とは異なるエンクロージャ３７０内に搭載されている。すなわち、第１計算ノード群３８４は、エンクロージャ３６０内の通信回線３８２を介してマスタサーバ３６１と接続されている。一方、第２計算ノード群３８５は、エンクロージャ３７０内の通信回線３８３、エンクロージャ間を接続する通信回線３８１及びエンクロージャ３６０内の通信回線３８２を介してマスタサーバ３６１と接続されている。
【０１２１】
ここで、例えば、通信回線３８１が通信回線３８２及び３８３に比べて低速であることがあり得る。このとき、マスタサーバ３６１にとって、第１計算ノード群３８４と第２計算ノード群３８５とは回線速度の差から処理パフォーマンスに差が生じ得る。そこで、本発明の実施の形態２では、複数の計算ノード間で接続される通信回線の速度の差に伴う処理パフォーマンスの差を考慮した場合の実施例を示す。本発明の実施の形態２にかかる取引計算シミュレーションシステムは、本発明の実施の形態１に改良を加えたものである。以下、実施の形態１との違いを中心に説明し、実施の形態１と同等の構成及び処理については、図示及び詳細な説明を省略する。
【０１２２】
まず、本発明の実施の形態２にかかる実施例１は、１グループ内の処理パフォーマンスを向上させるものである。実施例１にかかる取引計算シミュレーションシステムは、マスタノードと複数の計算ノードの一部である第１計算ノード群とが接続される第１の通信回線と、第１の通信回線より低速の通信回線であり、第１計算ノード群以外の計算ノードである第２計算ノード群と第１の通信回線とが接続される第２の通信回線とを備える。ここで、マスタノードは、複数の計算ノードにおける実行を制御し、少なくともスケジュール情報生成手段（例えば、本発明の実施の形態１にかかるスケジュール情報生成手段３４５）を有する。また、スケジュール情報生成手段は、第２計算ノード群に属する計算ノード数を第１計算ノード群に属する計算ノード数より少なく選択する。そして、スケジュール情報生成手段は、第１計算ノード群に属する計算ノード及び第２計算ノード群から選択した計算ノードのそれぞれに対して、生成した第１のタスク及び第２のタスクの中のタスクを個別に割り当ててスケジュール情報を生成する。
【０１２３】
第１計算ノード群は、マスタサーバと同一のエンクロージャに搭載される計算サーバである。また、第２計算ノード群は、マスタサーバとは異なるエンクロージャに搭載される計算サーバである。第２計算ノード群は、マスタノードと低速な通信回線を介して接続されているため、第１計算ノード群に比べてマスタノードからの指示やタスクの受け付け及びデータの転送等の時間が長くなる。そのため、ネットワークがボトルネックとなり、１タスクの処理時間が相対的に長くなる。さらに、マスタノードにとって、第２計算ノード群に属する計算ノードについて所定時間応答がないと判定され、利用不可とみなされる場合があり、タスクの実行自体は終了している計算ノードが利用されなくなり、リソースの利用効率が悪くなる。
【０１２４】
そして、例えば、エンクロージャ数が３台以上である場合、利用可能な計算サーバの全台数の内、第１計算ノード群に属する計算ノードが占める割合は、半分以下となる。よって、通信回線の低速又は高速を考慮せずに無作為に計算ノードを選択した場合、第２計算ノード群に属する計算ノード数が第１計算ノード群に属する計算ノード数より多くなってしまう。
【０１２５】
図２３（ａ）は、本発明の実施の形態２にかかる実施例１により選択される計算ノードの例を示す図である。グループＧ１には、第１計算ノード群から９つの計算ノード、第２計算ノード群から３つの計算ノードが選択されていることを示す。実施例１では、利用可能な計算サーバの全てを同等して扱うのではなく、第２計算ノード群に属する計算ノード数を第１計算ノード群に属する計算ノード数より少なく選択することで、１タスク当たりの処理時間が相対的に短い第１計算ノード群に属する計算ノードに対して繰り返して多くのタスクを実行させることができる。そのため、１シナリオ当たりの処理時間を短くすることができる。
【０１２６】
次に、本発明の実施の形態２にかかる実施例２は、ジョブ間の処理時間を均一になるようにして、処理パフォーマンスを向上させるものである。実施例２にかかる取引計算シミュレーションシステムは、マスタノードと複数の計算ノードの一部である第１計算ノード群とが接続される第１の通信回線と、第１の通信回線より低速の通信回線であり、第１計算ノード群以外の計算ノードである第２計算ノード群と第１の通信回線とが接続される第２の通信回線とを備える。マスタノードは、少なくともグループ生成手段（例えば、本発明の実施の形態１にかかるグループ生成手段３４２）を有する。そして、グループ生成手段は、第１の通信回線及び第２の通信回線の通信速度に基づき、第１計算ノード群及び第２計算ノード群から選択した計算ノードを用いて複数のグループを生成する。このように、通信回線の制約を考慮してグループを生成することにより、計算ノードを効率的に利用できる。
【０１２７】
さらに、実施例２にかかるグループ生成手段は、複数のシナリオの数が均一となるように複数のジョブが定義されている場合に、第１計算ノード群に属する計算ノード数と第２計算ノード群に属する計算ノード数との比率が均一になるように複数のグループを生成する。ジョブ間の処理負荷が均等である場合、高速と低速を一定比率でグループ分けすることにより、各グループ内でそれぞれ高速ノードが優先してタスクが実行されるため、ジョブ間の処理時間を均一とすることができる。
【０１２８】
図２３（ｂ）は、本発明の実施の形態２にかかる実施例２により選択される計算ノードの例を示す図である。グループＧ１〜Ｇ３には、それぞれ第１計算ノード群から３つの計算ノード、第２計算ノード群から１つの計算ノードが選択されていることを示す。これにより、複数のグループにより複数のジョブを並列に実行する場合に、各グループにおけるシナリオの処理時間を短くしつつ、グループ間の処理時間の差を小さくすることができる。
【０１２９】
また、本発明の実施の形態２にかかる実施例３は、実施例２の変形例であり、ジョブ間の処理負荷に差がある場合、処理パフォーマンスを向上させるものである。実施例３にかかるグループ生成手段は、第１計算ノード群に属する計算ノードを第２計算ノード群に属する計算ノードとは異なるグループに割り当てる。また、実施例３にかかるジョブ割当手段（例えば、本発明の実施の形態１にかかるジョブ割当手段３４３）は、複数のジョブの内、処理負荷が高いジョブを第１計算ノード群に属する計算ノードが割り当てられたグループに割り当てる。つまり、ジョブ間の処理負荷に差がある場合、１タスク当たりの処理時間が相対的に短い第１計算ノード群に属する計算ノードのみのグループＧ１と、１タスク当たりの処理時間が相対的に長い第２計算ノード群に属する計算ノードのみのグループＧ２とを生成し、処理負荷の高いジョブをグループＧ１に割り当てる。
【０１３０】
図２３（ｃ）は、本発明の実施の形態２にかかる実施例３により選択される計算ノードの例を示す図である。グループＧ１には、第１計算ノード群のみから６つの計算ノードが選択されていることを示す。グループＧ２には、第２計算ノード群のみから６つの計算ノードが選択されていることを示す。これにより、グループ間の処理時間を近づけることができる。
【０１３１】
＜発明の実施の形態３＞
金融取引における取引計算のシナリオ数は、年々増加する傾向がある。そのため、計算ノードの追加や通信回線の帯域の増強を含めたリソースの追加が発生し得る。上述した本発明の実施の形態１又は２にかかる取引計算シミュレーションシステムは、各計算ノードに取引計算のシミュレーション処理を実行させるために、シナリオ毎にマスタノードから各計算ノードへ市場情報等の入力データを転送する必要がある。上述したように、一般的には、分散させる計算ノード数が多いほど、シナリオ当たりの処理時間は短くなる。しかし、入力データのサイズが大きい場合は、各計算ノードへの転送時間が処理時間に与える影響が無視できなくなる。
【０１３２】
そこで、本発明の実施の形態３にかかる取引計算シミュレーションシステムは、複数の計算ノードがシナリオを実行するために用いる入力データを所定の圧縮率に基づき圧縮するデータ圧縮手段（不図示）をさらに備える。そして、指示手段（例えば、本発明の実施の形態１にかかる指示手段３４４）は、データ圧縮手段により圧縮された入力データを複数の計算ノードへ転送し、複数の計算ノードにおいて分散実行処理の開始前までに当該転送された入力データを所定の圧縮率に基づき解凍させるように指示を行う。これにより、計算ノードが増加された場合であっても、入力データの転送時間が処理時間に与える影響を少なくすることができる。
【０１３３】
但し、データの圧縮及び解凍の処理自体は、純粋に処理時間の増加となる。一般に、高い圧縮率によりデータ圧縮及び解凍を行うと、低い圧縮率によりデータ圧縮及び解凍を行う場合に比べて処理時間が長くなる。そのため、データ圧縮手段は、マスタノードと複数の計算ノードとが接続される通信回線の帯域に応じて所定の圧縮率を決定し、決定した圧縮率に基づき入力データを圧縮し、指示手段は、決定した圧縮率に基づき解凍させるように指示を行うようにするとよい。これにより、通信回線の帯域が増強された場合には、入力データの転送時間が短くなるため、多少圧縮率を低くしても転送時間への影響は少なく、逆に圧縮及び解凍の処理時間を短くすることも可能となる。
【０１３４】
図２４は、本発明の実施の形態３にかかるデータ圧縮処理の流れを示すフローチャートである。まず、マスタノードにおいて、データ圧縮手段は、通信回線の帯域を判定する（Ｓ８１）。例えば、データ圧縮手段は、現在の通信状態を調査するための通信コマンドを発行し、当該通信コマンドの応答時間を計測する。次に、データ圧縮手段は、計測した現在の応答時間と過去の応答時間とを比較する。そして、現在の応答時間が長い場合に、マスタノードと複数の計算ノードとが接続される通信回線の帯域が狭いと判定する。また、現在の応答時間が短い場合に、通信回線の帯域が広いと判定する。
【０１３５】
次に、データ圧縮手段は、圧縮率を決定する（Ｓ８２）。例えば、ステップＳ８１により通信回線の帯域が狭いと判定した場合、データ圧縮手段は、前回の圧縮率より高く決定する。また、ステップＳ８１により通信回線の帯域が広いと判定した場合、データ圧縮手段は、前回の圧縮率より低く決定する。
【０１３６】
そして、データ圧縮手段は、決定した圧縮率に基づき入力データを圧縮する（Ｓ８３）。尚、データを圧縮する方法は、公知なものであるため、具体的な説明を省略する。続いて、指示手段は、圧縮された入力データを各計算ノードへ転送する（図１０のステップＳ３３）。その際、指示手段は、各計算ノードにおいて分散実行処理の開始前までに当該転送された入力データを、ステップＳ８２により決定した圧縮率に基づき解凍させるように指示を行う。これにより、各計算ノードは、受信した入力データについて、ステップＳ８２により決定した圧縮率に基づき解凍（例えば、図１６のステップＳ７２の直後）し、シナリオの処理を実行することができる。
【０１３７】
このように、本発明の実施の形態３により、入力データの転送時間を抑えつつ、本発明の実施の形態１と同様の効果を奏することができる。これにより、計算ノードの追加がされた場合であっても、処理時間を短くすることができる。さらに、通信回線の帯域の増強が発生した場合であっても、設定を変更する必要がない。
＜その他の発明の実施の形態＞
【０１３８】
尚、図８のステップＳ１１及びＳ１２は、必ずしも上述したタイミングで実行されなくても構わない。または、ステップＳ１１及びＳ１２を実行する代わりに、シミュレーション処理の開始前にシミュレーション情報記憶部３１０に予め格納されたジョブ情報３１１、シナリオ情報３１２、タスク情報３１３、取引情報３１４及びグループ情報３１５を用いて、図８のステップＳ１３以降を実行しても構わない。
【０１３９】
また、図１１のステップＳ４０は、必ずしも上述したタイミングで実行されなくても構わない。例えば、図８のステップＳ１３以前に実行しても構わない。または、ステップＳ４０を実行する代わりに、シミュレーション処理の開始前にスケジュール情報格納部３２０に予めに格納されたスケジュール情報３２１を用いて図１１のステップＳ４１乃至Ｓ４９を実行しても構わない。
【０１４０】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【符号の説明】
【０１４１】
１００  金融取引管理システム
１  ＡＰサーバ
２  ＤＢサーバ
２１  データベース
２２  市場情報
２３  取引データ
３  取引計算シミュレーションシステム
３０  マスタサーバ
３１、３２、・・・３ｎ１  計算サーバ
３１０  シミュレーション情報記憶部
３１１  ジョブ情報
３１２  シナリオ情報
３１３  タスク情報
３１４  取引情報
３１５  グループ情報
３２０  スケジュール情報格納部
３２１  スケジュール情報
３３０  処理時間記憶部
３３１  処理時間
３４０  マスタノード
３４１  ジョブ生成手段
３４２  グループ生成手段
３４３  ジョブ割当手段
３４４  指示手段
３４５  スケジュール情報生成手段
３５１、３５２、３５ｎ２  計算ノード
３６０  エンクロージャ
３６１  マスタサーバ
３６２、・・・３６ｎ３  計算サーバ
３７０  エンクロージャ
３７１、３７２、・・・３７ｎ４  計算サーバ
３８１  通信回線
３８２  通信回線
３８３  通信回線
３８４  第１計算ノード群
３８５  第２計算ノード群
４１ａ〜４１ｍ  ＣＰＵ
４２ａ〜４２ｍ  メモリ
４３  ＩＦ部
４４  ハードディスク
４４１  ＯＳ
４４２  分散サーバプログラム
４４３  取引計算シミュレーションプログラム
４４４  ＯＳ
４４５  分散クライアントプログラム
４４６  取引計算プログラム
４５ａ〜４５ｍ  ノード
Ｊ１〜Ｊ５  ジョブ
Ｊｎ５  ジョブ
Ｓ１〜Ｓ５００  シナリオ
Ｓｎ６  シナリオ
Ｔ１〜Ｔ１５  タスク
Ｔｎ７  タスク
Ｄ１〜Ｄ３９  取引単位
Ｄｎ８  取引単位
Ｇ１〜Ｇ５  グループ
Ｇｎ９  グループ
Ｎ１〜Ｎ５  計算ノード
Ｎｎ１０  計算ノード
Ｌ１、Ｌ２  シナリオ処理時間
Ｌ１１〜Ｌ１４  終了待ち時間
Ｌ３  短縮時間
Ｌ４、Ｌ５  ジョブ処理時間
Ｌ４１、Ｌ５１  シナリオ処理時間
Ｌ６  短縮時間
【図１】
2012038274.tif 000003
【図２】
2012038274.tif 000004
【図３】
2012038274.tif 000005
【図４】
2012038274.tif 000006
【図５】
2012038274.tif 000007
【図６】
2012038274.tif 000008
【図７】
2012038274.tif 000009
【図８】
2012038274.tif 000010
【図９】
2012038274.tif 000011
【図１０】
2012038274.tif 000012
【図１１】
2012038274.tif 000013
【図１２】
2012038274.tif 000014
【図１３】
2012038274.tif 000015
【図１４】
2012038274.tif 000016
【図１５】
2012038274.tif 000017
【図１６】
2012038274.tif 000018
【図１７】
2012038274.tif 000019
【図１８】
2012038274.tif 000020
【図１９】
2012038274.tif 000021
【図２０】
2012038274.tif 000022
【図２１】
2012038274.tif 000023
【図２２】
2012038274.tif 000024
【図２３】
2012038274.tif 000025
【図２４】
2012038274.tif 000026