説明

並列資源探索方法及び装置及びプログラム

【課題】 マルチコアCPUの機能を活かして、始点から終点までの全経路を計算する。
【解決手段】 本発明は、少なくとも始点及び終点を含む要求条件を取得して要求記憶手段に格納し、始点を基点として、該始点から基点枝までの経路を経路記憶手段に追記し、始点から該基点枝までの経路の中で終点に向かう未選択の経路の点を、ネットワーク構成、該ネットワークの各ノードの情報を格納したネットワーク情報記憶手段から選択し、選択した経路の点の枝の数だけスレッドを生成して、該始点から生成したスレッドまでの点の経路を経路記憶手段に追記し、新しい枝が見つかった場合は、それまでのスレッドを停止し、停止した経路を該経路記憶手段から削除する処理を終点まで繰り返す。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、並列資源探索方法及び装置及びプログラムに係り、特に、マルチコアCPUを用いて始点から終点に至る経路探索技術における並列資源探索方法及び装置及びプログラムに関する。
【背景技術】
【0002】
経路探索方法として、ダイクストラ法に代表される動的な経路探索法と、整数計画法に代表される静的な経路探索法がある。
【0003】
動的な経路探索の大半は、始点から終点の計算途中において、始点から計算途中の最適な経路を一つに絞り込む特徴を有する。すなわち、最適とはならない経路候補は廃棄される、もしくは、その計算処理をペンディングされる。つまり、動的な経路探索は常に、始点から計算途中の一つだけの経路について計算しており、一つに絞るための選択ポリシーは探索開始時に決まっている。
【0004】
動的な経路探索は、主にユーザやオペレータからの需要に応じてサービスとそのためのサービス設備を素早く予約したり、提供したりするために利用される。それゆえ、サービス設備の利用量の最適性よりも提供処理の迅速性が重要であり、上記のアプローチで十分に満足されていた。すなわち、動的な経路探索において、始点から終点の全ての経路候補群を探索する必要性がなかった(例えば、非特許文献1、2参照)。
【0005】
なお、技術的には動的な経路探索を用いることにより、始点から終点の全ての経路候補群を探索することは可能である(例えば、特許文献1参照)。
【0006】
また、始点から終点の全ての経路候補群を求めた場合、全ての経路候補群の中から、ある選択ポリシーに基づいて最適な経路候補を探索することは可能である。特に、選択ポリシーが以下のような複数の条件から構成される場合、上記のように全ての経路候補を求めることが必要である。
【0007】
・条件の例1:始点から終点までの利用可能な帯域幅/量;
・条件の例2:始点から終点までの伝搬遅延時間;
・条件の例3:経路の利用可能な時間帯;
上記のような場合の方が、始点から終点間の経路の全体的な最適化に適する。しかし、ネットワークにおける全体的な経路の最適化の手法は、主に静的な経路探索(=整数計画問題)によって実行されてきた。静的な経路探索はネットワーク規模に応じて数日に及ぶ膨大な計算時間を要するため、数か月先や数年先のネットワーク構成像の事前設計などに利用される。
【0008】
昨今、CPUについては、シングルコアCPUからマルチコアCPUにCPU構成が変わってきている。静的な経路探索には、マルチコアCPUの機能を活かしたマルチスレッド経路探索方法が提案されており、既にそれらを実装したソフトウェアが販売されている。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2008−301225号公報
【非特許文献】
【0010】
【非特許文献1】藤澤克樹、宮元裕一郎、久保幹雄「最短経路問題」社団法人日本オペレーションズ・リサーチ学会、オペレーションズ・リサーチ11月号Vol.54 No.11, pp. 696-699, 2009/11/01.
【非特許文献2】安井雄一郎、藤澤克樹、笹島啓史、後藤和茂、宮元裕一郎、「大規模最短路問題に対するダイクストラ法の高速化」日本オペレーションズ・リサーチ学会、秋季研究発表会アブストラクト集 2008、pp.314-315, 2009-09-10.
【発明の概要】
【発明が解決しようとする課題】
【0011】
ユーザからの需要に応じてサービスとそのためのサービス設備を予約したり、提供したりするサービスの観点において、上記のように、動的な経路探索を用い、マルチコアCPUの機能を活かしたマルチスレッド経路探索方法は提案されていない。また、静的な経路探索法はそもそもそのようなサービスに適していない。
【0012】
本発明は、上記の点に鑑みなされたもので、マルチコアCPUの機能を活かして、始点から終点までの全経路から最適な経路を迅速に計算することが可能な並列資源探索方法及び装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0013】
上記の課題を解決するために、本発明(請求項1)は、マルチコアCPUを用いて始点から終点までの全経路を計算する並列資源探索装置であって、
ネットワーク構成、該ネットワークの各ノードの情報を格納したネットワーク情報記憶手段と、
ユーザ端末から少なくとも始点及び終点を含む要求条件を取得して要求記憶手段に格納する要求受信手段と、
前記始点から前記終点までの経路を計算するためのスレッドを生成するスレッド生成手段と、
前記要求条件の始点を最初の中継点候補(基点)とし、経路記憶手段に格納する手段と、
前記始点から前記終点に向かう前記基点に隣接する中継点候補までの枝(基点枝)の数だけ前記スレッドを生成し、該中継点候補までの経路を該経路記憶手段に追記し、新たな基点枝がある場合は、該中継点候補までのスレッドを停止し、停止した経路を利用停止として該経路記憶手段を更新する処理を前記終点まで繰り返す探索手段と、
を有する。
【0014】
また、本発明(請求項2)は、経路上の隣接点を格納した隣接点記憶手段を更に有し、
前記探索手段は、
前記隣接点記憶手段を参照して、隣接点毎に逐次新しいスレッドを生成する手段を含む。
【0015】
また、本発明(請求項3)は、経路上の隣接点を格納した隣接点記憶手段と、
予め空きスレッドを格納するスレッドプールと、を更に有し、
前記探索手段は、
前記スレッドプールの空きスレッドの数に応じて、前記隣接点記憶手段を参照して、隣接点毎に空きスレッドからひとつを割り当てる手段を含む。
【0016】
また、本発明(請求項4)は、利用可能な資源情報を格納した利用可能資源情報記憶手段を更に有し、
前記探索手段は、
前記ネットワーク情報記憶手段及び前記利用可能資源情報記憶手段を参照して、生成された前記スレッドが所定の制約条件を満たすかを判定し、満たす場合のみ前記始点から生成したスレッドまでの点の経路を前記経路記憶手段に格納する手段を含む。
【0017】
本発明(請求項5)は、マルチコアCPUを用いて始点から終点までの全経路を計算する並列資源探索方法であって、
要求受信手段が、ユーザ端末から少なくとも始点及び終点を含む要求条件を取得して要求記憶手段に格納する要求受信ステップと、
探索手段が、前記要求条件の始点を最初の中継点候補(基点)とし、経路記憶手段に格納し、
前記始点から前記終点に向かう前記基点に隣接する中継点候補までの枝(基点枝)の数だけ、前記始点から前記終点までの経路を計算するためのスレッドを生成し、該中継点候補までの経路を該経路記憶手段に追記し、新たな基点枝がある場合は、該中継点候補までのスレッドを停止し、停止した経路を利用停止として該経路記憶手段を更新する処理を前記終点まで繰り返す探索ステップと、を行う。
【0018】
また、本発明(請求項6)は、前記探索ステップにおいて、
経路上の隣接点を格納した隣接点記憶手段を参照して、隣接点毎に逐次新しいスレッドを生成する。
【0019】
また、本発明(請求項7)は、前記探索ステップにおいて、
予め空きスレッドが格納されているスレッドプールの空きスレッドの数に応じて、経路上の隣接点を格納した隣接点記憶手段を参照して、隣接点毎に空きスレッドからひとつを割り当てる。
【0020】
また、本発明(請求項8)は、前記探索ステップにおいて、
前記ネットワーク情報記憶手段及び利用可能な資源情報を格納した利用可能資源情報記憶手段を参照して、生成された前記スレッドが所定の制約条件を満たすかを判定し、満たす場合のみ前記始点から生成したスレッドまでの点の経路を前記経路記憶手段に格納する。
【0021】
本発明(請求項9)は、請求項1乃至4のいずれか1項に記載の並列資源探索装置を構成する各手段としてコンピュータを機能させるためのプログラムである。
【発明の効果】
【0022】
上述のように、本発明では、マルチコアCPUを用いるネットワークにおいて、始点から終点の全経路探索に対し、マルチスレッド技術を適用することにより経路探索の高速化が可能である。
【図面の簡単な説明】
【0023】
【図1】本発明の第1の実施の形態における並列資源探索装置の構成図である。
【図2】本発明の第1の実施の形態における経路探索部内部のスレッドの状況である。
【図3】本発明の第1の実施の形態におけるスレッドの生成による経路探索を示す図である。
【図4】本発明の第1の実施の形態における要求データベースの一例である。
【図5】本発明の第1の実施の形態におけるデータ管理DBの構成図である。
【図6】本発明の第1の実施の形態における隣接行列の一例である。
【図7】本発明の第1の実施の形態における経路DBの遷移例である。
【図8】本発明の第1の実施の形態における岐路探索処理のフローチャートである。
【図9】本発明の第1の実施の形態におけるスレッド割当の例である。
【図10】本発明の第1の実施の形態における経路DBの内容例と同DB上の処理の一例である。
【図11】本発明の第1の実施の形態におけるスレッド割当のシーケンスチャート(その1)である。
【図12】本発明の第1の実施の形態におけるスレッド割当のシーケンスチャート(その2)である。
【図13】本発明の第2の実施の形態におけるスレッド起動及び生成を説明するための図である。
【図14】本発明の第2の実施の形態におけるスレッド割当処理のフローチャートである。
【発明を実施するための形態】
【0024】
以下図面と共に、本発明の実施の形態を説明する。
【0025】
[第1の実施の形態]
本発明は、資源探索装置において、ネットワーク上のノード間の伝送メディアの最小物理単位に点を配置し、これらの隣接する点を接続する経路について、始点から終点までの経路を計算するスレッドを生成して起動させ、始点から終点に向かい新しい枝を発見したら、それまで立ち上げたスレッドを停止して、その地点から終点までの経路を計算するスレッドを枝の数だけ立ち上げることにより、マルチスコアCPUの機能を使い切るように経路を計算するものである。
【0026】
図1は、本発明の第1の実施の形態における並列資源探索装置の構成を示す。
【0027】
同図に示す並列資源探索装置は、ユーザ要求受信部10、経路探索部20、スレッド数管理部30、利用可能管理部40、リミテーションチェック部50、要求DB60、経路DB70,データ管理DB80から構成される。
【0028】
ユーザ要求受信部10は、始点や終点などの情報を含む要求条件を受信して要求DB60に格納する。
【0029】
経路探索部20は、要求DB60から要求を読み出して、始点と終点が一致する場合には、探索を完了させ、一致しない場合には、始点を基点枝として始点から基点枝までの経路を経路DB70に格納する。経路探索部20は、内部(メモリ)に図2に示すようなスレッドを管理する。図2に示すように、各スレッドは、経路チェック、コストチェックを行うためのチェック手段を有する。経路探索部20は、図3(a)に示すように、始点から終点までの全経路をマルチコアCPUの性能を使い切るように、新しい枝の発見地点から、順に終点までの経路を計算する新しいスレッドを生成する。例えば、始点からノード"2"にスレッド"1"が生成され、始点からノード"5"にスレッド"4"が新たに生成される。ノード"2"からノード"3"に対するスレッド"2"、ノード"4"に対するスレッド"3"、また、ノード"5"からノード"2"に対するスレッド"6"、ノード"5"からノード"6"に対するスレッド"5"がそれぞれ新たに生成される。そして、図3(b)に示すように、始点から終点に向かってあるノードで新しいノードが見つかった場合はそれまでのスレッドは停止し、停止したことを示す情報(フラグ)で経路DB70を更新し、その地点のノードから終点までの経路をスレッドの枝の数だけ起動させることで全経路を計算する。
【0030】
スレッド数管理部30は、経路探索部20からスレッド数を取得してデータ管理DB80に格納する。
【0031】
利用可能管理部40は、経路探索部20で探索された経路の資源が利用可能であるかをデータ管理DB80を参照し、利用可能時間帯、利用可能な容量等を判断する。具体的には、特開2008−301225号公報に開示されている方法等を用いることが可能である。
【0032】
リミテーションチェック部50は、経路DB70から経路リストを読み込み、所定の条件に基づいて、経路を整理する。具体的には、特開2008−301225公報に開示されている方法等を用いることが可能である。
【0033】
要求DB60は、ユーザ要求受信部10で受信した要求について、図4に示すように、受信時刻、通信路始点、通信路終点、開始時刻、終了時刻、通信容量、料金、優先度等のデータを格納する。
【0034】
データ管理DB80は、図5に示すように、ネットワーク構成リスト81、利用可能資源リスト82,接続行列83を格納する。
【0035】
ネットワーク構成リスト81は、点の識別情報、点のID,IPD(IPアドレス、Ifindex、TDMスロット番号)、インタフェースのメディアタイプ、インタフェースの利用可能なSwitching Capability、インタフェースの物理容量、利用可能ラベル、ノードID,ノード種別等からなる。
【0036】
利用可能資源リスト82は、点の識別情報、点のID、PID、メディア、利用可能なSwitching Capability、物理容量、利用可能ラベル、ノードID、ノード種別、時間の区切り情報(時刻+利用可能容量+時刻)を含む。
【0037】
接続行列83は、ネットワーク上のノード間の伝送メディアの最小物理単位を点(1,2,3,…)として、ノード間接続・ノード内接続の可否を"0"(接続不可)、"1"(接続可)で表した表であり、各最小物理単位の1つのマスごとに図6に示す情報が格納される。接続行列の生成方法については、特開2008-301225号公報に開示されている技術を用いるものとする。
【0038】
経路DB70は、図7に示すように、探索の進行と共に利用済みかつ終点に到達していない経路は利用停止とする。図7において、例えば、「始点→枝i→基点枝k」を評価枝と呼び、これらの集合を評価枝リストと呼ぶ。
【0039】
次に、経路探索の処理について説明する。
【0040】
図8は、本発明の第1の実施の形態における経路探索処理のフローチャートである。
【0041】
ステップ101) 要求受信部10が要求を受信すると、当該要求の要求条件を要求DB60に格納する。経路探索部20は、要求DB60から要求条件を読み出し、通信路始点と通信路終点が一致する場合には、探索を終了する。一致しない場合はステップ102に移行する。
【0042】
ステップ102) 経路探索部20は、通信路始点≠通信路終点である場合は、始点を基点として通信路の始点から基点枝までの経路を経路DB70に追記する。
【0043】
ステップ103) 経路探索部20は、経路DB70から始点から基点枝までの経路の中で未選択の経路を一つ選択する。
【0044】
ステップ104) 経路探索部20は、始点から基点枝までの経路毎に次の評価対象となるノードからの評価枝を探索するためにスレッドを割り当てる。当該処理は評価枝がなくなるまで繰り返す。スレッド数管理部30は、内部のスレッド数メモリ(図示せず)のスレッド数を加算する。スレッド割当のイメージを図9に示す。
【0045】
ステップ105) 経路探索部20は、データ管理DB80の隣接行列83を参照して、基点枝から隣接している評価枝を探索する。隣接する評価枝が無い場合はステップ111に移行し、評価枝がある場合は、始点から基点枝までの経路別に評価枝を経路DB70の評価枝リストに格納する。
【0046】
ステップ106) ステップ105において評価枝がある場合は、経路探索部20は、経路DB70の評価枝リストから未選択の評価枝を一つ選択する。選択する評価枝が無い場合は、ステップ111に移行する。このとき、選択された評価枝については、経路DB70の評価枝リストに選択済みを表すフラグを設定するものとする。
【0047】
ステップ107) ステップ106において、評価枝が選択された場合は、経路探索部20は、基点枝を基準として評価枝毎に評価枝の制約条件の合否を確認・評価するためのスレッドを割り当てる。スレッド数管理部30は、内部のスレッド数メモリ(図示せず)のスレッド数を加算する。
【0048】
ステップ108) 経路探索部20は、データ管理DB80のネットワーク構成リスト81、利用可能資源リスト82を参照して所定の制約条件を満たすかを判定し、条件を満足しない場合はステップ110に移行し、満足する場合はステップ109に移行する。
【0049】
ステップ109) 経路探索部20は、始点からステップ106で選択された評価枝までの経路を経路DB70に追加する。
【0050】
ステップ110) 経路探索部20は、ステップ107で割り当てられたスレッドを開放し、スレッド数管理部30は、スレッド数メモリのスレッド数をクリアする。ステップ106に移行する。
【0051】
ステップ111) ステップ106において、未選択の評価枝が無い場合は、始点から当該基点枝までの経路について、探索が重複しないように、利用停止として経路DB70の探索済みのため利用停止フラグに「1」を設定する。
【0052】
ステップ112) 経路探索部20は、それまで設定されていたスレッドを開放し、スレッド数管理部30は、スレッド数メモリのスレッド数をクリアする。
【0053】
ステップ113) 経路探索部20は、経路DB70を参照して、始点から基点枝までの経路の中で基点枝が終点と異なっている経路(基点枝≠終点)があるかを判定し、経路がある場合はステップ103に移行する。一方、経路が無い場合はステップ114に移行する。
【0054】
ステップ114) 経路探索部20は、経路DB70を参照して、基点枝が終点である経路があるかを判定し、ある場合には、「経路あり」を出力して探索を終了し、無い場合は「経路なし」(探索失敗)として探索を終了する。
【0055】
なお、上記のフローチャートでは、ステップ104において、始点から基点枝までの経路毎に次の評価枝を探索するためのスレッドを割り当て、さらに、ステップ107において、基点枝を基点として評価枝毎に評価枝の制約条件の合否を確認・評価するためにスレッドを割り当てているが、ステップ104または、制約条件の判定を含めたスレッドの割当を行うステップ107のいずれか1つの処理を行うようにしてもよい。
【0056】
図10は、本発明の一実施の形態における経路DBの内容例と同DB上での処理の一例である。
【0057】
第1ステップ) 最初に始点(ソース)を経路DB70に設定し、経路探索途中で図9(a)に示す経路探索データを経路DB70に格納する。
【0058】
第2ステップ) データ管理DB80の接続行列83を参照し、「通過点1」を中心に隣接している点を全て探索し、図10(b)の探索データを経路DB70に格納する。このとき、探索済みとなった図10(a)の2つの「通過点1」については、図10(b)に示すように利用停止とし、利用停止フラグを「1」とする。
【0059】
第3ステップ) 次に、データ管理DB80の隣接行列83を参照し、図10(c)に示す経路探索データを経路DB70に格納する。このとき、図10(b)において利用停止となった「通過点1」に加え、2つの「通過点2」、1つの「通過点3」についても、図10(c)に示すように探索済みのため利用停止とし、利用停止フラグを「1」とする。
【0060】
第4ステップ) 次に、始点から終点だけが残るまで経路探索を繰り返し、図10(d)に示す経路探索データを経路リストとし、経路DB70に格納する。
【0061】
次に、図8のステップ104及びステップ107におけるスレッドを割り当てる際の動作を説明する。
【0062】
図11、図12は、本発明の一実施の形態におけるスレッド割当のシーケンスチャートである。
【0063】
ステップ201) 要求受信部10が探索開始処理の要求を受け取ると、当該要求を要求DB60に格納したことを経路探索部20に通知する。
【0064】
ステップ202) 経路探索部20は、受信した要求について、始点と終点が同一かを判定し、同一である場合は探索処理を終了する。
【0065】
ステップ203) 経路探索部20は、始点を中継点として経路DB70に設定すると共に、当該中継点が選択済みであることを示すフラグをたてる。
【0066】
ステップ204) 経路探索部20は、データ管理DB80の接続行列83を参照し、隣接点を探索する。
【0067】
ステップ205) 接続行列83を参照することにより隣接点がある場合はステップ206に移行し、隣接点が無い場合はステップ209に移行する。
【0068】
ステップ206) 経路探索部20は、隣接点を中継点候補として経路DB70を更新する。
【0069】
ステップ207) 経路探索部20は、スレッド数管理部30に問い合わせ、その時点におけるスレッド数を取得する。
【0070】
ステップ208) 経路探索部20は、その時点で起動しているスレッド数が所定の数N未満であれば、スレッドを起動させ、スレッド数管理部30にスレッド数の更新を指示する。一方、起動しているスレッド数が所定数以上である場合は、経路チェック及びコストチェックを行う。
【0071】
上記のステップ204以降の処理を隣接点がなくなるまで繰り返す。
【0072】
ステップ209) 経路探索部20は、選択済みの中継点を選択済みとして選択済みのフラグを立てる。
【0073】
ステップ210) 経路探索部20は、経路DB70にスレッドが起動できなかった経路があるかを判定し、ある場合には、ステップ211に移行し、無い場合は、次の起動スレッドを待機する。
【0074】
ステップ211) 経路探索部20は、経路DB70から未選択の中継点を探索する。
【0075】
ステップ212) 未選択の中継点候補が見つかった場合は、ステップ213に移行し、ない場合には、起動スレッドの待ち合わせを行う。
【0076】
ステップ213) 未選択の中継点が見つかった場合は、要求DB60に終点を問い合わせる。
【0077】
ステップ214) 経路探索部20は、未選択、かつ、利用可能で終点以外の未選択の中継点があるかを判定し、無い場合は起動スレッドを待ち合わせ、ある場合はステップ215に移行する。
【0078】
ステップ215) ステップ214において、未選択の中継点がある場合は、未選択の中継点を選択し、選択した中継点を選択済みとして経路DB70を更新する。
【0079】
上記のステップ204からステップ215までの処理を経路状態が確定するまで繰り返す。
【0080】
ステップ216) 次に、利用可能管理部40は、経路探索部20内部の各経路探索スレッドについて、経路DB70及びデータ管理DB80の利用可能資源リスト82を参照し、チェック用の情報を取得し、設定された経路状態が利用可能であるかを判定する。判定の方法としては、例えば、特開2008-301225号公報に開示されている手法を用いるものとする。
【0081】
ステップ217) さらに、各経路探索スレッドについて、経路DB70、データ管理DB80のネットワーク構成リスト81及び利用可能資源リスト82を参照し、チェック用の情報を取得し、コストチェックを行う。判定の方法としては、例えば、特開2008-301225号公報に開示されている手法を用いるものとする。
【0082】
ステップ218) この時点で生成されている各スレッドのチェック手段において、データ管理DB80を参照して、所定の条件に基づいて、経路チェックとコストチェックを行い、双方チェックが充足している場合には、経路DB70にチェック結果を反映し、隣接点を中継点情報として更新する。充足していない場合には、チェック結果と、隣接点の利用を停止し、当該中継点候補に利用停止のフラグを付与して経路DB70を更新し、経路探索処理を終了する。ここで、経路チェックとは、例えば、時刻Xから時刻Yの間において、帯域Zが空いているか否かを確認する、といったチェックを指す。コストチェックは、コストチェックアルゴリズムを用いて、データ管理DB80を参照し、経路チェックとして条件を満足するか否かを確認し、満足する隣接点についてのコストチェックを行う。上記のチェックにおいて、コストチェックより経路チェックを優先させることで、演算処理が必要なコストチェックでは、チェック対象となる数が少なくて済み、演算時間が短縮される。
【0083】
ステップ219) 各経路探索スレッドにおいて、要求DB60を参照し、終点情報を取得して、中継点と終点が一致する場合には、当該探索を終了し、一致しない場合は、ステップ201に移行する。
【0084】
なお、上記の処理に加え、リミテーションチェック部50による処理を行い、最終的に予約を確定回路として出力するようにしてもよい。なお、リミテーションチェック部50の処理は、特開2008-301225号公報に開示されている技術を用いるものとする。
【0085】
[第2の実施の形態]
前述の第1の実施の形態では、隣接点毎に新しいスレッドを生成した(図8:ステップ105)。この方法は、予め所要スレッド数を予測できない計算には有効であるが、スレッド生成処理に時間がかかる。
【0086】
本実施の形態では、予めスレッドプールを用意しておき、隣接点ごとに新しいスレッドを割り当てる。なお、本実施の形態における装置構成は、第1の実施の形態と同様である。
【0087】
図12は、本発明の第2の実施の形態におけるスレッドの起動及び生成を説明するための図である。
【0088】
同図(a)に示すように、初期状態では、経路探索部20がスレッドプール内のN個のスレッドを管理し、セマフォが各スレッドの動きを停止する。なお、セマフォはN個のスレッドがあることを認識しているものとする。
【0089】
次に、同図(b)に示すように、経路探索部20がリクエストに応じてスレッドプール内の1個のスレッドを払い出す。このとき、セマフォは開放されているものとし、セマフォは残りN−1個のスレッドがあることを認識している。
【0090】
この時点でM個のスレッドをスレッドプールから払い出したものとすると、総計M+1個のスレッドを払い出したことになる。
【0091】
そして、同図(c)に示すように、利用終了した1個のスレッドがスレッドプールに返却されると、セマフォは残りN−M個のスレッドがあることを把握する。
【0092】
上記の処理のためにセマフォと経路探索部20は以下のような処理を行う。
【0093】
図13は、本発明の第2の実施の形態におけるスレッド割当処理のフローチャートである。
【0094】
まず、セマフォは、リクエストを取得すると、スレッドプールの空きスレッド数を確認し(ステップ301)、リクエストされた個数分の残りが無い場合は、スレッドの割当を保留し(ステップ302)、残りがある場合には、経路探索部20はリクエストで指定された分のスレッドを割り当てる(ステップ303)。
【0095】
なお、図1に示す並列資源探索装置の構成要素の第1の実施の形態及び第2の実施の形態に示した動作をプログラムとして構築し、並列資源探索装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【0096】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
【符号の説明】
【0097】
10 ユーザ要求受信部
20 経路探索部
30 スレッド数管理部
40 利用可能管理部
50 リミテーションチェック部
60 要求DB(データベース)
70 経路DB
80 データ管理部
81 ネットワーク構成リスト
82 利用可能資源リスト
83 接続行列

