(57)【要約】【課題】格子を用いた計算において計算処理を高速化することを目的とする。【解決手段】格子の横軸であるｍの値が大きくなる方向に格子の接点の値を計算していく際に、ｍ＝ｎ−１にダミーの接点を追加して、ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値と追加したダミーの接点の値とを用いてベクトル演算することで、ｍ＝ｎの接点の値を求めることができるように、追加するダミーの接点を決定する決定手段と、決定手段で決定されたダミーの接点をｍ＝ｎ−１に追加する追加手段と、ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値と追加手段で追加されたダミーの接点の値とを用いてベクトル演算することで、ｍ＝ｎにある接点の値を算出する算出手段と、を有することによって課題を解決する。【選択図】図８
2010272107.tif 000002
【特許請求の範囲】
【請求項１】
１つの命令で複数の演算を実行するＳＩＭＤ機能を有する演算処理装置を有する計算装置であって、
格子の横軸であるｍの値が大きくなる方向に格子の接点の値を計算していく際に、ｍ＝ｎ−１にダミーの接点を追加して、前記ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値と追加したダミーの接点の値とを用いてベクトル演算することで、ｍ＝ｎの接点の値を求めることができるように、前記追加するダミーの接点を決定する決定手段と、
前記決定手段で決定されたダミーの接点をｍ＝ｎ−１に追加する追加手段と、
前記ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値と前記追加手段で追加されたダミーの接点の値とを用いてベクトル演算することで、ｍ＝ｎにある接点の値を算出する算出手段と、
を有することを特徴とする計算装置。
【請求項２】
１つの命令で複数の演算を実行するＳＩＭＤ機能を有する演算処理装置を有する計算装置であって、
格子の横軸であるｍの値が大きくなる方向に格子の接点の値を計算していく際に、前記ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値を用いてベクトル演算することで値を求めることができるように、ｍ＝ｎにある接点の範囲を決定する決定手段と、
前記ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値を用いてベクトル演算することでｍ＝ｎにある接点のうち、前記決定手段で決定された範囲内の接点の値を算出する範囲内接点値算出手段と、
を有することを特徴とする計算装置。
【請求項３】
ｍ＝ｎにある接点のうち、前記決定手段で決定された範囲外の接点の値を、前記ＳＩＭＤ機能を利用せずに算出する範囲外接点値算出手段を更に有することを特徴とする請求項２記載の計算装置。
【請求項４】
１つの命令で複数の演算を実行するＳＩＭＤ機能を有する演算処理装置を有するコンピュータにおける計算方法であって、
前記コンピュータが、格子の横軸であるｍの値が大きくなる方向に格子の接点の値を計算していく際に、ｍ＝ｎ−１にダミーの接点を追加して、前記ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値と追加したダミーの接点の値とを用いてベクトル演算することで、ｍ＝ｎの接点の値を求めることができるように、前記追加するダミーの接点を決定する決定ステップと、
前記コンピュータが、前記決定ステップで決定されたダミーの接点をｍ＝ｎ−１に追加する追加ステップと、
前記コンピュータが、前記ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値と前記追加ステップで追加されたダミーの接点の値とを用いてベクトル演算することで、ｍ＝ｎにある接点の値を算出する算出ステップと、
を有することを特徴とする計算方法。
【請求項５】
１つの命令で複数の演算を実行するＳＩＭＤ機能を有する演算処理装置を有するコンピュータにおける計算方法であって、
前記コンピュータが、格子の横軸であるｍの値が大きくなる方向に格子の接点の値を計算していく際に、前記ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値を用いてベクトル演算することで値を求めることができるように、ｍ＝ｎにある接点の範囲を決定する決定ステップと、
前記コンピュータが、前記ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値を用いてベクトル演算することでｍ＝ｎにある接点のうち、前記決定ステップで決定された範囲内の接点の値を算出する範囲内接点値算出ステップと、
を有することを特徴とする計算方法。
【請求項６】
１つの命令で複数の演算を実行するＳＩＭＤ機能を有する演算処理装置を有するコンピュータを、
格子の横軸であるｍの値が大きくなる方向に格子の接点の値を計算していく際に、ｍ＝ｎ−１にダミーの接点を追加して、前記ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値と追加したダミーの接点の値とを用いてベクトル演算することで、ｍ＝ｎの接点の値を求めることができるように、前記追加するダミーの接点を決定する決定手段と、
前記決定手段で決定されたダミーの接点をｍ＝ｎ−１に追加する追加手段と、
前記ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値と前記追加手段で追加されたダミーの接点の値とを用いてベクトル演算することで、ｍ＝ｎにある接点の値を算出する算出手段と、
して機能させることを特徴とするプログラム。
【請求項７】
１つの命令で複数の演算を実行するＳＩＭＤ機能を有する演算処理装置を有するコンピュータを、
格子の横軸であるｍの値が大きくなる方向に格子の接点の値を計算していく際に、前記ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値を用いてベクトル演算することで値を求めることができるように、ｍ＝ｎにある接点の範囲を決定する決定手段と、
前記ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値を用いてベクトル演算することでｍ＝ｎにある接点のうち、前記決定手段で決定された範囲内の接点の値を算出する範囲内接点値算出手段と、
して機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算装置、計算方法及びプログラムに関する。
【背景技術】
【０００２】
従来、特に画像処理、グラフィックスの分野では計算量が非常に多く、また、ほぼリアルタイムに計算を何回も繰り返す必要があった。但し、このような計算の大部分は下記のパターンであった。
（１）行列・ベクトルによる計算（例えば、座標軸の回転等の計算）
（２）同じ演算を多数のデータについて繰り返す（例えば、画像全体の色を反転させる等の計算）
これらの処理を高速化するニーズに対応させるためＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）という機能（以下、ＳＩＭＤ機能という）がＣＰＵやグラフィックボード（ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ））に実装されている。
【０００３】
ここで、図１は、ＳＩＭＤ機能の一例を説明するための図である。
通常の演算では、ＣＰＵの１クロックにおいて、１組の引数について１回の演算が行なわれるが、ＳＩＭＤ機能を利用すると例えば８組の引数について同種の演算を１クロックで行なうこができる（引数の片方がベクトルではなく、スカラーとなる演算もある）。ＳＩＭＤ機能を実装されたＣＰＵによっては、四則演算以外にも比較演算（等号、大小関係）や、ライブラリによってはｅｘｐ（ｘ）、ｓｉｎ（ｘ）、ｃｏｓ（ｘ）等の非線形な関数に対応しているものもある。また、これらのライブラリ等を用いて線形代数学で一般的に用いられるベクトル・行列の計算に限らず、非線形の計算についても高速化できる場合もある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３９５８６６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、数値計算手法の一つとして格子法がある。
図２は、格子法を説明するための図である。図２において、ｍは、格子の横軸を表している。また図２において、ｌは、格子の縦軸を表している。なお、図２では格子の一例として３項格子を示している。格子法における数値計算には多数のパターンがあるが、多くの場合、格子の何れの接点も同種の演算により順番に計算していくことができる。格子の計算には前進（右方向）へと計算していく場合と、後進（左方向）へと計算していく場合とがあるが、計算の考え方は同様である。
【０００６】
図３は、前進におけるｍ＝３にある接点の計算方法を説明するための図である。
ｍ＝３にある接点（１）、（２）を前進で計算する場合、計算装置は、それぞれｍ＝２にある黒丸、白丸の接点の値を用いて計算する。ここで、接点の値とは、格子法を適用するモデルに応じて異なるが、例えば、格子法を金融工学等に適用すると株価や金利等である。なお、接点の値は、接点ごとに１つとは限らず、接点ごとに複数の値を保持する場合もある。また、格子の値が株価の場合を例にすると、図３に示される格子の上下は、株価の確率変動を表している。
図４は、接点の値を求める式の一例を示す図である。図４において、関数ｆは、格子法を適用するモデルやモデルに格子法を適用する際の方法等に依存する。ｆを、ＳＩＭＤを用いて実装したときは、関数の各引数及び戻り値が、同じ長さの配列となる。
【０００７】
格子法の場合、図３に示されるようにｍの値に対して接点が固定ではない。つまり、例えば、ｍ＝２の接点の数と、ｍ＝３の接点の数と、が異なる（図１を例にすると、引数の要素数と、結果の要素数とが異なる）。そのため、ベクトル同士の演算を行なうことができず、ＳＩＭＤ機能を利用（又は適用）することができない問題があった。そのため、ＳＩＭＤ機能を有するＣＰＵ等の演算処理装置を有していても格子（格子法）を用いた計算においてＳＩＭＤ機能を利用することができないため、計算処理を高速化することができない問題があった。
【０００８】
本発明はこのような問題点に鑑みなされたもので、格子を用いた計算において計算処理を高速化することを目的とする。
【課題を解決するための手段】
【０００９】
そこで、本発明は、１つの命令で複数の演算を実行するＳＩＭＤ機能を有する演算処理装置を有する計算装置であって、格子の横軸であるｍの値が大きくなる方向に格子の接点の値を計算していく際に、ｍ＝ｎ−１にダミーの接点を追加して、前記ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値と追加したダミーの接点の値とを用いてベクトル演算することで、ｍ＝ｎの接点の値を求めることができるように、前記追加するダミーの接点を決定する決定手段と、前記決定手段で決定されたダミーの接点をｍ＝ｎ−１に追加する追加手段と、前記ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値と前記追加手段で追加されたダミーの接点の値とを用いてベクトル演算することで、ｍ＝ｎにある接点の値を算出する算出手段と、を有することを特徴とする。
【００１０】
かかる構成とすることにより、計算装置は、ｍ＝ｎ−１にダミーの接点を追加して、ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値と追加したダミーの接点の値とを用いてベクトル演算することで、ｍ＝ｎの接点の値を求めることができるように、前記追加するダミーの接点を決定し、決定したダミーの接点をｍ＝ｎ−１に追加して、ｍ＝ｎにある接点の値を、ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値と追加したダミーの接点の値とを用いてベクトル演算することで求める。よって、格子を用いた計算において計算処理を高速化することができる。
ここで、ＳＩＭＤ機能を有する演算処理装置とは、例えば、ＳＩＭＤ機能を有するＣＰＵ、ＳＩＭＤ機能を有するＧＰＵ等に対応する。
ここで、ＳＩＭＤ機能を有する演算処理装置とは、例えば、ＳＩＭＤ機能を有するＣＰＵ、ＳＩＭＤ機能を有するＧＰＵ等に対応する。
【００１１】
また、本発明は、１つの命令で複数の演算を実行するＳＩＭＤ機能を有する演算処理装置を有する計算装置であって、格子の横軸であるｍの値が大きくなる方向に格子の接点の値を計算していく際に、前記ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値を用いてベクトル演算することで値を求めることができるように、ｍ＝ｎにある接点の範囲を決定する決定手段と、前記ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値を用いてベクトル演算することでｍ＝ｎにある接点のうち、前記決定手段で決定された範囲内の接点の値を算出する範囲内接点値算出手段と、を有することを特徴とする。
【００１２】
かかる構成とすることにより、計算装置は、ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値をベクトル演算して求めることができるように、ｍ＝ｎの接点の範囲を決定し、ｍ＝ｎの接点のうち、その範囲内の接点の値はＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値をベクトル演算して求める。よって、格子を用いた計算において計算処理を高速化することができる。
【００１３】
また、本発明は、計算方法及びプログラムとしてもよい。
【発明の効果】
【００１４】
本発明によれば、格子を用いた計算において計算処理を高速化することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、ＳＩＭＤ機能の一例を説明するための図である。
【図２】図２は、格子法を説明するための図である。
【図３】図３は、前進におけるｍ＝３にある接点の計算方法を説明するための図である。
【図４】図４は、接点の値を求める式の一例を示す図である。
【図５】図５は、計算装置のハードウェア構成の一例を示す図である。
【図６】図６は、実施形態１の計算装置の機能構成の一例を示す図である。
【図７Ａ】図７Ａは、追加するダミーの接点の数の決定を説明するための図である。
【図７Ｂ】図７Ｂは、図７Ａに対応する、ＳＩＭＤ機能を利用する演算の一例を示す図である。
【図７Ｃ】図７Ｃは、図７Ｂに対応する、通常の演算の一例を示す図である。
【図７Ｄ】図７Ｄは、関数ｆの一例を示す図である。
【図７Ｅ】図７Ｅは、図７Ｄに示す関数ｆの場合における図７Ｂのより具体的な演算の一例を示す図である。
【図８】図８は、実施形態１における格子法における接点の値の算出処理の一例を示すフローチャートである。
【図９】図９は、実施形態２の計算装置の機能構成の一例を示す図である。
【図１０Ａ】図１０Ａは、範囲の決定を説明するための図である。
【図１０Ｂ】図１０Ｂは、図１０Ａに対応する、ＳＩＭＤ機能を利用する演算の一例を示す図である。
【図１０Ｃ】図１０Ｃは、図１０Ｂに対応する、通常の演算の一例を示す図である。
【図１１】図１１は、実施形態２における格子法における接点の値の算出処理の一例を示すフローチャートである。
【図１２】図１２は、２項モデルの格子を示す図である。
【図１３】図１３は、２項モデルでの原資産価格の計算を説明するための図である。
【図１４】図１４は、２項モデルの接点の値を求める式の一例を示す図である。
【図１５】図１５は、実施形態３の計算装置の機能構成を示す図である。
【図１６】図１６は、ダミーの接点を追加するイメージを示す図である。
【図１７Ａ】図１７Ａは、ベクトル演算の対象となるｎ個の計算を示す図である。
【図１７Ｂ】図１７Ｂは、ベクトル演算のイメージを示す図である。
【図１８Ａ】図１８Ａは、ｍ＝３の接点の値を算出する式を示す図である。
【図１８Ｂ】図１８Ｂは、ｍ＝３の接点の値を算出するベクトル演算のイメージを示す図である。
【図１９】図１９は、関数ｆの一例を示す図である。
【図２０】図１９に示す関数ｆの場合における図１８Ｂのより具体的な演算の一例を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について図面に基づいて説明する。
【００１７】
（計算装置のハードウェア構成）
図５は、計算装置のハードウェア構成の一例を示す図である。図５に示されるように、計算装置（コンピュータ）１は、ハードウェア構成として、入力装置１１と、表示装置１２と、記録媒体ドライブ装置１３と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１５と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１６と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１７と、インターフェース装置１８と、ＨＤ（Ｈａｒｄ  Ｄｉｓｋ）１９と、を含む。
【００１８】
入力装置１１は、計算装置１の操作者が操作するキーボード及びマウス等で構成され、計算装置１に各種操作情報等を入力するのに用いられる。表示装置１２は、計算装置１の操作者が利用するディスプレイ等で構成され、各種情報（又は画面）等を表示するのに用いられる。
【００１９】
インターフェース装置１８は、計算装置１をネットワーク等に接続するネットワーク接続装置である。後述する計算装置１の機能及び後述するフローチャート等に係るプログラムは、例えば、ＣＤ−ＲＯＭ等の記録媒体１４によって計算装置１に提供されるか、ネットワーク等を通じてダウンロードされる。記録媒体１４は、記録媒体ドライブ装置１３にセットされ、プログラムが記録媒体１４から記録媒体ドライブ装置１３を介してＨＤ１９にインストールされる。
【００２０】
ＲＯＭ１５は、計算装置１の電源投入時に最初に読み込まれるプログラム等を記録する。ＲＡＭ１６は、計算装置１のメインメモリである。ＣＰＵ１７は、必要に応じて、ＨＤ１９よりプログラムやデータを読み出して、ＲＡＭ１６に格納し、プログラムを実行することで、後述する機能及び後述するフローチャートに係る処理等を実現する。本実施形態のＣＰＵ１７は、ＳＩＭＤ機能を有する。
【００２１】
なお、計算装置１は、ハードウェア構成として必ずしも入力装置１１、表示装置１２、記録媒体ドライブ装置１３等を含まなくてもよい。
【００２２】
＜実施形態１＞
（実施形態１の処理の概要）
上述したように、格子の横軸であるｍの値が大きくなる方向に格子の接点の値を計算していく計算装置１において、ｍ＝ｎ−１の接点の数と、ｍ＝ｎの接点の数とが異なるため、ｍ＝ｎ−１の接点の値を用いてベクトル演算することでｍ＝ｎの接点の値を求めることができない問題があった。
本実施形態では、計算装置１は、ｍ＝ｎの接点の数に応じて、ｍ＝ｎ−１にダミーの接点を追加して、ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値と追加したダミーの接点の値とを用いてベクトル演算することで、ｍ＝ｎの接点の値を求めることができる、前記追加するダミーの接点の数を決定し、決定した数のダミーの接点をｍ＝ｎ−１に追加して、ｍ＝ｎにある接点の値を、ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値と追加したダミーの接点の値とを用いてベクトル演算して求めることで上記問題を解決する。
つまり、計算装置１は、引数の要素数と、結果の要素数とが異なるため、ベクトル演算で結果の要素を求めることができないのであるならば、結果の要素数に応じて、引数に追加するダミーの要素を決定し、引数にダミーの要素を追加する。そして、計算装置１は、ＳＩＭＤ機能を利用して元々の引数の要素と追加したダミーの要素とを用いてベクトル演算することで結果の要素の値を求める。
以下、本実施形態の処理の詳細を説明する。
【００２３】
（実施形態１の計算装置の機能構成）
図６は、実施形態１の計算装置の機能構成の一例を示す図である。図６に示されるように、計算装置は、機能構成として、決定部３１と、追加部３２と、算出部３３と、を含む。
決定部３１は、ｍ＝ｎの接点の数（及びｍ＝ｎ−１の接点の数）に応じて、ｍ＝ｎ−１にダミーの接点を追加して、ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値と追加したダミーの接点の値とを用いてベクトル演算することで、ｍ＝ｎの接点の値を求めることができる、前記追加するダミーの接点の数（及び位置）を決定する。
【００２４】
ここで、図７Ａは、追加するダミーの接点の数の決定を説明するための図である。図２に示したような格子の場合、ｍ＝２の接点の数は５であり、ｍ＝３の接点の数は７である。図７Ａの例の場合、決定部３１は、ｍ＝３の接点の数（７）（及びｍ＝２の接点の数５）に応じて、ｍ＝ｎ−１にダミーの接点を追加して、ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値と追加したダミーの接点の値とを用いてベクトル演算することで、ｍ＝ｎの接点の値を求めることができる、前記追加するダミーの接点の数を６つに決定する。なお、決定部３１は、ｍ＝ｎ−１に追加するダミーの接点の数を決定すると共に、図７Ａに示されるように、ベクトル演算に関する追加するダミーの位置も決定する。
より具体的に説明すると、決定部３１は、３格子の場合、ｍ＝ｎの接点の値を求める際に、ｍ＝ｎ−１からの矢印が３つ（上から、横から、下からの３つ）となるよう、追加するダミーの接点の数及び位置を決定する。
ここで、図７Ｂは、図７Ａに対応する、ＳＩＭＤ機能を利用する演算の一例を示す図である。また、図７Ｃは、図７Ｂに対応する、通常の演算の一例を示す図である。なお、図７Ｂ及び図７Ｃにおいて、ｄはダミーの接点の値である。
また、図７Ｄは、関数ｆの一例を示す図である。更に、図７Ｅは、図７Ｄに示す関数ｆの場合における図７Ｂのより具体的な演算の一例を示す図である。図７Ｅにおいて、「×」はベクトルの要素毎の掛け算を表すものとする。また、ｄ1＝ｄ2＝０とする。
【００２５】
再び図６の説明に戻り、追加部３２は、決定部３１より決定した追加するダミーの接点に関する情報を受け取り、決定部３１で決定された数だけ、決定部３１で決定された位置にダミーの接点を追加する。なお、追加部３２は、ダミーの接点の値はゼロとしてダミーの接点を追加する。
【００２６】
再び図６の説明に戻り、算出部３３は、追加部３２より追加したダミーの接点に関する情報を受け取り、ＣＰＵ１７が提供するＳＩＭＤ機能を利用してｍ＝ｎ−１の元々あった接点の値と追加したダミーの接点の値とを用いてベクトル演算することで、ｍ＝ｎにある接点の値を算出する。
【００２７】
（実施形態１における格子法における接点の値の算出処理）
図８は、実施形態１における格子法における接点の値の算出処理の一例を示すフローチャートである。なお、図８では説明の簡略化のため、ＣＰＵ１７が処理を行うものとして説明を行なう。
ステップＳ２０において、ＣＰＵ１７は、ｍ＝０の接点の値を、ＲＡＭ１６等より取得する。なお、ｍ＝０の接点の値は例えば、ユーザ等により設定されるものとする。また、決定部２１は、変数ｎに１を代入する。
続いて、ステップＳ２１において、ＣＰＵ１７は、ｍ＝ｎの接点の数（及びｍ＝ｎ−１の接点の数）に応じて、ｍ＝ｎ−１に追加するダミーの接点の数（及び位置）を決定する。
【００２８】
続いて、ステップＳ２２において、ＣＰＵ１７は、ステップＳ２１での決定に基づき、ｍ＝ｎ−１にダミーの接点を追加する。
続いて、ステップＳ２３において、ＣＰＵ１７は、ＣＰＵ１７が提供するＳＩＭＤ機能を利用してｍ＝ｎ−１の元々あった接点の値とステップＳ２２で追加されたダミーの接点の値とを用いてベクトル演算することで、ｍ＝ｎにある接点の値を算出する。
続いて、ステップＳ２４において、ＣＰＵ１７は、ｎの値を１つインクリメントする。
【００２９】
続いて、ステップＳ２５において、ＣＰＵ１７は、予め設定された、又はユーザによって入力されたｍの値等に基づいて、全ての格子の接点の値を計算したか否かを判断し、図８に示す処理を終了するか否かを判定する。図８に示す処理を終了すると判定した場合、ＣＰＵ１７は、図８に示す処理を終了する。図８に示す処理を終了しないと判定した場合、ＣＰＵ１７は、ステップＳ２１の処理に戻り、格子の横軸であるｍの値が大きくなる方向に格子の接点の値を計算していく処理を継続する。
【００３０】
以上、上述したように、本実施形態によれば、ＣＰＵ１７は、ｍ＝ｎの接点の値を算出する際に、ｍ＝ｎの接点の値をｍ＝ｎ−１の接点の値を用いてベクトル演算することで求めることができるよう、ｍ＝ｎ−１の接点の数をダミーの接点を追加することで増やす。そして、ＣＰＵ１７は、ＣＰＵ１７が提供するＳＩＭＤ機能を利用して元々あったｍ＝ｎ−１の接点の値及び追加したダミーの接点の値を用いてベクトル演算することで、ｍ＝ｎにある接点の値を算出する。このことで、格子を用いた計算においてＣＰＵ１７は、ＳＩＭＤ機能が利用可能となるため、格子を用いた計算において計算処理を高速化することができる。
【００３１】
＜実施形態２＞
（実施形態２の処理の概要）
上述したように、格子の横軸であるｍの値が大きくなる方向に格子の接点の値を計算していく計算装置１において、ｍ＝ｎ−１の接点の数と、ｍ＝ｎの接点の数とが異なるため、ｍ＝ｎ−１の接点の値を用いてベクトル演算することでｍ＝ｎの接点の値を求めることができない問題があった。
本実施形態では、計算装置１は、ｍ＝ｎ−１の接点の数に応じて、ｍ＝ｎ−１の接点の値を用いてベクトル演算でｍ＝ｎの接点の値を求めるｍ＝ｎの接点の数の範囲を決定し、ｍ＝ｎの接点のうち、範囲内の接点の値は、ＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値を用いてベクトル演算で求め、範囲外の接点の値は、一つ一つ算出することで上記問題を解決する。
つまり、計算装置１は、引数の要素数と、結果の要素数とが異なるため、ベクトル演算で結果の要素を求めることができないのであるならば、引数の要素数に応じて、引数の要素を用いてベクトル演算することで求められる結果の要素数の範囲を限定する。そして、計算装置１は、結果の要素のうち、限定した範囲内の要素に関しては、ＳＩＭＤ機能を利用して引数の要素を用いてベクトル演算することでその値を求める。そして、計算装置１は、限定した範囲外の要素に関しては、ＳＩＭＤ機能を利用せず、引数の要素等を用いて一つ一つその値を求める。
以下、本実施形態の処理の詳細を説明する。
【００３２】
（実施形態２の計算装置の機能構成）
図９は、実施形態２の計算装置の機能構成の一例を示す図である。図９に示されるように、計算装置１は、機能構成として、決定部２１と、範囲内接点値算出部２２と、範囲外接点値算出部２３と、を含む。
決定部２１は、ｍ＝ｎ−１の接点の数に応じて、ｍ＝ｎ−１の接点の値を用いてベクトル演算することで値を求めることができる、ｍ＝ｎにある接点の範囲を決定する。
【００３３】
ここで、図１０Ａは、範囲の決定を説明するための図である。図２に示したような格子の場合、ｍ＝２の接点の数は５であり、ｍ＝３の接点の数は７である。図１０Ａの例の場合、決定部２１は、ｍ＝２の接点の数（５）に応じて、ｍ＝２の接点の値を用いて図１０Ａに示されるようなベクトル演算で値を求めることができる、ｍ＝３にある接点の範囲を、７個のうち、真ん中の３つに決定する。言い換えると、決定部２１は、図１０Ａに示されるような３格子の場合、ｍ＝２の接点の値を用いて図１０Ａに示されるようなベクトル演算で値を求めることができる、ｍ＝３にある接点の範囲を、ｍ＝２の接点からの矢印が３つ重なっている範囲とする。結果的に、図２に示されるような３格子の場合、ｍの値が２以上の場合、決定部２１は、常に端の４つ（上２つ、下２つ）が範囲から外れるように範囲を決定することとなる。
ここで、図１０Ｂは、図１０Ａに対応する、ＳＩＭＤ機能を利用する演算の一例を示す図である。また、図１０Ｃは、図１０Ｂに対応する、通常の演算の一例を示す図である。
【００３４】
再び図９の説明に戻り、範囲内接点値算出部２２は、決定部２１より決定した接点の範囲に関する情報を受け取り、ＣＰＵ１７が提供するＳＩＭＤ機能（１つの命令で複数の演算を実行する機能）を利用してｍ＝ｎ−１の接点の値を用いてベクトル演算することで、ｍ＝ｎにある接点のうち、前記範囲内の接点の値を算出する。図１０Ａの例では、範囲内接点値算出部２２は、ｍ＝３の接点のうち、真ん中の３つの接点の値を、ＣＰＵ１７が提供するＳＩＭＤ機能を利用してｍ＝２の接点の値を用いてベクトル演算することで、算出する。
【００３５】
再び図９の説明に戻り、範囲外接点値算出部２３は、決定部２１より決定した接点の範囲に関する情報を受け取り、範囲外の接点を特定する。そして、範囲外接点値算出部２３は、ｍ＝ｎ−１の接点の値を用いて、一つ一つ算出することで、ｍ＝ｎにある接点のうち、前記範囲外の接点の値を、ＣＰＵ１７が提供するＳＩＭＤ機能を利用せずに算出する。
より具体的に説明すると、範囲外接点値算出部２３は、ｍ＝ｎにある接点のうち、前記範囲外の接点の値を、ｍ＝ｎ−１にある接点で、前記範囲外の接点に向う矢印が出ている接点の値を用いて算出する。なお、３格子の場合、ｍ＝ｎにある接点のうち、前記範囲外の接点に対しては、ｍ＝ｎ−１にある接点から３つの矢印が来ない。そのため、範囲外接点値算出部２３は、足りない矢印に関する接点（ダミーの接点）をｍ＝ｍ＝ｎ−１の接点に追加（結果的には上述した実施形態１のように追加）する。そして、範囲外接点値算出部２３は、ｍ＝ｎにある接点のうち、前記範囲外の接点の値を、ｍ＝ｎ−１にある接点で、前記範囲外の接点に向う矢印が出ている接点の値と、追加したダミーの接点の値（ゼロ）と、を用いて、ＳＩＭＤは用いず、一つ一つ算出する。
【００３６】
（実施形態２における格子法における接点の値の算出処理）
図１１は、実施形態２における格子法における接点の値の算出処理の一例を示すフローチャートである。なお、図１１では説明の簡略化のため、ＣＰＵ１７が処理を行うものとして説明を行なう。
ステップＳ１０において、ＣＰＵ１７は、ｍ＝０の接点の値を、ＲＡＭ１６等より取得する。なお、ｍ＝０の接点の値は例えば、ユーザ等により設定されるものとする。また、決定部２１は、変数ｎに１を代入する。
続いて、ステップＳ１１において、ＣＰＵ１７は、ｍ＝ｎ−１の接点の数に応じて、ｍ＝ｎにある接点の範囲を決定する。なお、ｎ＝１の場合、決定部２１は、ｍ＝ｎにある接点の範囲は、「なし」と決定する。
【００３７】
続いて、ステップＳ１２において、ＣＰＵ１７は、ＣＰＵ１７が提供するＳＩＭＤ機能を利用して、ｍ＝ｎ−１の接点の値を用いてベクトル演算することで（例えば、図１０Ａに示されるようなベクトル演算を行なうことで）、ｍ＝ｎにある接点のうち、ステップＳ１１で決定された範囲内の接点の値を、算出する。
【００３８】
続いて、ステップＳ１３において、ＣＰＵ１７は、ｍ＝ｎ−１の接点の値を用いて、一つ一つ算出することで、ｍ＝ｎにある接点のうち、ステップＳ１１で決定された範囲外の接点の値を、ＣＰＵ１７が提供するＳＩＭＤ機能を利用せずに算出する。
続いて、ステップＳ１４において、ＣＰＵ１７は、ｎの値を１つインクリメントする。
【００３９】
続いて、ステップＳ１５において、ＣＰＵ１７は、予め設定された、又はユーザによって入力されたｍの値等に基づいて、全ての格子の接点の値を計算したか否かを判断し、図１１に示す処理を終了するか否かを判定する。図１１に示す処理を終了すると判定した場合、ＣＰＵ１７は、図１１に示す処理を終了する。図１１に示す処理を終了しないと判定した場合、ＣＰＵ１７は、ステップＳ１１の処理に戻り、格子の横軸であるｍの値が大きくなる方向に格子の接点の値を計算していく処理を継続する。
【００４０】
以上、上述したように、本実施形態によれば、ＣＰＵ１７は、ｍ＝ｎの接点の値を算出する際に、ｍ＝ｎ−１の接点の数に応じて、ＳＩＭＤ機能を利用して求めることができるｍ＝ｎの接点の範囲を絞ることによって、絞った範囲内ではＳＩＭＤ機能を利用してｍ＝ｎ−１の接点の値を用いてベクトル演算することでｍ＝ｎの値を算出し、範囲外ではＳＩＭＤ機能を利用しないで接点の値を算出する。このことで、格子を用いた計算においてＣＰＵ１７は、ＳＩＭＤ機能が利用可能となるため、格子を用いた計算において計算処理を高速化することができる。
【００４１】
以上、上述した各実施形態によれば、格子を用いた計算において計算処理を高速化することができる。
【００４２】
＜実施形態３＞
（２項モデル）
格子法には、実施形態１、２で説明した３項モデルのほか、２項モデル（Ｂｉｎｏｍｉｎａｌ  Ｍｏｄｅｌ）がある。本実施形態では、２項モデルについて説明する。２項モデルは、ブラック・ショールズモデルと並び、オプション価格（プレミアム）を計算するための代表的な手法である。ブラック・ショールズモデルでは、オプション価格が解析式によって表され、株価、権利行使価格、期間、変動率、金利等のデータからオプション価格を容易に計算することができ、計算に要する時間も非常に短い。但し、ブラック・ショールズモデルによれば、ヨーロピアンタイプ即ち、オプション満期のみに権利行使可能なオプション）のオプション価格を計算することはできるが、アメリカンタイプ（即ち、オプション満期前であればいつでも権利行使可能なオプション）のオプション価格については計算することができない。
【００４３】
これに対して、２項モデルでは、原資産価格が上昇又は下降の何れかの動きを繰り返すと仮定して、まず原資産価格の変動を予測する計算を行い、その後、予測した将来の原資産価格から逆算してオプション価格を算出するものであり、計算に要する時間が長い。しかしながら、２項モデルによれば、ヨーロピアンタイプのみならず、アメリカンタイプやエキゾチックについても、オプション価格を計算することが可能である。
【００４４】
図１２は、２項モデルの格子を示す図である。２項モデルでは、格子の接点（ノード）ごとに原資産価格の値（以下、接点の値と呼ぶ）が算出される。図１２では、格子の接点が座標（ｍ，ｌ）を用いて表される。横軸のｍは期間に対応しており、期間が経過するにつれて、ｍが増加する。縦軸のｌは原資産価格の変動に対応しており、原資産価格が上昇すればｌが増加し、原資産価格が下降すればｌが減少する。２項モデルの各接点は、期間が経過（ｍが増加）する度に、原資産価格の上昇（ｌの増加）又は下降（ｌの減少）を表す２つの枝に分岐する。各ｍにおいて、両端（ｌが最大及び最小）以外の接点では、１つ前のｍにおいて分岐した枝が結合している。このように、２項モデルは、期間の経過と共に接点から伸びる枝が分岐と結合とを繰り返し、ひし形の格子が連なった形となる。
【００４５】
図１３は、２項モデルでの原資産価格の計算を説明するための図である。２項モデルにおける接点の値の計算は、前進（ｍの増加する方向への計算）と後進（ｍの減少する方向への計算）とがあるが、本実施形態では、前進で計算する場合について説明する。図１３は、ｍ＝２の接点の値からｍ＝３の接点の値を計算する場合のイメージを示している。
図１３に示す例では、接点Ａの値から接点（１）の値が算出され、接点Ａ及びＢの値から接点（２）の値が算出され、接点Ｂ及びＣの値から接点（３）の値が算出され、接点Ｃの値から接点（４）の値が算出される。なお、図１３に示す通り、接点Ａ、Ｂ、及びＣの座標は、それぞれ、（２，２）、（２，０）、及び（２，−２）であり、接点（１）、（２）、（３）、及び（４）の座標は、それぞれ、（３，３）、（３，１）、（３，−１）、及び（３，−３）である。
【００４６】
図１４は、２項モデルの接点の値を求める式の一例を示す図である。図１４に示す例では、Ｖ（ｍ，ｌ）は座標（ｍ，ｌ）における接点の値であり、接点の値が関数ｆによって求められることを示している。この関数ｆは、株価や為替や金利等オプション取引の対象等によって異なる。
例えば、図１３に示す接点（２）の値は、接点Ａ及びＢの値を引数として、Ｖ（３，１）＝ｆ（Ｖ（２，２），Ｖ（２，０））によって算出される。また、接点（３）の値は、接点Ｂ及びＣの値を引数として、Ｖ（３，−１）＝ｆ（Ｖ（２，０），Ｖ（２，−２））によって算出される。この関数ｆは、ｍ＝２における接点の値からｍ＝３における接点の値を算出する場合だけでなく、他のｍにおける接点の値を算出する場合にも同様にして用いられる。つまり、２項モデルの接点の値を算出する場合、関数ｆによって表される同種類の計算が繰り返し行われることになる。
【００４７】
一般的に、オプション価格の算出に２項モデルを適用した場合、ｍが１００以上となる場合が少なくないため、計算対象の接点の数も非常に多くなる。そのため、高速に全ての接点の値を算出するために、例えば、ＳＩＭＤ機能等、同種の計算を並列化して実行するベクトル演算の機能を利用することが考えられる。関数ｆによる計算は、非線形の計算となる場合もあり、１つずつ接点の値を計算した場合、長時間を要することになるが、非線形の計算に対応しているＳＩＭＤ機能を備えたＣＰＵもあり、ＳＩＭＤ機能を利用して計算を並列化することができれば、高速に全ての接点の値を算出することができる。
しかしながら、図１３において、関数ｆによって値を算出することができない接点がある。図１４に示す通り、関数ｆは、２つの引数から接点の値を算出する。これに対して、接点（１）の値は接点Ａの値のみから算出され、接点（４）の値は接点Ｃの値のみから算出される。このため、接点（１）及び接点（４）の値については、引数が２つの関数ｆによって算出することができず、関数ｆとは異なる計算によって算出する必要がある。つまり、２項モデルでは、通常、接点の値の計算は、必ずしも関数ｆによる同種の計算だけではないため、ＳＩＭＤ機能を利用して接点の値の計算を並列化することができず、計算に長時間を要するという問題が生じる。
これに対して、本実施形態によれば、以下に説明する構成とすることによって、２項モデル等の格子法における接点の値を計算する場合に、ＳＩＭＤ機能を利用して計算を並列化すること（即ち、ベクトル演算）を可能にし、高速に全ての接点の値を算出することができる。
【００４８】
（実施形態３の計算装置の機能構成）
図１５は、実施形態３の計算装置１５０の機能構成を示す図である。計算装置１５０は、図１５に示されるように、ベクトル決定部１５１とベクトル演算部１５２とを備えている。計算装置１５０は、ｍ＝ｎにおける接点の値を計算する場合、ｍ＝ｎ−１においてダミーの接点を追加することによって、ＳＩＭＤ機能によるベクトル演算を可能にする。ダミーの接点の追加について説明すれば以下の通りである。
【００４９】
図１６は、ダミーの接点を追加するイメージを示す図である。図１６は、ｍ＝２の接点の値からｍ＝３の接点の値を計算する場合にダミーの接点を追加するイメージを示している。図１６に示す例では、図１３に示す接点に加えて、ダミーの接点Ｄ１及びＤ２が追加されている。接点Ｄ１及び接点Ｄ２を追加することによって、接点Ｄ１及びＡの値から接点（１）の値が算出され、接点Ｄ２及び接点Ｃの値から接点（４）の値が算出される。以下では、ダミーの接点Ｄ１及びＤ２の値をｄと表す。なお、Ｄ１及びＤ２の座標は、それぞれ（２，４）及び（２，−４）に対応している。
例えば、図１６に示す接点（１）の値は、接点Ｄ１及びＡの値を引数として、Ｖ（３，３）＝ｆ（ｄ，Ｖ（２，２））によって算出される。また、接点（３）の値は、接点Ｃ及びＤ２の値を引数として、Ｖ（３，−３）＝ｆ（Ｖ（２，−２），ｄ）によって算出される。
このようなダミーの接点を追加することにより、接点（１）〜（４）の何れの値についても、関数ｆによって算出することができるため、計算を並列化し、ベクトル演算によって算出することが可能となる。以下では、計算装置１５０の各部の動作について、より具体的に説明する。
２項モデルでは、ｍ＝ｎにおける接点の数はｎ＋１個であり、ｍ＝ｎにおける接点の値は、ｍ＝ｎ−１の接点の値を用いて算出される。ベクトル決定部１５１は、ｍ＝ｎの接点の値を計算する場合、ｍ＝ｎ−１の接点の値に、ダミーの接点のデータを追加することによって、ベクトル演算に用いるベクトル要素データを決定する。
【００５０】
図１７は、ベクトル演算を説明する図である。図１７Ａは、ベクトル演算の対象となるｎ個の計算を示す図である。図１７Ａでは、ｚ（１）〜ｚ（ｎ）の各値が、それぞれ、ｆ（ｘ（１），ｙ（１））〜ｆ（ｘ（ｎ），ｙ（ｎ））によって算出される例を示している。ＳＩＭＤ機能を利用することで、これら複数の計算を１クロックで実行することが可能となる。なお、１クロックで実行可能な並列計算の最大数は計算装置ごとに予め決まっており、ｎがこの最大数を超える場合には、最大数の単位に計算式が分割された上で、ベクトル演算が実行される。
図１７Ｂは、ベクトル演算のイメージを示す図である。本実施形態では、図１７Ｂに示す通り、ｎ個の計算式についてベクトル演算を実行する場合、ＳＩＭＤ機能を利用するために、引数としてｘ（ｉ）とｙ（ｉ）（ｉ＝１，・・・，ｎ）との２つのベクトル（配列データ）を用意する。
【００５１】
図１８は、２項モデルにおけるベクトル演算の具体的な例を示す図である。図１８では、ｍ＝３の接点の値を算出するために用いるベクトルを決定するイメージを示している。図１８Ａは、ｍ＝３の接点の値を算出するための式を示す図である。２項モデルでは、ｍ＝３の接点の数は４個であり、計算式も４つになる。図１８Ａに示す式は、図１４の式、即ち、Ｖ（ｍ，ｌ）＝ｆ（Ｖ（ｍ−１，ｌ＋１），Ｖ（ｍ−１，ｌ−１））に具体的な数値を代入したものである。ここで、ｍ＝２の接点は、例えば図１３に示すように、（２，−２）、（２，０）、（２，２）の３つであるため、図１８Ａに示す一番上の式に含まれるＶ（２，４）と一番下の式に含まれるＶ（２，−４）は値が存在しないことになる。
図１８Ｂは、ｍ＝３の接点の値を算出するベクトル演算のイメージを示す図である。本実施形態では、図１８Ｂに示す通り、ベクトル演算を実行する場合、ＳＩＭＤ機能を利用するために、引数として、ベクトル１とベクトル２との２つのベクトルを用意する必要がある。図１８に示すベクトル演算は、図１７に示すベクトル演算において、ｎ＝４の場合に対応する。つまり、ベクトル１の各要素がｘ（ｉ）（ｉ＝１〜４）に対応しており、ベクトル２の各要素がｙ（ｉ）（ｉ＝１〜４）に対応している。
【００５２】
ここで、本実施形態に係る計算装置１５０の動作について、ｍ＝３の接点の値を算出する場合を例に説明する。計算装置１５０では、ｍ＝３の接点の値を算出する場合、ベクトル決定部１５１が、図１８Ｂに示すベクトル１及びベクトル２を決定する。ベクトル決定部１５１は、ベクトル１を決定する際、図１７Ｂの配列データｘ（１）〜ｘ（４）に、それぞれ、Ｖ（２，４）、Ｖ（２，２）、Ｖ（２，０）、Ｖ（２，−２）を設定する必要があるが、Ｖ（２，４）は存在しないため、ｘ（１）には、替わりにダミーデータｄを設定する。
また、ベクトル決定部１５１は、ベクトル２を決定する際、図１７Ｂの配列データｙ（１）〜ｙ（４）に、それぞれ、Ｖ（２，２）、Ｖ（２，０）、Ｖ（２，−２）、Ｖ（２，−４）を設定する必要があるが、Ｖ（２，−４）は存在しないため、ｙ（４）には、替わりにダミーデータｄを設定する。
本実施形態では、ベクトル決定部１５１は、各ｍにおける接点の値を算出する場合、ｌが大きい座標の接点の値から順番に、図１７Ｂに示すベクトル演算の配列データｚ（ｉ）（ｉ＝１〜ｍ＋１）に対応づけて、ベクトル１及びベクトル２を決定する。例えば、ｍ＝３の場合、ベクトル決定部１５１は、ｚ（１）、ｚ（２）、ｚ（３）、ｚ（４）を、それぞれ、Ｖ（３，３）、Ｖ（３，１）、Ｖ（３，−１）、Ｖ（３，−３）に対応づけて、ベクトル１とベクトル２とを決定している。これは、ｍ＝３の場合に限定されない。つまり、このようにしてベクトル１及びベクトル２を決定する場合、例えば、ｍ＝ｎのときには、ｘ（１）及びｙ（ｎ＋１）に設定すべきデータが存在しないため、ベクトル決定部１５１は、常にｘ（１）及びｙ（ｎ＋１）にダミーデータｄを設定する。
ｘ（１）とｙ（ｎ＋１）にダミーデータを設定する点について、より詳細に説明すれば、以下の通りである。例えば、ｍ＝４の接点を算出する場合には、Ｖ（４，４）がｚ（１）に対応し、Ｖ（４，−４）がｚ（４）に対応することになる。図１４の式によれば、Ｖ（４，４）＝ｆ（Ｖ（３，５），Ｖ（３，３））の演算が必要となるが、Ｖ（３，５）は接点の値が存在しない。ここで、上述の通りＶ（４，４）がｚ（１）に対応していることを考えれば、Ｖ（３，５）はｘ（１）に対応することになる。
【００５３】
つまり、ｘ（１）に設定するべきデータが存在しないため、ベクトル決定部１５１は、ｘ（１）にダミーデータを設定する。また、図１４の式によれば、Ｖ（４，−４）＝ｆ（Ｖ（３，−３），Ｖ（３，−５））の演算が必要となるが、Ｖ（３，−５）は接点の値が存在しない。ここで、上述の通りＶ（４，−４）がｚ（４）に対応していることを考えれば、Ｖ（３，−５）はｙ（５）に対応することになる。つまり、ｙ（５）（＝ｙ（ｎ＋１））に代入するべきデータが存在しないため、ベクトル決定部１５１はｙ（ｎ＋１）にダミーデータを設定する。
なお、ベクトル決定部１５１は、ベクトル要素のうち、ダミーデータを設定するベクトル要素を固定した構成、即ち、常にｘ（１）及びｙ（ｎ＋１）に対してダミーデータを設定する構成に限定されない。例えば、ベクトル決定部１５１は、全ての座標（ｍ，ｌ）に対応して、配列データＶ（ｍ，ｌ）が用意されている構成の場合、接点の値が存在しない座標の配列要素には、接点の値が存在しないことを表すデータ（例えばＮＵＬＬ等）を格納していき、ベクトルデータを決定するときに、接点の値が存在するか否かを判定し、接点の値が存在しない場合にダミーデータを設定する構成であってもよい。
更に、ベクトル決定部１５１は、ベクトル１及びベクトル２の配列データを、ベクトル演算部１５２に供給する。ｍ＝３の接点の値を算出する場合、ベクトル演算部１５２は、ベクトル１及びベクトル２の配列データを受けとると、図１８Ｂに示すベクトル演算を行い、Ｖ（３，３）、Ｖ（３，１）、Ｖ（３，−１）、Ｖ（３，−３）の各値を１クロックで同時に算出する。
【００５４】
図１９は、関数ｆの一例を示す図である。また、図２０は、図１９に示す関数ｆの場合における図１８Ｂのより具体的な演算の一例を示す図である。図２０において、「×」はベクトル要素毎の掛け算を表すものとする。ここで、Ｐｄｏｗｎ（ｍ，ｌ）は１つ前の接点から（ｍ，ｌ）の接点に下降してくる確率であり、Ｐｕｐ（ｍ，ｌ）は１つ前の接点から（ｍ，ｌ）の接点に上昇してくる確率である。これらの値は、接点ごとに予めに設定され、記憶部に記憶されている。ベクトル演算部１５２は、（ｍ，ｌ）における接点の値を算出するためのベクトル演算を行う場合、各接点の値に対応するＰｄｏｗｎ（ｍ，ｌ）及びＰｕｐ（ｍ，ｌ）を記憶装置から読み出し、読み出したＰｄｏｗｎ（ｍ，ｌ）及びＰｕｐ（ｍ，ｌ）とベクトル決定部１５１からのベクトル１及びベクトル２とを用いて、図２０に示す演算を実行する。
また、図２０に示すｄ1及びｄ2について説明する。ｄ1は、ダミーの接点の値であり、上述したダミーデータｄを表している。また、ｄ2については以下に説明する。本実施形態では、図示しない計算手段がＰｕｐ（ｍ，ｌ）及びＰｄｏｗｎ（ｍ，ｌ）を予め算出して記憶部に記憶する。Ｐｕｐ及びＰｄｏｗｎは、ある接点へ前の接点から推移する確率であり、ｍ及びｌを引数とした関数によって計算されるが、例えばＰｄｏｗｎ（３，３）やＰｕｐ（３，−３）等は、存在しない接点から推移してくる確率となるため、計算手段は、ダミーデータとしてｄ2（具体的には０）を設定する。
【００５５】
しかしながら、これは、一実施の形態であって、接点の値を算出する関数ｆは図１９に示す式に限定されない。本実施形態は、あくまで、ｍ−１における接点の値からＶ（ｍ，ｌ）の接点の値を算出する場合に、ｍ−１における接点のうち、値の存在しない接点に対してダミーデータを設定して、Ｖ（ｍ，ｌ）の接点の値を算出する点に特徴を有している。例えば２項モデルにおいては、Ｖ（ｍ，ｌ）の接点の値を算出する場合に、接点の値が存在しないＶ（ｍ−１，ｌ＋１），Ｖ（ｍ−１，ｌ−１）に対してダミーのデータを設定し、Ｖ（ｍ，ｌ）の接点の値を算出する点に特徴を有している。つまり、接点の値を算出する関数ｆは図１９に示す式に限定されないため、ダミーデータｄ2を設定する構成は必須でない。
なお、本実施形態では、ダミーデータｄ1及びｄ2には「０」を設定するが、ダミーデータの値は「０」に限らず、関数ｆにおける計算結果に影響を及ぼさないデータであればよい。
【００５６】
また、本実施形態では、ＳＩＭＤ機能を利用するためにベクトルを決定する処理について、２項モデルを例に説明したが、３項モデルにおいても、同様の処理によって、ベクトルを決定することができる。即ち、３項モデルにおいて、ベクトル決定部１５１は、図７Ｃに示す３つのベクトルを決定するが、図４に示す式を適用してＶ（ｍ，ｌ）の接点の値を算出する場合に、接点の値が存在しないＶ（ｍ−１，ｌ＋１）、Ｖ（ｍ−１，ｌ）、Ｖ（ｍ−１，ｌ−１）に対しては、ダミーデータを設定する。つまり、３項格子では、ｍ＝ｎにおける接点の数は２ｎ＋１であり、それら２ｎ＋１の接点の値を算出する場合、ｍ＝ｎ−１において、値が算出されている接点の数は２ｎ−１であるため、接点の上端から１、２、２ｎ、２ｎ＋１番目にダミーの接点を追加する必要がある。
なお、ダミーデータを設定する場合、常にダミーデータを設定するベクトル要素を固定した構成であってもよいし、全ての座標に対応して配列データを用意しておき、毎回、接点の値が存在するか否かを判定する構成であってもよい。
【００５７】
また、本実施形態では、２項モデルにおいて、ダミーの接点を追加して算出する構成について説明したが、３項モデルを例に説明した通り、２項モデルにおいても、ベクトル演算によって接点の値を算出する範囲を決定する構成とすることもできる。この場合、決定した範囲内の接点についてのみ、ＳＩＭＤ機能を利用したベクトル演算によって接点の値を算出する。そして、２項モデルの場合には、ｍごとに接点の値を算出する場合、各ｍにおける両端（ｌの最大値及び最小値）の２つの接点を除いたｍ−１個の接点についてのみ、ＳＩＭＤ機能を用いたベクトル演算の対象とする。即ち、ベクトル決定部１５１は、各ｍにおける両端（ｌの最大値及び最小値）の２つの接点を除いたｍ−１個の接点についてのみ、図１４に示す式の計算を、図１７Ｂに示すようなベクトル演算によって算出するためのベクトルを決定する。なお、３項モデルの場合には、各ｍにおける両端から２つずつ（ｌの最大値、最大値−１、最小値＋１、及び最小値）の４つの接点を除いた２ｍ−３個の接点についてのみ、ＳＩＭＤ機能を用いたベクトル演算の対象とし、図４に示す式の計算をベクトル演算によって算出するためのベクトルを決定することになる。
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【００５８】
１６  ＲＡＭ
１７  ＣＰＵ
【図１】
2010272107.tif 000003
【図２】
2010272107.tif 000004
【図３】
2010272107.tif 000005
【図４】
2010272107.tif 000006
【図５】
2010272107.tif 000007
【図６】
2010272107.tif 000008
【図７Ａ】
2010272107.tif 000009
【図７Ｂ】
2010272107.tif 000010
【図７Ｃ】
2010272107.tif 000011
【図７Ｄ】
2010272107.tif 000012
【図７Ｅ】
2010272107.tif 000013
【図８】
2010272107.tif 000014
【図９】
2010272107.tif 000015
【図１０Ａ】
2010272107.tif 000016
【図１０Ｂ】
2010272107.tif 000017
【図１０Ｃ】
2010272107.tif 000018
【図１１】
2010272107.tif 000019
【図１２】
2010272107.tif 000020
【図１３】
2010272107.tif 000021
【図１４】
2010272107.tif 000022
【図１５】
2010272107.tif 000023
【図１６】
2010272107.tif 000024
【図１７Ａ】
2010272107.tif 000025
【図１７Ｂ】
2010272107.tif 000026
【図１８Ａ】
2010272107.tif 000027
【図１８Ｂ】
2010272107.tif 000028
【図１９】
2010272107.tif 000029
【図２０】
2010272107.tif 000030