(57)【要約】      （修正有）【課題】探索処理実行中の厳密度の変更に伴って、変更された厳密度による探索処理に適したリソースに切り替える。【解決手段】計算装置上のリソースの切替制御装置であって、各リソースの状態を管理するリソース管理部と、探索処理における探索範囲の広さを示す厳密度と前記厳密度により探索処理を実行するのに適したリソースとの対応関係を示す所定の探索処理リソース情報を格納する探索処理リソース情報格納部と、前記探索処理リソース情報とリソースの状態とに基づき、設定された厳密度により前記探索処理を実行するのに適したリソースを選択し前記探索処理を実行する探索処理部と、その探索結果の探索精度を決定する探索精度決定部とを有し、前記決定された探索精度が設定された探索精度未満である場合、前記厳密度をより広い探索範囲に更新し、前記更新された厳密度により前記探索処理を実行するのに適したリソースを再選択し前記探索処理を実行する。【選択図】図２
2014229138.tif 000002
【特許請求の範囲】
【請求項１】
計算装置上のリソースの切替制御装置であって、
前記計算装置上の各リソースの状態を管理するリソース管理部と、
探索処理における探索範囲の広さを示す厳密度と前記厳密度により探索処理を実行するのに適した前記計算装置上のリソースとの対応関係を示す所定の探索処理リソース情報を格納する探索処理リソース情報格納部と、
前記探索処理リソース情報と前記リソース管理部から取得したリソースの状態とに基づき、設定された厳密度により前記探索処理を実行するのに適したリソースを選択し、前記選択したリソースを利用して前記探索処理を実行する探索処理部と、
前記探索処理の探索結果の探索精度を決定する探索精度決定部と、
を有し、
前記決定された探索精度が設定された探索精度未満である場合、前記探索処理部は、前記設定された厳密度をより広い探索範囲を示す厳密度に更新し、前記更新された厳密度により前記探索処理を実行するのに適したリソースを再選択し、前記再選択されたリソースを利用して前記探索処理を実行する切替制御装置。
【請求項２】
前記探索処理部は、前記決定された探索精度が前記設定された探索精度以上になるまで、前記厳密度を更新し続け、前記更新された厳密度により前記探索処理を実行するのに適したリソースを再選択し、前記再選択されたリソースを利用して前記探索処理を繰り返す、請求項１記載の切替制御装置。
【請求項３】
前記探索処理部は、前記探索処理リソース情報を参照して前記設定された厳密度に対応するリソースを特定し、前記リソース管理部から前記特定したリソースの使用状態を示す指標を取得し、前記取得した指標が所定の閾値未満である場合、前記特定されたリソースを利用して前記設定された厳密度により前記探索処理を実行する、請求項１又は２記載の切替制御装置。
【請求項４】
前記探索処理部は、前記取得した指標が前記閾値以上である場合、前記特定したリソース以外の前記計算装置上の他のリソースの使用状態を示す指標を前記リソース管理部から取得し、前記他のリソースから前記取得した指標が前記閾値未満であるリソースを選択し、前記選択されたリソースを利用して前記設定された厳密度により前記探索処理を実行する、請求項３記載の切替制御装置。
【請求項５】
前記探索範囲が広くなるに従って、前記厳密度は増加するよう規定され、
前記決定された探索精度が前記設定された探索精度未満である場合、前記探索処理部は、前記厳密度を所定量だけ増加することによって更新する、請求項１乃至４何れか一項記載の切替制御装置。
【請求項６】
前記探索処理は、画像探索処理であり、
前記リソースは、CPU (Central Processing Unit)とGPU (Graphics Processing Unit)とを含む、請求項１乃至５何れか一項記載の切替制御装置。
【請求項７】
計算装置上のリソースの切替制御装置により実行される切替制御方法であって、
探索処理における探索範囲の広さを示す厳密度と、前記探索処理の探索結果の探索精度とを設定するステップと、
前記厳密度と前記厳密度により探索処理を実行するのに適した前記計算装置上のリソースとの対応関係を示す所定の探索処理リソース情報と、前記リソースの状態とに基づき、前記設定された厳密度により前記探索処理を実行するのに適したリソースを選択するステップと、
前記選択したリソースを利用して前記探索処理を実行するステップと、
前記探索処理の探索結果の探索精度を決定するステップと、
前記決定された探索精度が設定された探索精度未満である場合、前記設定された厳密度をより広い探索範囲を示す厳密度に更新し、前記更新された厳密度により前記探索処理を実行するのに適したリソースを再選択するステップと、
前記再選択されたリソースを利用して前記探索処理を実行するステップと、
を有する切替制御方法。
【請求項８】
プロセッサに、
探索処理における探索範囲の広さを示す厳密度と、前記探索処理の探索結果の探索精度とを設定させ、
前記厳密度と前記厳密度により探索処理を実行するのに適した前記計算装置上のリソースとの対応関係を示す所定の探索処理リソース情報と、前記リソースの状態とに基づき、前記設定された厳密度により前記探索処理を実行するのに適したリソースを選択させ、
前記選択したリソースを利用して前記探索処理を実行させ、
前記探索処理の探索結果の探索精度を決定させ、
前記決定された探索精度が設定された探索精度未満である場合、前記設定された厳密度をより広い探索範囲を示す厳密度に更新させ、前記更新された厳密度により前記探索処理を実行するのに適したリソースを再選択させ、
前記再選択されたリソースを利用して前記探索処理を実行させる、
ためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算プラットフォーム上のリソース切替制御技術に関する。
【背景技術】
【０００２】
近年、各種情報処理分野において検索処理技術が利用されており、様々な分野に応じて検索の規模や検索対象の形態等も様々である。このような状況下において、検索処理を効率的に実行することが求められている。例えば、検索対象を検索空間全体から検索空間の一部に限定する等によって検索処理を効率化することが図られている。このように限定された検索範囲による検索結果は、全範囲検索の検索結果より検索精度は低下する一方、検索処理に係る時間を短縮させることが可能である。このため、高い検索精度が求められていない場合、このような検索範囲を限定した検索処理は迅速な処理を実現し、ユーザ満足度を向上させるものとなる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Sunil Arya, David M. Mount, Nathan S. Netanyahu, Ruth Silverman and Angela Y. Wu, "An Optimal Algorithm for Approximate Nearest Neighbor Searching in Fixed Dimensions"
【非特許文献２】Mayur Datar, Nicole Immorlica, Piotr Indyk and Vahab S. Mirrokni, "Locality-Sensitive Hashing Scheme Based on p-Stable Distributions"
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来、探索処理の実行に用いられるリソースは、探索処理プログラムの作成時点等で予め固定的に決められていた。このため、探索処理の途中でリソースを変更することは困難であった。この結果、探索処理実行中の探索範囲の広さ（厳密度）のパラメータ値の変化に応じた最適なリソースの再選択ができず、探索処理の高速化を阻む一因となっていた。
【０００５】
上記問題点に鑑み、本発明の１つの課題は、探索処理実行中の厳密度の変更に伴って、変更された厳密度による探索処理に適したリソースに切り替えるためのリソース切替制御技術を提供することである。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明の一態様は、計算装置上のリソースの切替制御装置であって、前記計算装置上の各リソースの状態を管理するリソース管理部と、探索処理における探索範囲の広さを示す厳密度と前記厳密度により探索処理を実行するのに適した前記計算装置上のリソースとの対応関係を示す所定の探索処理リソース情報を格納する探索処理リソース情報格納部と、前記探索処理リソース情報と前記リソース管理部から取得したリソースの状態とに基づき、設定された厳密度により前記探索処理を実行するのに適したリソースを選択し、前記選択したリソースを利用して前記探索処理を実行する探索処理部と、前記探索処理の探索結果の探索精度を決定する探索精度決定部とを有し、前記決定された探索精度が設定された探索精度未満である場合、前記探索処理部は、前記設定された厳密度をより広い探索範囲を示す厳密度に更新し、前記更新された厳密度により前記探索処理を実行するのに適したリソースを再選択し、前記再選択されたリソースを利用して前記探索処理を実行する切替制御装置に関する。
【発明の効果】
【０００７】
本発明によると、探索処理実行中の厳密度の変更に伴って、変更された厳密度による探索処理に適したリソースに切り替えることが可能になる。
【図面の簡単な説明】
【０００８】
【図１】図１は、本発明の一実施例による計算装置を示すブロック図である。
【図２】図２は、本発明の一実施例による切替制御装置の構成を示すブロック図である。
【図３】図３は、本発明の一実施例による切替制御方法を示すフロー図である。
【発明を実施するための形態】
【０００９】
以下、図面に基づいて本発明の実施の形態を説明する。
【００１０】
後述される本発明の実施例を概略すると、動的に設定される探索範囲により探索処理を実行するのに適した計算装置上のリソースを選択する切替制御装置について説明する。探索処理における探索範囲の広さを示す厳密度と、探索処理の探索結果の探索精度とが設定されると、切替制御装置は、各厳密度と当該厳密度により探索処理を実行するのに適した計算装置上のリソースとの対応関係を示す所定の探索処理リソース情報とリソースの状態とに基づき、設定された厳密度により探索処理を実行するのに適したリソースを選択し、選択したリソースを利用して探索処理を実行する。当該探索処理の実行後、切替制御装置は、探索結果の探索精度を決定し、決定された探索精度が設定された探索精度を満たしていない場合、厳密度をより広い探索範囲を示す厳密度に更新し、更新された厳密度により探索処理を実行するのに適したリソースを再選択し、再選択されたリソースを利用して探索処理を再実行する。取得された探索結果の探索精度が設定された探索精度を満たすまで、切替制御装置は、厳密度を更新し続け、上述した探索処理を繰り返す。これにより、探索範囲に適したリソースを利用した探索処理を実行することが可能になり、効率的な探索処理が可能になる。
【００１１】
まず、図１を参照して、本発明の一実施例による計算装置を説明する。図１は、本発明の一実施例による計算装置を示すブロック図である。
【００１２】
図１に示されるように、計算装置１０は、複数のリソース５０＿１，５０＿２，...，５０＿ｎ（以下、リソース５０として総称する）と、切替制御装置１００とを有する。計算装置１０は、典型的には、パーソナルコンピュータなどであり、各種リソース５０を利用して後述される探索処理などの各種処理を実行する。
【００１３】
計算装置１０は、典型的には、補助記憶装置、メモリ装置、プロセッサ、通信装置、表示装置、入力装置などの各種ハードウェアリソースから構成される。補助記憶装置は、ハードディスクやフラッシュメモリなどから構成され、計算装置１０における各種処理を実現するためのプログラムやデータを格納する。メモリ装置は、RAM（Random Access Memory）などから構成され、プログラムの起動指示があった場合に、補助記憶装置からプログラムを読み出して格納する。プロセッサは、情報及びデータを処理し、メモリ装置に格納されたプログラムを実行することによって、計算装置１０における各種機能を実現する。通信装置は、ネットワークを介しサーバなどの外部装置に接続するための各種通信回路から構成される。表示装置は、ディスプレイ、プリンタなどから構成される。入力装置は、典型的には、操作ボタン、タッチパネル、キーボード、マウス等で構成され、計算装置１０のユーザが様々な操作命令を入力するのに用いられる。なお、本発明による計算装置１０は、上述したハードウェア構成に限定されるものでなく、他の何れか適切なハードウェア構成を有してもよい。
【００１４】
各リソース５０は、CPU (Central Processing Unit)、GPU (Graphics Processing Unit)、コプロセッサ、DSP (Digital Signal Processor)などの各種プロセッサから構成される。一般に、CPUは、汎用的な処理を実行するよう設計されたプロセッサであり、GPU、コプロセッサ及びDSPはそれぞれ、画像処理、数値演算処理及びデジタル信号処理などの特定タイプの処理を効率的に実行するよう設計されたプロセッサである。これら特定のタイプの処理を実行する場合、GPU、コプロセッサ又はDSPを利用した方が、CPUを利用するより効率的にこれらの処理を実行することができるケースが多い。
【００１５】
切替制御装置１００は、後述するように、計算装置１０上のリソース５０の切替制御を実行し、計算装置１０における探索処理を実行するリソース５０を選択する。切替制御装置１００は、上述した計算装置１０のハードウェアリソースを利用して実現されてもよいし、あるいは、個別のハードウェアリソースにより実現されてもよい。また、切替制御装置１００は、ソフトウェアモジュールとして構成されてもよく、計算装置１０のプロセッサに後述する各種処理を実行させるためのプログラムにより実現されてもよい。
【００１６】
次に、図２を参照して、本発明の一実施例による切替制御装置の構成を説明する。図２は、本発明の一実施例による切替制御装置の構成を示すブロック図である。
【００１７】
図２に示されるように、切替制御装置１００は、リソース管理部１１０、探索処理リソース情報格納部１２０、探索処理部１３０及び探索精度決定部１４０を有する。
【００１８】
リソース管理部１１０は、計算装置１０上の各リソース５０の状態を管理する。具体的には、リソース管理部１１０は、各リソース５０の使用率や負荷などの使用状態を示す指標を利用して、各リソース５０の使用状態を管理する。あるリソース５０の使用状態を示す指標が所定の閾値未満である場合、リソース管理部１１０は、当該リソース５０が空き状態であると判断し、他方、当該リソース５０の使用状態を示す指標が所定の閾値以上である場合、リソース管理部１１０は、当該リソース５０がビジー状態であると判断してもよい。当該閾値は、固定的な値であってもよいし、可変的な値であってもよい。一例として、リソース５０の使用率が使用状態を示す指標として利用される場合、当該閾値は、ｘ％などとして設定されてもよい。
【００１９】
探索処理リソース情報格納部１２０は、探索処理における探索範囲の広さを示す厳密度と、各厳密度により探索処理を実行するのに適した計算装置１０上のリソース５０との対応関係を示す所定の探索処理リソース情報を格納する。探索処理リソース情報は、例えば、各厳密度又は厳密度の各範囲と、当該厳密度又は厳密度の範囲により探索処理を実行するのに適したリソース５０との対応関係を示し、テーブル形式などのデータ構造を有するよう構成される。
【００２０】
一般に、探索処理の効率化は、探索対象を探索空間全体から探索空間の一部に限定する等によって図ることができる。厳密度は、このように限定された探索範囲が探索空間全体に対してどの程度の広さであるか示すための指標である。ユークリッド空間における探索では、探索範囲が広くなるに従って厳密度が増加するよう規定されてもよく、厳密度が高いほど広範囲の空間を探索することになる。例えば、厳密度は、０から１．０までの範囲の数値により表されてもよい。この場合、厳密度１．０は、探索処理が探索空間全体に対して行われることを表し、厳密度０．５は、探索処理が探索空間の１／２の限定された探索範囲に対して行われることを表す。
【００２１】
各厳密度に対して、当該厳密度により探索処理を実行するのに適した計算装置１０上のリソース５０が、事前の検証などに基づき予め決定されている。ここで、実行に適したリソース５０とは、各厳密度に対して最短時間で探索処理を実行可能なリソースとして規定されてもよい。例えば、探索処理が画像探索処理である場合、計算装置１０上のリソース５０としてCPUとGPUとが主として利用される。この場合、例えば、探索処理リソース情報には、厳密度が０．５未満である場合にはCPUが利用され、厳密度が０．５以上である場合にはGPUが利用されることが規定されてもよい。すなわち、厳密度が低く探索範囲が狭い場合、GPUを使用する場合のオーバヘッドを考慮すると、CPUを利用した方が探索処理を短時間で実行することができる。他方、厳密度が高く探索範囲が広い場合、GPUの並列処理機能を活用した方が、探索処理を短時間で実行することができる。
【００２２】
探索処理部１３０は、探索処理リソース情報とリソース管理部１１０から取得したリソース５０の状態とに基づき、設定された厳密度により探索処理を実行するのに適したリソース５０を選択し、選択したリソースを利用して探索処理を実行する。当該探索処理の実行後、探索結果について探索精度決定部１４０により決定された探索精度が設定されている探索精度未満である場合、探索処理部１３０は、設定された厳密度をより広い探索範囲を示す厳密度に更新し、更新された厳密度により探索処理を実行するのに適したリソースを再選択し、再選択したリソースを利用して探索処理を実行する。
【００２３】
厳密度は初期的には、ユーザなどにより指定されてもよいし、あるいは、探索処理を実行するアプリケーションなどにより指定されてもよい。また、探索精度は、探索結果の正確さを示す指標であり、例えば、探索空間全体に対して行われた探索処理の探索結果である正確な解又は厳密な解に対して、ある厳密度による探索処理の探索結果が一致する割合又はパーセンテージとして規定されてもよい。この定義によると、厳密度が１．０の探索処理の探索結果は、正確な解又は厳密な解となる。一般に、高い厳密度による探索処理は計算量を増加させるが、より高い探索精度を実現することが可能である。探索精度もまた、ユーザなどにより指定されてもよいし、あるいは、探索処理を実行するアプリケーションなどにより指定されてもよい。例えば、探索精度は、当該探索処理に対してユーザ又はアプリケーションが要求する探索精度に設定されてもよい。設定された厳密度により実行された探索処理の探索結果の探索精度が設定された探索精度未満である場合、探索処理部１３０は、厳密度を増加させることによって厳密度を更新する。例えば、探索処理部１３０は、０．１の刻みなどの所定量だけ厳密度をインクリメントしてもよい。
【００２４】
探索処理部１３０は、探索処理の探索結果について決定された探索精度が設定された探索精度以上になるまで、厳密度を更新し続け、探索処理リソース情報とリソース管理部１１０から取得したリソース５０の状態とに基づき、更新された厳密度により探索処理を実行するのに適したリソース５０を再選択し、再選択されたリソース５０を利用して探索処理を繰り返す。
【００２５】
一実施例では、探索処理部１３０は、探索処理リソース情報格納部１２０に格納されている探索処理リソース情報を参照して、設定された厳密度に対応する当該厳密度に適したリソース５０を特定する。その後、探索処理部１３０は、当該リソース５０が空き状態であるか判断するため、リソース管理部１１０から特定したリソース５０の使用状態を示す指標を取得する。リソース管理部１１０から取得した指標が所定の閾値未満である場合、探索処理部１３０は、当該リソース５０が空き状態であると判断し、特定されたリソース５０を利用して設定されている厳密度による探索処理を実行する。他方、リソース管理部１１０から取得した指標が所定の閾値以上である場合、探索処理部１３０は、当該リソース５０がビジー状態であると判断し、特定したリソース５０以外の計算装置１０上の他のリソース５０の使用状態を示す指標をリソース管理部１１０から取得し、当該他のリソース５０から取得した指標が閾値以下であるリソース５０を選択し、選択されたリソース５０を利用して設定された厳密度により探索処理を実行する。
【００２６】
具体例として、厳密度が０．４に初期的に設定され、要求される探索精度が６０％に設定されているケースを用いて上述した探索処理をより詳細に説明する。探索処理部１３０は、探索処理リソース情報を参照して厳密度０．４により探索処理を実行するのに適したリソース５０を特定する。上述したように、探索処理リソース情報において、厳密度が０．５未満である場合にはCPUが利用され、厳密度が０．５以上である場合にはGPUが利用されることが規定されているとすると、探索処理部１３０はまず、厳密度０．４による探索処理を実行するのに適したリソース５０としてCPUを特定する。次に、探索処理部１３０は、CPUの使用状態を確認するため、リソース管理部１１０からCPUの使用率を取得し、取得した使用率が所定の閾値以上であるか判断する。取得した使用率が所定の閾値未満である場合、探索処理部１３０は、CPUが空き状態であると判断し、CPUを利用して厳密度０．４による探索処理を実行する。探索処理の実行後、探索結果の探索精度が探索精度決定部１４０により５０％であると決定された場合、決定された探索精度は設定された探索精度６０％未満であるため、探索処理部１３０は、当該探索結果を採用せず、厳密度０．４を０．１だけインクリメントする。探索処理部１３０は、更新後の厳密度０．５により上述した処理を繰り返し、探索処理リソース情報を参照して厳密度０．５により探索処理を実行するのに適したリソース５０を特定する。探索処理部１３０は、厳密度０．５に対応するリソース５０としてGPUを特定する。その後、探索処理部１３０は、GPUの使用状態を確認するため、リソース管理部１１０からGPUの使用率を取得し、取得した使用率が所定の閾値以上であるか判断する。取得した使用率が所定の閾値未満である場合、探索処理部１３０は、GPUが空き状態であると判断し、GPUを利用して厳密度０．５による探索処理を実行する。他方、取得した使用率が所定の閾値以上である場合、すなわち、GPUがビジー状態である場合、探索処理部１３０は、GPU以外の計算装置１０上の他のリソース５０の使用率をリソース管理部１１０から取得し、取得した使用率が所定の閾値以下であるリソース５０、すなわち、空き状態のリソース５０を選択し、選択されたリソース５０を利用して設定された厳密度により探索処理を再実行する。当該他のリソース５０としては、例えば、探索処理リソース情報において設定されている他の空き状態のリソース（CPUなど）が選択されてもよい。ここで、このような空き状態のリソースが検出できなかった場合、探索処理部１３０は、特定されたGPUが空き状態になるまで、又は探索処理リソース情報に規定されている何れかの空き状態のリソース（CPUなど）が検出されるまで、探索処理の実行を待機してもよい。あるいは、探索処理部１３０は、GPUにおいて現在実行中のプロセスを強制停止させ、当該探索処理を優先的に実行させてもよい。実行された探索処理の探索結果の探索精度が、探索精度決定部１４０により６５％であると決定された場合、決定された探索精度は設定された探索精度６０％以上であるため、探索処理部１３０は、当該探索結果を採用して探索処理を終了する。
【００２７】
探索精度決定部１４０は、探索処理部１３０により実行された探索処理の探索結果の探索精度を決定する。探索精度は、探索結果の正確さを示す指標であり、例えば、ある厳密度による探索処理の探索結果が正確な解又は厳密な解に一致すると推定される割合又はパーセンテージとして算出されてもよい。探索精度の推定方法の一例として、探索精度決定部１４０は、探索処理の前処理として、探索空間の一部を抽出し、抽出された探索対象全体について厳密な探索（全探索）を実行して、抽出された探索空間の一部に対する正確な解又は厳密な解を求めておく。この探索対象のサンプリングは、例えば、探索空間全体に対するランダムサンプリングであってもよい。探索精度決定部１４０は、このように求められた探索空間の一部に対する厳密な解を探索空間全体に対する厳密な解として代用してもよい。探索精度決定部１４０は、このような前処理により求められた厳密な解と探索処理部１３０により実行される各探索処理の探索結果とを比較し、厳密な解と探索結果との一致度を当該探索結果の探索精度として決定してもよい。例えば、探索結果の１／２が厳密な解に一致する場合、探索精度は０．５と決定されてもよい。このように、現実的な時間で計算可能な探索範囲に対して全探索により探索精度を推定することによって、全体の探索精度に大きな影響を与えることなく妥当な推定精度の探索精度を算出することが可能になる。
【００２８】
次に、図３を参照して、本発明の一実施例による切替制御装置における切替制御処理を説明する。図３は、本発明の一実施例による切替制御処理を示すフロー図である。
【００２９】
当該切替制御処理は、例えば、探索対象と探索空間とを指定した探索処理が要求されたことに応答して開始されてもよい。図３に示されるように、ステップＳ１０１において、切替制御装置１００は、探索処理のためのパラメータとして、探索処理における探索範囲の広さを示す厳密度と、探索処理の探索結果の探索精度とを設定する。厳密度と探索精度の設定にあたっては、例えば、いずれも、当該探索処理を要求したユーザにより指定されてもよいし、あるいは、当該探索処理を実行するアプリケーションにより指定されてもよい。例えば、高い精度の探索処理を所望する場合には、ユーザ又はアプリケーションは、厳密度と探索精度との一方又は双方を相対的に高い値に設定してもよい。他方、迅速な探索処理を所望する場合には、ユーザ又はアプリケーションは、厳密度と探索精度との一方又は双方を相対的に低い値に設定してもよい。
【００３０】
ステップＳ１０２において、切替制御装置１００は、各厳密度と当該厳密度により探索処理を実行するのに適した計算装置１０上のリソース５０との対応関係を示す所定の探索処理リソース情報を参照し、設定された厳密度に対応するリソース５０を特定する。
【００３１】
ステップＳ１０３において、切替制御装置１００は、特定されたリソース５０の使用状態を確認し、当該リソース５０が空き状態であるか判断する。一実施例では、切替制御装置１００は、特定されたリソース５０の使用率を取得し、取得した使用率が所定の閾値未満であるか判断する。取得した使用率が所定の閾値未満である場合、切替制御装置１００は、当該リソース５０が空き状態であると判断し（ステップＳ１０３：Ｙｅｓ）、当該処理はステップＳ１０４に移行する。他方、取得した使用率が所定の閾値以上である場合、切替制御装置１００は、当該リソースがビジー状態であると判断し（ステップＳ１０３：Ｎｏ）、当該処理はステップＳ１０５に移行する。
【００３２】
ステップＳ１０４において、切替制御装置１００は、空き状態であると判断されたリソース５０を利用して、設定された厳密度により探索処理を実行する。
【００３３】
ステップＳ１０５において、切替制御装置１００は、探索処理に適した他の空き状態のリソース５０を選択し、当該リソース５０を利用して、設定された厳密度により探索処理を実行する。例えば、当該他の空き状態のリソース５０として、格納されている探索処理リソース情報に規定されている他の空き状態のリソースが選択されてもよい。
【００３４】
ステップＳ１０６において、切替制御装置１００は、ステップＳ１０４又はステップＳ１０５において実行された探索処理の探索結果の探索精度が、ステップＳ１０１において設定された探索精度以上であるか判断する。探索精度が設定された探索精度以上である場合（Ｓ１０６：Ｙｅｓ）、切替制御装置１００は、当該探索結果が要求された探索精度を満たしているため、これを採用して探索処理を終了する。他方、探索精度が設定された探索精度未満である場合（Ｓ１０６：Ｎｏ）、切替制御装置１００は、当該探索結果が要求された探索精度を満たしていないため、これを採用せずに、当該処理はステップＳ１０７に移行して、新たな厳密度により探索処理を再実行する。
【００３５】
ステップＳ１０７において、切替制御装置１００は、例えば、設定されている厳密度を所定量だけインクリメントするなどによって、厳密度を更新する。その後、切替制御装置１００は、更新された厳密度によって実行された探索処理の探索結果の探索精度が設定された探索精度以上になるまで、上述したステップＳ１０２〜Ｓ１０７を繰り返し実行する。
【００３６】
なお、上述した切替制御方法は、ステップＳ１０１〜Ｓ１０７をプロセッサに実行させるためのコンピュータプログラムにより実現されてもよい。
【００３７】
上述した探索処理は、kd-treeを利用した近傍探索処理に適用されてもよい。kd-treeにおける近傍探索処理では、構築されたツリーをルートからリーフまで辿る処理と、探索精度を向上させるためにバックトラックを行って、より広範囲にリーフを再計算する処理とに分けられる。本実施例では、前者のツリーを辿る処理は一貫してCPUに実行させ、バックトラックによる再計算処理については、CPU又はGPUの何れを利用するか判断して実行してもよい。また、当該近傍探索処理では、バックトラック時の基準となるバックトラック半径が厳密度に対応する。例えば、１０４８５７６件のベクトルデータに対して、kd-treeを構築し、バックトラック後の再計算では、該当するベクトルデータ数が１万件以上である場合には、GPUによる処理の方がCPUより高速であることが事前に分かっているとする。厳密度が０．７に設定され、探索精度が９０％に設定される場合、kd-treeのツリーを辿るアルゴリズムに沿ってリーフまで到達すると、バックトラックを行う。当該バックトラックによって計算範囲が８０００件であったとすると、切替制御装置１００は、当該処理に適したCPUの空き状態を確認し、CPUが空き状態である場合には、CPUを利用してバックトラックに伴う再計算を実行する。当該再計算の探索結果の探索精度が８０％であるとき、厳密度を０．８にインクリメントし、探索処理を繰り返す。kd-treeのツリーを辿るアルゴリズムに沿ってリーフに到達すると、バックトラックを行う。当該バックトラックによる計算範囲が２００００件であったとすると、切替制御装置１００は、当該処理に適したGPUの空き状態を確認し、GPUが空き状態である場合には、GPUを利用してバックトラックに伴う再計算を実行する。当該再計算の探索結果の探索精度が９０％となったため、切替制御装置１００は、当該近傍探索処理を終了する。
【００３８】
以上、本発明の実施例について詳述したが、本発明は上述した特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００３９】
１０  計算装置
５０  リソース
１００  切替制御装置
１１０  リソース管理部
１２０  探索処理リソース情報格納部
１３０  探索処理部
１４０  探索精度決定部
【図１】
2014229138.tif 000003
【図２】
2014229138.tif 000004
【図３】
2014229138.tif 000005