【特許請求の範囲】
【請求項1】
CPUの利用を時間的に分割した単位であるスレッドを複数用いることによって複数の計算処理を同時に並列実行できるマルチコアCPUを用い、始点から終点までの全経路を計算する並列資源探索装置であって、
ネットワーク構成、該ネットワークの各ノードの情報を格納したネットワーク情報記憶手段と、
ユーザ端末から少なくとも始点及び終点を含む要求条件を取得して要求記憶手段に格納する要求受信手段と、
前記始点から前記終点までの経路を計算するためのスレッドを生成するスレッド生成手段と、
前記要求条件の始点を最初の中継点候補(基点)とし、経路記憶手段に格納する手段と、
前記始点から前記終点に向かう前記基点に隣接する中継点候補までの枝(基点枝)の数だけ前記スレッドを生成し、該中継点候補までの経路を該経路記憶手段に追記し、新たな基点枝がある場合は、該中継点候補までのスレッドを停止し、停止した経路を利用停止として該経路記憶手段を更新する処理を前記終点まで繰り返す探索手段と、
を有することを特徴とする並列資源探索装置。
【請求項2】
経路上の隣接点を格納した隣接点記憶手段を更に有し、
前記探索手段は、
前記隣接点記憶手段を参照して、隣接点毎に逐次新しいスレッドを生成する手段を含む
請求項1記載の並列資源探索装置。
【請求項3】
経路上の隣接点を格納した隣接点記憶手段と、
予め空きスレッドを格納するスレッドプールと、を更に有し、
前記探索手段は、
前記スレッドプールの空きスレッドの数に応じて、前記隣接点記憶手段を参照して、隣接点毎に空きスレッドからひとつを割り当てる手段を含む
請求項1記載の並列資源探索装置。
【請求項4】
利用可能な資源情報を格納した利用可能資源情報記憶手段を更に有し、
前記探索手段は、
前記ネットワーク情報記憶手段及び前記利用可能資源情報記憶手段を参照して、生成された前記スレッドが所定の制約条件を満たすかを判定し、満たす場合のみ前記始点から生成したスレッドまでの点の経路を前記経路記憶手段に格納する手段を含む
請求項1記載の並列資源探索装置。
【請求項5】
マルチコアCPUを用いて始点から終点までの全経路を計算する並列資源探索方法であって、
要求受信手段が、ユーザ端末から少なくとも始点及び終点を含む要求条件を取得して要求記憶手段に格納する要求受信ステップと、
探索手段が、前記要求条件の始点を最初の中継点候補(基点)とし、経路記憶手段に格納し、
前記始点から前記終点に向かう前記基点に隣接する中継点候補までの枝(基点枝)の数だけ、前記始点から前記終点までの経路を計算するためのスレッドを生成し、該中継点候補までの経路を該経路記憶手段に追記し、新たな基点枝がある場合は、該中継点候補までのスレッドを停止し、停止した経路を利用停止として該経路記憶手段を更新する処理を前記終点まで繰り返す探索ステップと、
を行うことを特徴とする並列資源探索方法。
【請求項6】
前記探索ステップにおいて、
経路上の隣接点を格納した隣接点記憶手段を参照して、隣接点毎に逐次新しいスレッドを生成する
請求項5記載の並列資源探索方法。
【請求項7】
前記探索ステップにおいて、
予め空きスレッドが格納されているスレッドプールの空きスレッドの数に応じて、経路上の隣接点を格納した隣接点記憶手段を参照して、隣接点毎に空きスレッドからひとつを割り当てる請求項5記載の並列資源探索方法。
【請求項8】
前記探索ステップにおいて、
前記ネットワーク情報記憶手段及び利用可能な資源情報を格納した利用可能資源情報記憶手段を参照して、生成された前記スレッドが所定の制約条件を満たすかを判定し、満たす場合のみ前記始点から生成したスレッドまでの点の経路を前記経路記憶手段に格納する請求項5記載の並列資源探索方法。
【請求項9】
請求項1乃至4のいずれか1項に記載の並列資源探索装置を構成する各手段としてコンピュータを機能させるためのプログラム。

【図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


【公開番号】特開2012−142905(P2012−142905A)
【公開日】平成24年7月26日(2012.7.26)
【国際特許分類】
【出願番号】特願2011−1339(P2011−1339)
【出願日】平成23年1月6日(2011.1.6)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 平成22年8月25日 独立行政法人産業技術総合研究所主催の「科学技術振興調整費 先端融合領域イノベーション創出拠点の形成 第3回「光ネットワーク超低エネルギー化技術拠点」シンポジウム」において文書をもって発表
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 平成22年11月4日 社団法人電子情報通信学会発行の「電子情報通信学会技術研究報告 信学技報 Vol.110 No.269」に発表
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】