JP6304230B2 - 並列処理装置、並列処理方法、および並列処理プログラム記憶媒体 - Google Patents

並列処理装置、並列処理方法、および並列処理プログラム記憶媒体 Download PDF

Info

Publication number
JP6304230B2
JP6304230B2 JP2015502758A JP2015502758A JP6304230B2 JP 6304230 B2 JP6304230 B2 JP 6304230B2 JP 2015502758 A JP2015502758 A JP 2015502758A JP 2015502758 A JP2015502758 A JP 2015502758A JP 6304230 B2 JP6304230 B2 JP 6304230B2
Authority
JP
Japan
Prior art keywords
data
processor
unit
collation
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015502758A
Other languages
English (en)
Other versions
JPWO2014132608A1 (ja
Inventor
淳嗣 酒井
淳嗣 酒井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2014132608A1 publication Critical patent/JPWO2014132608A1/ja
Application granted granted Critical
Publication of JP6304230B2 publication Critical patent/JP6304230B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Description

本発明は、プロセッサを用いた処理装置に関し、特に、複数のプロセッサコアを用いて多数のデータの処理を並列に行う装置に関する。
監視カメラによる画像認識、指紋や虹彩を使った生体認証など、高度な認識、照合処理に対する要求が高まっている。これらの処理は、事前登録された多数のデータと、入力として与えられた被照合データとを照合し、被照合データに最も近い(一致しているとの尤度の最も高い)登録済みデータを見つけ出すものである。システムの高度化・大規模化により、1つの被照合データの処理時間の短縮だけでなく、多数の被照合データの処理スループットを上げることも求められる。認識アルゴリズムの改良への対応とシステム構成の柔軟性の確保との観点から、こうした大規模照合システムは汎用的なプロセッサ上のソフトウェアによる実現が好適と考えられる。
他方、半導体デバイスの観点からみると、プロセッサの動作クロックの向上は近年鈍化しており、複数あるいは多数のプロセッサコアによる並列処理により性能の向上を図る流れが進んでいる。例えば、パーソナルコンピュータやサーバ等、汎用処理装置向けのCPU(Central Processing Unit)には、2個から8個程度のコアを有するマルチコア構成のものがある。また、画像処理や科学技術計算向けのGPU(Graphical Processing Unit)では、数百個のシンプルなコアを有する多数コア(メニコア)構成のものがある。
大規模照合システムは、照合処理だけでなく、登録データ管理や入出力制御等の汎用的な処理も行う必要があることから、汎用的なホストプロセッサと照合向きのメニコア構成のコプロセッサの組み合わせによって構築されることが好適である。そこで必要になる技術が、高度かつ大規模な照合処理を、ホストプロセッサとコプロセッサに適切に分担させて処理する並列処理技術である。
照合や認識にかかわる並列処理技術として次のものがある。
特許文献1で開示された技術は、3次元物体の照合処理において、スレッド毎の処理データの量が均等で、かつ所定量以下になるように領域を分割してGPUにデータを投入し、GPUに並列処理させるものである。
特許文献2で開示された技術は、パターン認識処理において、辞書データとの照合を、辞書パターンの個数と同数の複数プロセッサコアで並列に行うものである。
特許文献3は、映像音声コンテンツを、それを構成するチャプターデータを単位として比較し、所定のチャプターデータを検出する情報記録装置を開示する。特許文献3の情報記録装置では、並列処理技術の適用は特に考慮されていない。
特許文献4は、入力パターンとテンプレートパターンとの類似度を演算してパターンマッチングを行うデータ処理装置を開示する。特許文献4のデータ処理装置は、類似度を演算する際、入力データを1ビットずつシリアルに入力する。特許文献4のデータ処理装置では、並列処理技術を用いた演算は行われない。
特許文献5は、将来リードアクセスが予想される画像データをプリフェッチし、キャッシュメモリへ格納する表示制御システムを開示する。
非特許文献1で説明されているOpenCL(Open Computing Language。登録商標)技術は、ホストプロセッサからコプロセッサ(典型的にはGPU)を利用するための汎用技術である。OpenCL技術を用いることによって、特定のコプロセッサ製品への依存性が少ないプログラミングが可能である。具体的には、OpenCL技術の利用者は、実行対象の処理(以降、「対象処理」という。)の中枢アルゴリズムに加え、対象処理を並列処理することが可能な単位処理へ分割(以降、「並列分割」という。)するための方式を決める。そして、利用者は、決定した方式に応じたホストプロセッサ−コプロセッサ間の通信指示をOpenCLの書式に沿って指示する。利用者による以上の操作によって、コプロセッサを利用した並列処理システムが実現される。
特開2010−134669号公報 特開2001−126030号公報 特開2006−262311号公報 特開2003−243988号公報 特開平6−332664号公報
Ofer Rosenberg, "OpenCL Overview",[online], 2011年11月, KHRONOS Group, [2013年1月22日検索], インターネット<URL: http://www.khronos.org/assets/uploads/developers/library/overview/opencl-overview.pdf>
特許文献1、2の技術は、照合や認識等、特定用途の装置において、中枢処理から並列制御までを一体の処理として実現するものである。従って、装置開発者は、専門分野である対象処理の中枢アルゴリズムに精通することに加え、専門分野外の、いわゆる「並列プログラミング」の知識も求められる。「並列プログラミング」とは、複数のCPUコア、例えば、対象処理を単位処理に並列分割してGPUやCPUの各コアに与え、それらのコア間での処理の同期や排他制御を適宜行うプログラムを作成することである。
複数のCPUコアは、各種の形態で処理装置に内蔵される。例えば、ホストプロセッサとコプロセッサ等、複数のプロセッサを備える処理装置では、それぞれのプロセッサに内蔵されたCPUコアを用いた並列プログラミングが行われることがある。あるいは、2個以上のCPUコアを内蔵するプロセッサを備える処理装置では、そのプロセッサに内蔵された複数のCPUコアを用いた並列プログラミングが行われることがある。以上のように、並列プログラミングで用いられる複数のCPUコアが処理装置に内蔵されるときの形態は多様である。
しかし、以下のように、並列プログラミングには、専門家以外の技術者にとっては困難な問題がある。
第1の問題点は、対象処理の高速化のために、複数のCPUコアを使いこなすことが難しい点である。
特許文献1および特許文献2の技術では、上記の並列プログラミング、すなわち、多数コア向けの対象処理の並列分割、ならびにホストプロセッサとコプロセッサとの間のデータ転送およびコプロセッサ制御は、システム開発者の責務とされる。ところが、専門外の技術者にとって、並列プログラミングは非常に複雑である。
一方、非特許文献1の技術では、データ転送とコプロセッサ制御についての開発者の負担は、OpenCLの仕組みを利用することで軽減される。しかし、コプロセッサに適した処理の並列分割方式の決定、および並列分割の実現は、依然としてシステム開発者の担当業務である。
第2の問題点は、コプロセッサにあわせた性能チューニングが難しい点である。ホストプロセッサもしくはコプロセッサに内蔵されたCPUコア、またはホストプロセッサおよびコプロセッサに内蔵されたCPUコア等、複数のCPUコアの性能を余すことなく利用するには、対象処理の全体を、上記の各コアに適切に配分するような制御が新たに必要である。
ところが、一般に、システム構成によって、ホストプロセッサとコプロセッサのアーキテクチャや個数に加え、各プロセッサに内蔵されたコアの個数も異なることが多い。さらに、各コアの処理性能やそのコアに適する処理内容も異なることもある。従って、上記のような、処理性能に影響を与えるシステム固有の要因に合わせて、処理の負荷の配分を修正しなければならない。こうしたチューニング作業という負担を、システム開発者が負わなければならない。
特許文献3、4、5の技術は、並列処理を対象としたものではない。そのため、並列処理によって達成される高速化という大きなメリットを得ることができない。特に、対象処理が、同時に実行可能な単位処理を含む場合には、並列処理による高速化の効果は絶大であるが、特許文献3、4、5の技術ではそのメリットを受けることができない。たとえ、特許文献3、4、5の技術に並列処理を適用したとしても、並列プログラミングについての上記の問題点は解決できない。
以上のような課題は、照合処理や認識処理を並列化する場合には限られない。対象処理が、並列に実行可能な単位処理(以降、「並列化可能処理」という。)を複数含む場合は、並列処理を用いることによって、効率的に対象処理を実行することができる。しかし、並列処理を効果的に行うためには解決すべき課題があることは上記の通りである。
例えば、ある画像を構成する個々の画素に共通の演算を行うことによって、画像に対して所望の操作を行ったり、所望の効果を与えたりするような画像処理も、画素単位で並列化可能な処理を含む。従って、このような画像処理を並列化する場合にも、処理速度を向上させるためには、単位処理を実行する個々のプロセッサへの処理負荷の配分等の調整が必要である。しかし、画像処理自体の開発者に、技術的視点の異なる負荷配分まで対応させることは、業務の負荷が増大することのみでなく、専門分野外の処理であることからも決して望ましくない。
(発明の目的)
本発明の目的は、複数の単位処理を、複数のプロセッサで、効率よく簡便に並列処理することができる、並列処理装置、並列処理方法、および並列処理プログラム記憶媒体を提供することにある。
本発明の並列処理装置は、データ集合に含まれるデータを入力として実行される単位処理を規定した第1のプログラムを入力されたデータに対して実行し第1の結果を出力する第1のプロセッサと、単位処理を規定した第2のプログラムを入力されたデータに対して実行し第2の結果を出力する第2のプロセッサと、第1のプロセッサおよび第2のプロセッサの性能または機能を示す所定の指標に基づいてデータ集合から第1の部分集合および第2の部分集合を選択する選択手段と、第1の部分集合に含まれる第1のデータを第1のプロセッサに入力する第1のプロセッサ制御手段と、第2の部分集合に含まれる第2のデータを第2のプロセッサに入力する第2のプロセッサ制御手段とを備え、第1のプロセッサおよび第2のプロセッサによって第1のプログラムおよび第2のプログラムは並列に実行されることを特徴とする。
本発明の並列処理方法は、並列処理装置に備えられた第1のプロセッサおよび第2のプロセッサの性能または機能を示す所定の指標に基づいてデータ集合から第1の部分集合および第2の部分集合を選択し、第1の部分集合に含まれる第1のデータを第1のプロセッサに入力し、第2の部分集合に含まれる第2のデータを第2のプロセッサに入力し、データ集合に含まれるデータを入力として実行される単位処理を規定した第1のプログラムを第1のプロセッサを用いて第1のデータに対して実行して第1の結果を出力し、単位処理を規定した第2のプログラムを第2のプロセッサを用いて第2のデータに対して第1のプログラムと並列に実行して第2の結果を出力することを特徴とする。
本発明の並列処理プログラム記憶媒体は、データ集合に含まれるデータを入力として実行される単位処理を規定した第1のプログラムを入力されたデータに対して実行し第1の結果を出力する第1のプロセッサ、および単位処理を規定した第2のプログラムを入力されたデータに対して実行し第2の結果を出力する第2のプロセッサを含む並列処理装置に備えられたプロセッサを、第1のプロセッサおよび第2のプロセッサの性能または機能を示す所定の指標に基づいてデータ集合から第1の部分集合および第2の部分集合を選択する選択手段、および第1の部分集合に含まれる第1のデータを第1のプロセッサに入力する第1のプロセッサ制御手段、または第2の部分集合に含まれる第2のデータを第2のプロセッサに入力する第2のプロセッサ制御手段として機能させるための並列処理プログラムであって、第1のプロセッサおよび第2のプロセッサによって、第1のプログラムおよび第2のプログラムは並列に実行される並列処理プログラムを格納することを特徴とする。
本発明の並列処理装置、並列処理方法、および並列処理制御プログラム記憶媒体によると、複数の単位処理を、複数のプロセッサで効率よく、簡便に並列処理することができる。
本発明の第1の実施形態の照合装置の全体構成を示すブロック図である。 本発明の第1の実施形態の、ホスト側制御手段、コプロセッサ側制御手段、および単位照合手段の内部構成を示すブロック図である。 登録済データ集合の構造を示す図である。 本発明の第1の実施形態の照合管理手段の管理対象の情報を示す図である。 本発明の第1の実施形態の単位照合制御手段の動作の流れ図である。 本発明の第1の実施形態のブロック切り出し手段の動作の流れ図である。 本発明の第1の実施形態の結果登録手段の動作の流れ図である。 切り出し集合の要素データの構造を示す図である。 照合処理に用いられる各データ間の相関関係を示す図である。 第1の実施形態の照合装置を利用した照合処理システムを開発する場合の開発作業の流れを示す図である。 本発明の第2の実施形態のブロック切り出し手段の動作の流れ図である。 第3の実施形態の照合装置の全体構成を示すブロック図である。 第4の実施形態の照合装置の全体構成を示すブロック図である。 第5の実施形態の会員照合システムの全体構成を示すブロック図である。 第5の実施形態の会員照合システムにおけるソフトウェアの内部構成を示す図である。 第5の実施形態の単位照合制御スレッドの動作の流れ図である。 第6の実施形態の処理装置の構成を示すブロック図である。 第7の実施形態の処理装置の構成を示すブロック図である。 第7の実施形態の並列処理装置の変形例の構成を示すブロック図である。
次に、本発明の実施形態について図面を参照して詳細に説明する。
(第1の実施形態)
[第1の実施形態の構成]
図1は、本発明の第1の実施形態の照合装置10の、全体構成を示すブロック図である。
照合装置10は、ホストプロセッサ20、コプロセッサ30、記憶手段24、34、入出力手段15を備える。
ホストプロセッサ20が所定のプログラムを実行することによって、ホスト側制御手段21、単位照合手段22、アプリケーションプログラム(以下、「アプリケーション」と略す。)処理手段12が実現される。
コプロセッサ30が所定のプログラムを実行することによって、コプロセッサ側制御手段31、単位照合手段32が実現される。
記憶手段24、34は、それぞれ、登録済みデータ集合23、33を記憶する。なお、照合装置10は、記憶手段24、34を備えることなく、照合処理を実行するときに、外部の所定の記憶手段に登録された登録済みデータ集合23、33から必要なデータを読み込んでもよい。
照合装置10は、外部から被照合データ16を読み込んで照合処理を行い、処理結果17を出力する。照合処理の内容については後述する。
図2は、ホスト側制御手段21、コプロセッサ側制御手段31、および単位照合手段22、32の内部構成を示すブロック図である。ホスト側制御手段21は、アプリケーションインタフェース手段211と、進行制御手段212と、照合管理手段213と、ブロック切り出し手段214と、単位照合制御手段215と、結果登録手段216と、コプロセッサインタフェース手段217と、を備える。
アプリケーションインタフェース手段211は、アプリケーション処理手段12とのデータのやりとりを行う。進行制御手段212は、照合処理の全体の動作をつかさどる。照合管理手段213は、照合処理全体の進行状況を管理する。ブロック切り出し手段214は、照合処理すべきデータの全体から、ある一部分のデータを切り出す。単位照合制御手段215は、切り出した一部分のデータに対する照合処理(以降、「単位照合処理」という。)を、ホストプロセッサ上の単位照合手段22を用いて実行する際の実行制御を行う。結果登録手段216は、単位照合処理の結果を進行管理表に登録する。コプロセッサインタフェース手段217は、コプロセッサ側制御手段31との通信を行う。
コプロセッサ側制御手段31は、ホスト側制御呼び出し手段311と、単位照合制御手段315と、を備える。
ホスト側制御呼び出し手段311は、ホスト側制御手段21との通信を行う。単位照合制御手段315は、切り出された一部分のデータに対する照合処理(単位照合処理)をコプロセッサ上の単位照合手段32を用いて実行する際の実行制御を行う。
コプロセッサ側にある単位照合制御手段315および単位照合手段32の機能は、それぞれ、ホストプロセッサ側にある単位照合制御手段215および単位照合手段22の機能と同じである。
ホストプロセッサ側の単位照合手段32は、照合処理手段221と、データアクセス手段222と、結果収集手段223と、を備える。コプロセッサ側の単位照合手段32は、照合処理手段321と、データアクセス手段322と、結果収集手段323と、を備える。
照合処理手段221、321は、1組のデータ要素に対して単位照合処理を実行する。データアクセス手段222、322は、指定された番号の登録済みデータ要素が置かれた場所を求める。結果収集手段223、323は、複数の単位照合処理の結果から、最高の「照合スコア」を与える1つの照合結果を求める。「照合スコア」とは、単位照合処理の処理対象である1組のデータ要素の一致の度合いを示す値である。
ホストプロセッサ側の照合処理手段221、データアクセス手段222、結果収集手段223の各々が単位照合制御手段215と連携動作する際のインタフェース仕様は、コプロセッサ側の照合処理手段321、データアクセス手段322、結果収集手段323の各々が単位照合制御手段315と連携動作する際のインタフェース仕様と同一である。
図3は、登録済みデータ集合23、33の構造を示す。
登録済みデータ集合23、33は、インデクシング可能、すなわち、i(iはデータ集合に含まれる要素データの個数以下の自然数)番目の要素データにダイレクトにアクセス可能な形で要素データを保持する。登録済みデータ集合23、33の各要素データは、照合装置10に入力される被照合データと1対1に照合されるデータ構造をもつ。
典型的には、登録済みデータ集合23、33の各要素データは被照合データと同一のデータ構造をもち、照合に用いられる特徴ベクトルを含む構造体である。また典型的には、登録済みデータ集合23、33は、上記のデータ構造を要素とする配列として実現される。
なお、ホストプロセッサ側の記憶手段24とコプロセッサ側の記憶手段34のそれぞれに記憶される登録済みデータ集合23、33の内容は、同一である。登録済みデータ集合23、33は、照合処理の前に作成され、その後のシステム運用時には書き換えられない。そのため、ホストプロセッサ側の記憶手段24とコプロセッサ側の記憶手段34のそれぞれに配置された登録済みデータ集合23、33に対して一貫性保持制御や排他制御を行う必要はなく、登録済みデータ集合23、33は読み取り専用で参照される。
図4は、照合管理手段213の管理対象の情報を示す。照合管理手段213は、進行管理表241と、被照合データ保管領域242と、最終照合結果領域243とを管理する。進行管理表241、被照合データ保管領域242、最終照合結果領域243は、例えば、第1の記憶手段24の内部に確保される。
進行管理表241は、インデクシング可能な形で要素データを保持する集合データ構造である。進行管理表241の各要素データは、登録済みデータ集合23中の対応要素の照合処理状態を表す、処理状態値を保持する。照合処理状態には、「未着手」、「単位照合中」、「集計中」、「完了」、の4状態があり、それぞれの状態に対応する処理状態値が設定される。進行管理表241のインデクス値は、登録済みデータ集合23、33のインデクスと同一の値に設定する。
典型的には、進行管理表241の各要素データは上記の4状態を表現する整数の処理状態値であり、進行管理表全体241は上記の要素データの配列(配列長は登録済みデータ集合23、33と同じ)として実現される。
被照合データ保管領域242は、入力として与えられた被照合データ16のコピーを保持する領域である。
最終照合結果領域243は、照合処理の進行の過程における、それまでの単位照合処理の結果を保持する領域である。言い換えれば、最終照合結果領域243は、照合処理の完了時に最終的な照合結果が格納される領域である。最終照合結果領域243には、最良の単位照合結果をもたらした登録済みデータ要素23、33のインデクス番号と、そのときの単位照合処理の結果値との、2つの値が格納される。
[第1の実施形態の動作]
本実施形態の動作を、事前準備と照合処理本体に分けて説明する。
(1)事前準備
照合処理を始める前に設定されるパラメータについて説明する。
1)最大切り出しサイズNch
Nchは、ホストプロセッサ20またはコプロセッサ30で、一度に照合処理されるデータの個数の最大値である。Nchの値が大きいほど、並列処理によるオーバヘッドが小さくなる。逆に、Nchの値が小さいほど、並列処理時の負荷が均衡し、プロセッサ資源の無駄が小さくなる。
そのため、Nchの値は、ホストプロセッサ20とコプロセッサ30の性能、登録済みデータ集合23、33の要素データ数、および1回の照合処理の演算量、をふまえて決定される。
Nchの値の一つの目安は、登録済みデータ集合23、33の要素データ数を、照合装置10内のプロセッサの総数、すなわち、ホストプロセッサ20の個数とコプロセッサ30の個数の合計で割った値の10分の1の値、である。なお、上記のプロセッサの総数とは、ホストプロセッサおよびコプロセッサに内蔵されたプロセッサコアの個数ではなく、独立したホストプロセッサおよびコプロセッサをそれぞれ1台と数えたときの合計の台数である。従って、照合装置10では、プロセッサの総数は、”2”である。
2)ホストプロセッサスレッド数Th
Thは、ホスト側単位照合手段22の実行に利用可能なホストプロセッサ20のスレッドの数である。Thの値は、典型的には、ホストプロセッサ20が備えるプロセッサコアの個数に等しい値に設定される。ホストプロセッサ20上で照合装置10以外の機能やアプリケーションが同時に実行される場合は、Thの値が、ホストプロセッサ20が備えるプロセッサコアの個数より小さく設定されることもある。
3)コプロセッサスレッド数Tc
Tcは、コプロセッサ側単位照合手段32の実行に利用可能なコプロセッサ30のスレッドの数である。典型的なTcの値は、上記のホストプロセッサ20のスレッド数Thと同様に設定される。すなわち、Tcの値は、コプロセッサ30が備えるプロセッサコアの個数に等しい値に設定される。コプロセッサ30上で照合装置10以外の機能やアプリケーションが同時に実行される場合は、Tcの値が、コプロセッサ30が備えるプロセッサコアの個数より小さく設定されることもある。
(2)照合処理本体
続いて、本実施形態の照合処理の本体部分の動作を説明する。動作の説明には、各種のデータ構造、すなわち、登録済みデータ集合23、33、進行管理表241、被照合データ保管領域242、切り出し集合Sc(後述)、途中照合結果Ri(後述)、切り出し照合結果Rch(後述)、最終照合結果領域243、が用いられる。本実施形態の理解を助けるため、これらのデータ構造の相関関係を図9に示す。
照合処理は、アプリケーション処理手段12が、入出力手段15を介して照合装置10の外部から被照合データ16を受け取り、ホスト側制御手段21内のアプリケーションインタフェース手段211に対し被照合データの照合処理を依頼することによって始まる。この依頼は、アプリケーションインタフェース手段211から進行制御手段212に通知される。初めに、進行制御手段212の動作を説明する。
a)進行制御手段212の動作
進行制御手段212は、与えられた被照合データを照合管理手段内の被照合データ保管領域242にコピーし、進行管理表241の全要素データに「未着手」状態を示す処理状態値を設定する。
また、進行制御手段212は、照合結果の二者比較のために、最終照合結果領域243を適切な値で初期化する。すなわち、進行制御手段212は、インデクスとしては無効インデクス値(例えば、−1)を、照合結果値としては最悪値(例えば、−2147483648 (符号付き32ビット整数の最小値))を設定する。以降、進行制御手段212は、最終照合結果領域243に保存されている照合結果または初期値と、新しく得られた照合結果との二者比較を行う。そして、進行制御手段212は、照合スコアの大きい方の照合結果をその時点の最終照合結果として最終照合結果領域243に保存する。
続いて、進行制御手段212は、ホストプロセッサ側の単位照合制御手段215およびコプロセッサ側の単位照合制御手段315を始動させる。次に、単位照合制御手段215、315の動作を説明する。
b)単位照合制御手段の動作
単位照合制御手段215、315の動作の流れを図5に示す。単位照合制御手段215は、ブロック切り出し手段214と、単位照合手段22または単位照合手段32と、結果登録手段216、を呼び出す一連の処理(ステップS501〜S506)を繰り返す。
ホストプロセッサ20側の単位照合制御手段215は、ホストプロセッサ20側にあるブロック切り出し手段214および結果登録手段216を直接呼び出す。
これに対して、コプロセッサ30側の単位照合制御手段315は、ホスト側制御呼び出し手段311およびコプロセッサインタフェース手段217を介して、間接的にホストプロセッサ20側のブロック切り出し手段214および結果登録手段216を呼び出す。
なお、単位照合手段22、32は、常に、それぞれ単位照合制御手段215、315を機能させるプロセッサに対応するものが呼び出される。すなわち、ホストプロセッサ20側の単位照合制御手段215はホストプロセッサ上の単位照合手段22を、コプロセッサ側単位照合制御手段315はコプロセッサ上の単位照合手段32を、各々呼び出す。
ホストプロセッサ20側の単位照合制御手段215とコプロセッサ30側の単位照合制御手段315の違いは、ブロック切り出し手段214および結果登録手段216の呼び出し方法が、直接であるか間接であるかだけである。単位照合制御手段215と単位照合制御手段315の動作の流れは共通である。そこで、図5の単位照合制御部の動作の流れ図を参照しながら、その共通の動作の流れを順に説明する。
1)ステップS501
まず単位照合制御手段215は、ブロック切り出し手段214に対し、次に処理すべきデータブロックを要求する。
要求を受けたブロック切り出し手段214の動作の流れを図6に示す。ブロック切り出し手段214は、単位照合制御手段215、315から呼び出されるたびに、図6に示す一連の動作(S401〜S403)を行い、次の呼び出しを待つ、という動作を繰り返す。ブロック切り出し手段214によるS401〜S403の動作は以下の通りである。
1−1)ステップS401
ブロック切り出し手段214は、進行管理表241の各要素を走査し、処置状態値が「未着手状態」である要素データを、最大Nch個見つけ出す。もし「未着手状態」の要素データがNch個未満しか見つからない場合は、ブロック切り出し手段214はそれらすべてを選択する。
1−2)ステップS402
ブロック切り出し手段214は、ステップS401で見つかった最大Nch個の要素データに、「単位照合中」を示す処理状態値を設定する。ステップS401とS402の処理は、複数の単位照合制御手段、すなわち単位照合制御手段22、23から同時に呼ばれた際であっても正しく動作する必要があるため、排他制御下で実行される。ここで用いられる排他制御の機構は、ホストプロセッサ20上で正しく動作するものであればよく、排他制御の機構として、例えばmutex(ミューテックス)を用いることができる。
1−3)ステップS403
次にブロック切り出し手段214は、切り出し集合Scを作成する。切り出し集合とは、登録済みデータ集合23、33の部分集合を表現するデータ構造であり、ここでは先に選択した最大Nch個の要素データを含む集合である。図8は、切り出し集合の要素データの構造を示す図である。切り出し集合は、図8に示すように、インデクシング可能な形で要素データを保持する集合データ構造として実現される。切り出し集合の要素の値は、進行管理表241および登録済みデータ集合23、33のインデクス値である。ブロック切り出し手段214は、ここで作成した切り出し集合Scに、進行管理表241内にある被照合データ保管領域242に格納されているデータDinを添えて、呼出元の単位照合制御手段215または315にその切り出し結果を返す。
2)ステップS502〜S504
単位照合制御手段215、315は、ブロック切り出し手段から次データブロック情報、すなわち被照合データDinと切り出し集合Scを得る。そして、単位照合制御手段215、315は、切り出し集合Sc(その集合に含まれる要素数をNとする)に含まれる各インデクス値iに対し、登録済みデータ集合のi番目要素と被照合データDinとの1対1の照合処理(のべN回の照合処理)を、並列に実行する。
上記の「1対1の照合処理」は次のように行う。まず、単位照合手段のデータアクセス手段222、322を呼び出して、登録済みデータ集合23、33のi番目要素が置かれた場所Fda(i)を得る。次に被照合データDinの置かれた場所とi番目データ要素の置かれた場所を照合処理手段221、321に送って、被照合データDinとi番目データ要素間の照合処理Fmaを行い、その結果として途中照合結果Riを得る。ここまでが1対1の照合処理である。
単位照合制御手段215、315は、切り出し集合Scに含まれるN要素を、単位照合制御手段が動作するプロセッサ(ホストプロセッサ20またはコプロセッサ30)で利用可能なスレッド数(ThまたはTc)分に重複なく分割する。そして、単位照合制御手段215、315は、それらのスレッド各々に、それぞれN/Th、N/Tc回の照合処理を分担実行させる。
例えば、ホストプロセッサ20のスレッドの場合、ホストプロセッサ20のj番目のスレッド(0≦j≦Th−1)は、Scの N/Th*j番目からN/Th*(j+1)−1番目までのN/Th個の要素に対応する登録済みデータ要素と被照合データDin間の1対1照合処理を行う。このとき、N/ThやN/Tcが整数で割りきれない場合は、一部のスレッドに他より1つ多い要素数が割り当てられる。
3)ステップS505
ステップS502〜S504の並列照合処理の結果、N個の途中照合結果Ri(i∈Sc)を得ると、単位照合制御手段215、315は、N個の途中照合結果Riに対して再帰的に結果収集手段223、323を呼び出して、N個の照合に対するただ1つの切り出し照合結果Rchを求める。ここで「再帰的な結果収集手段の呼び出し」とは、結果収集手段223、323を呼び出して照合結果を得るという操作を繰り返し、N個の途中照合結果Riから最終的に1つの切り出し照合結果Rchを求める、という手順を意味する。すなわち、単位照合制御手段215、315は、N個の照合結果Riをまず2つずつ組にし、各組に対して結果収集手段223、323を呼び出して(以降、結果収集手段223、323の呼び出し処理を「Fre」と表記する。)、N/2個の照合結果を得る。そして、単位照合制御手段215、315は、次にそれらN/2個の照合結果をさらに2つずつ組にして結果収集手段223、323を呼び出してN/4個の照合結果を得る。
4)ステップS506
最後に単位照合制御手段は、切り出し集合Scと切り出し照合結果Rchを結果登録手段216に通知(後述)した後、進行制御手段212からの次の照合処理始動の指示を待つ「待機状態」に入る。
b)結果登録手段の動作
ステップS506にて通知を受けた結果登録手段216の動作の流れを図7に示す。結果登録手段216は、単位照合制御手段215、315から呼び出されるたびに図7に示す一連の動作(S601〜S605)を行い、次の呼び出しを待つ、という動作を繰り返す。
1)ステップS601
結果登録手段216はまず、通知された切り出し集合Scの要素の値をインデクスとする進行管理表241内の要素データの各々に、「集計中状態」を示す処理状態値を設定する。
2)ステップS602
次に結果登録手段216は、最終照合結果領域243の値Raと単位照合制御手段215、315から通知された切り出し照合結果Rchを使って、結果収集手段223、323を呼び出す(Fre)。そして、結果登録手段216は、結果収集手段223、323が返した値を、改めて最終照合結果Raとして最終照合結果領域243に設定する。
Ra値の更新を行う前記一連の処理(S602)は、複数の単位照合制御手段から同時に呼ばれる場合に備え、ホストプロセッサ上の適切な排他制御機構を用いた排他制御区間内で実行される。
3)ステップS603
続いて結果登録手段は、ステップS601で「集計中状態」とした進行管理表241内の各要素データに、「完了状態」を示す処置状態値を設定する。その結果、もし進行管理表の全要素データが「完了状態」になれば、結果登録手段は進行制御手段212に全照合処理完了を通知する。
全照合処理完了の通知を受けた進行制御手段212は、最終照合結果領域243に格納された内容を、アプリケーションインタフェース手段211を介して、呼び出し元のアプリケーション12に返す。アプリケーション12は入出力手段15を介して照合処理結果17を出力する。
このようにして、入力として与えられた被照合データ16と登録済みデータ集合22、33との照合が、ホストプロセッサ20およびコプロセッサ30を用いて並列的に実行される。
以上が本実施形態の動作の説明である。ここで、本実施形態を用いて照合処理システムを開発する場合の作業について説明する。
図10は、第1の実施形態の照合装置を利用した照合処理システムを開発する場合の開発作業の流れを示す図である。図10に示すように、システム設計者は、適切な照合処理アルゴリズムを実装した単位照合手段と、ホスト側制御手段を呼び出すアプリケーション処理手段の2つの部分を、並列化されていない逐次プログラムとして設計する(S701、S702)。そして、システム設計者は、単位照合手段およびアプリケーション処理手段をホスト側で結合して、動作確認を行う(S703)。システム設計者が行わなければならない作業は、以上の設計、製造、および動作確認だけである。
その後、システム設計者は、単位照合手段をコプロセッサに実現させるためのコプロセッサ用実行コードを生成する(S704)。そして、システム設計者は、コプロセッサ用実行コードをコプロセッサ側制御手段に結合させる(S705)。
以上の作業が完了すれば、本実施形態のホスト側制御手段21およびコプロセッサ側制御手段31が、アプリケーションはホスト側とコプロセッサ側の単位照合手段を自動的に利用できるようになる。つまり、照合装置10を利用した照合処理を行うためには、システム開発者は、1組の照合を行う単位照合処理用のプログラム(単位照合処理手段22)を用意し、ホストプロセッサ20用コードとコプロセッサ30用コードを生成するだけでよい。
一方、照合装置10は、進行制御手段212と照合管理手段213と単位照合制御手段215、315は連携して、照合処理を並列分割する。すなわち、単位照合制御手段215、315は、ホストプロセッサ20とコプロセッサ30とが照合処理を並列処理できるように、被処理データごとの単位照合処理に分割する。そして、進行制御手段212が、システム開発者がホストプロセッサ20およびコプロセッサ30用に用意した単位照合処理のコードをそれぞれのプロセッサ上で呼び出す。従って、照合処理全体が、ホストプロセッサ20とコプロセッサ30の全コア上で並列処理される。このとき、システム設計者は、煩雑な並列処理の指示を出す必要はない。
このように、照合処理の並列化のための対応、すなわち、アプリケーションが、ホスト側の単位照合手段22およびコプロセッサ側の単位照合手段32の両方を利用できるようにする処理は、システム設計者ではなく、ホスト制御手段21、コプロセッサ制御手段31によって自動的に行われる。すなわち、本実施形態の照合装置10を利用することにより、システム開発者は、ホストプロセッサとコプロセッサの全コアを活用した高性能な照合システムを容易に構築することができる。
また、本実施形態によれば、コプロセッサ向けの照合処理プログラムをホストプロセッサ向けとは別に開発するためのコストが不要になる。典型的には、ホストプロセッサ向け照合処理ソースプログラムを、コプロセッサ向けにコンパイルし直すだけで、コプロセッサ向けの照合処理プログラムの開発が完了する。
さらに、照合装置10においては、コプロセッサインタフェース手段217とホスト側制御呼び出し手段311が、ホストプロセッサ20とコプロセッサ30との間の複雑な通信を代行する。このように、コプロセッサインタフェース手段217とホスト側制御呼び出し手段311が、ホストプロセッサ20−コプロセッサ30間の複雑な通信をシステム設計者から隠蔽する。また、単位照合制御手段215、315は、ホストプロセッサ20またはコプロセッサ30内の、処理実行中ではないコアに、単位照合処理を割り振る。そして、単位照合制御手段215、315は、並列分割された1単位処理を終えたホストプロセッサ20やコプロセッサ30に、新たな1単位処理を与えるための制御を行う。
そのため、システム開発者が、ホストプロセッサ20とコプロセッサ30の各々への処理配分のための通信や配分調整等の複雑な性能チューニングをする必要がない。従って、システム開発者の負担が軽減される。
なお、図10に示すように、ホストプロセッサ側単独、およびホストプロセッサ側とコプロセッサ側連結での動作テストが、必要に応じて適宜行われてもよい。
以上のように、本実施形態によれば、照合装置10が、システム開発者に代わって、照合処理の効率化や性能向上のための制御を行う。そのため、システム設計者はホストプロセッサ上の逐次処理として所定プログラムを作成するだけよい。従って、本実施形態を適用することによって、ホストプロセッサとコプロセッサを用いた並列高速照合システムを短期間に構築することができる。
(第2の実施形態)
本発明の第2の実施形態は、登録済みデータ集合へのアクセスに先立ってデータプリフェッチを行うものである。
第2の実施形態の照合装置の構成は、第1の実施形態の照合装置10の構成と同じである。ただし、第2の実施形態と第1の実施形態とでは、ブロック切り出し手段214(図2参照)の動作のみが異なる。他の各手段については、第2の実施形態の動作は第1の実施形態と同じである。以下に、適宜、第1の実施形態の図面を参照して、第2の実施形態について説明する。
第2の実施形態におけるブロック切り出し手段の動作214は、単位照合制御手段215からの要求に先立ってブロックを切り出し、そのデータをプリフェッチしてから要求待ちに入る点に特徴がある。以下、図11を用いてその動作ステップを説明する。比較のため、図6(第1の実施形態におけるブロック切り出し手段214の動作)も適宜参照する。
システムが最初に動作を開始したとき、ブロック切り出し手段214は図11のステップS424から動作を開始する。
1)ステップS424
図6のS401と同様に、進行管理表241から「未着手状態」である要素データが最大Nch個見つけ出され、その要素集合が切り出し集合Scとなる。
2)ステップS425
ブロック切り出し手段214が単位照合制御手段215、315に、Scの各要素データが参照している登録済みデータの各要素データのインデクス値を通知する。
指示を受けた単位照合制御手段215は、対応する単位照合手段22、32内のデータアクセス手段222、322に、通知されたインデクス値を与えて登録済みデータ要素の配置場所を得る。そして、単位照合制御手段215は、登録済みデータ要素の配置場所をプリフェッチ(先読み)する。登録済みデータ要素の配置場所は、典型的には、ホストプロセッサ20およびコプロセッサ30の主メモリ(図示なし)である。この場合、ホストプロセッサ20およびコプロセッサ30は、主メモリのデータを、それぞれのプロセッサのキャッシュメモリにプリフェッチする。
このプリフェッチは、ホストプロセッサ20またはコプロセッサ30の命令セットが専用データプリフェッチ命令を備える場合は、その命令を用いて行うことができる。あるいは、プリフェッチは、通常のメモリロード命令を用いてロードデータを破棄することで行うこともできる。
3)ステップS421
ブロック切り出し手段214は単位照合制御手段215から次の要求が来るまで待機する。
4)ステップS422
ブロック切り出し手段214は、次の要求を受けると、ステップS424で準備済みの切り出し集合Scの各要素に対する進行管理表241の要素データの各々に、「単位照合中」を示す処置状態値を設定する(図6のステップS402に相当)。
5)ステップS423
ブロック切り出し手段214は、切り出し集合Scに、進行管理表241内にある被照合データ保管領域242に格納されているデータDinを添えて、呼出元の単位照合制御手段215に返す(図6のステップS403の後半に相当)。
第1の実施形態におけるブロック切り出し手段214の動作と異なり、第2の実施形態におけるブロック切り出し手段214は、単位照合制御手段215からの要求に対して返答した後も、図11のステップS424以降へ実行を進める。そして、図11の各ステップが繰り返し実行される。
第2の実施形態によれば、上述したプリフェッチ動作により、単位照合制御手段215が実際の1対1照合処理を開始する時点で、アクセス対象登録済みデータがプロセッサのキャッシュメモリに載っている可能性が高い。そのため1対1照合処理が高速に行われ、結果として照合処理全体の性能向上につながるという効果がある。
なお、ステップS425でのプリフェッチの方法は、具体的な実現システムや使用するプロセッサアーキテクチャに応じて、上記以外にも種々の方式がありうる。例えば、メモリ空間が高速小容量な領域と低速大容量な領域に分かれており、登録済みデータ集合23、33が通常は低速大容量領域に配置されている場合であれば、ステップS425にて該当データのみ高速小容量領域に転送しておく、といった方式も考えられる。本実施形態では、次に参照する登録済みデータ集合の決定をブロック切り出し手段214が担っている。そのため、近い将来、参照されるデータをプロセッサに近い場所にコピーする種々のプリフェッチ技術は、ステップS425において効果的に行うことができる。
(第3の実施形態)
本発明の第3の実施形態は、照合の本体処理は1台のコプロセッサでのみ行い、ホストプロセッサは全体制御のみを行うものである。図12は、第3の実施形態の照合装置30の全体構成を示すブロック図である。第3の実施形態の照合装置30は、第1の実施形態の照合装置10と比べ、ホストプロセッサ20側に、単位照合制御手段(図2の単位照合制御手段215)と単位照合手段(図2の単位照合手段22)が存在しない。照合装置30の他の構成は、照合装置10と同様である。
第3の実施形態では、進行制御手段212は、照合装置の照合処理開始時に、コプロセッサ側の単位照合制御手段315のみを始動させる。ブロックの切り出しは、コプロセッサ側単位照合制御手段315からの要求に基づいて行われる。照合処理の本体は、コプロセッサ30側の単位照合手段32のみで行われる。単位照合処理の結果の登録は、コプロセッサ30側の単位照合制御手段315からの要求に基づいて行われる。単位照合制御手段315、および単位照合制御手段315から呼び出されるブロック切り出し手段314と結果登録手段216の動作は、図5、図6および図7に示したものと同様である。
第1の実施形態では、ブロック切り出し手段動作のステップS401、S402(図6)および結果登録手段動作のステップS602(図7)において排他制御が行われる。これに対して、第3の実施形態では、これらの排他制御は不要である。なぜなら、ステップS401、S402およびS602が、ホストプロセッサ20とコプロセッサ30の両方から同時に呼び出されることがないためである。
第3の実施形態は、ホストプロセッサ20上で、照合処理以外のアプリケーション処理を行わなければならない場合に適する。なぜなら、ホストプロセッサ20で照合処理を行わないため、ホストプロセッサ20の資源を他のアプリケーションに配分することができるからである。
第3の実施形態はまた、照合処理に特化したシステムを低コストに実現する場合にも適用可能である。なぜなら、コプロセッサ30として、照合処理が得意な並列型プロセッサを採用する一方、全体制御用のホストプロセッサ20として、比較的低機能で安価なプロセッサを採用することができるからである。このようなプロセッサを用いることによって、照合性能を落とすことなく、システムコストを下げることが可能である。
(第4の実施形態)
図13は、本発明の第4の実施形態の照合装置40の全体構成を示すブロック図である。第4の実施形態の照合装置40の特徴は、1つのホストプロセッサと複数のコプロセッサで実現されていることである。照合処理本体は、ホストプロセッサ20上の単位照合手段22に加え、各コプロセッサ30−1〜30−n(nはコプロセッサの個数)上の各単位照合手段32−1〜32−nで並列に実行される。
第4の実施形態は、コプロセッサ30−1〜30−n側を構成する各要素、ホスト側制御呼び出し手段311、単位照合制御手段315、単位照合手段32およびその内部構成要素がコプロセッサの台数分だけ存在する。そして、コプロセッサ30−1〜30−n側のホスト側制御呼び出し手段311−1〜311−nが、ホストプロセッサ20側にただ1つ存在するコプロセッサインタフェース手段217と接続されている。以上の点を除き、第4の実施形態の照合装置40の構成は、第1の実施形態の照合装置10と同様である。
第4の実施形態では、進行制御手段212は、照合装置40の照合処理開始時に、ホストプロセッサ20側の単位照合制御手段215に加え、コプロセッサ30−1〜30−n上の各々の単位照合制御手段315−1〜315−nを始動させる。これら(n+1)個の単位照合制御手段が、ホストプロセッサ側に1つずつ存在するブロック切り出し手段214および結果登録手段216を介して照合管理手段213にある進行管理表241や最終照合結果領域243にアクセスし、並列的に照合処理を進める。その際、図6のステップS401、S402、および図7のステップS602に課された排他制御により、これら(n+1)個の単位照合制御手段215からの同時アクセスが正しく行われることが保証される。単位照合制御手段215、および単位照合制御手段215から呼び出されるブロック切り出し手段214と結果登録手段216の動作は、図5、図6、図7に示したものと同様である。
なお、コプロセッサ30−1〜30−n側の登録済みデータ集合33は、コプロセッサ30−1〜30−nの各々のための記憶手段34−1〜34−nに、1セットずつ同内容のものが配置される。そして、コプロセッサ側の各単位照合手段32−1〜32−nは、対応するコプロセッサ30−1〜30−nのための記憶手段34−1〜34−nに記憶された登録済みデータ集合を参照することを基本動作として実行する。しかし、コプロセッサ30−1〜30−nのすべてからアクセス可能な、共有の記憶部がある場合は、共有の記憶部にコプロセッサ側登録済みデータ集合が1組のみ配置され、コプロセッサ30−1〜30−n側の単位照合手段32−1〜32−nが、その共有の記憶部の登録済みデータ集合をアクセスするようにしてもよい。
(第5の実施形態)
具体的な実施例として、本発明を利用して顔照合による会員照合システムを構築する例を説明する。
会員照合システムの全体構成を図14に示す。本実施形態の中心は照合装置910であり、その照合装置910は次のものを含む。
1)ホストプロセッサ
ホストプロセッサ920として、サーバ用マイクロプロセッサが1組使用される。例えば、一般に市販されているサーバ用プロセッサで、内部に複数コアを備えるものが使用可能である。
2)コプロセッサ
コプロセッサ930として、ホストプロセッサ920に接続可能で、OpenCLでサポートされるコプロセッサが1組使用される。例えば、市販のGPUが使用可能である。
3)NIC(ネットワークインタフェースカード)
照合装置910の外部との通信用にNIC(Network Interface Card。ネットワークインタフェースカード)915が1組使用される。例えば、市販の有線LAN用通信カードが使用可能である。
4)OS(オペレーティングシステム)
OS(Operating System。オペレーティングシステム)925として、ホストプロセッサ920上で動作するOSが使用される。市販のサーバ用プロセッサ上で動作するOSには、各種のものが市販されている。
5)OpenCL処理系
コプロセッサ930の制御機構として、ホストプロセッサ920およびコプロセッサ930上で動作する、OpenCL処理系926が使用される。このような処理系も、各種のものが市販されている。
6)記憶装置および参照データ
事前登録データやプログラムを記憶するハードディスク装置911、およびその中に記録された、登録会員の顔特徴量データ集合914が使される。登録済顔特徴量データ集合914は、会員照合システム起動時にホストプロセッサ920およびコプロセッサ930の主メモリ上に読み込まれ、メモリ上登録済データ集合923、933として参照される。
会員照合アプリケーションプロセス912、ホスト側制御プロセス921、コプロセッサ側制御プロセス931は、第1の実施形態におけるアプリケーション12、ホスト側制御手段21と単位照合手段22、コプロセッサ側制御手段31と単位照合手段32に相当する機能を、OS925およびOpenCL926上で動作するソフトウェアプロセスとして実装したものである。これに関しては後述する。
照合装置910は、以上の構成要素を含む。
会員照合システムは、照合装置910のほか、認識カメラ(図示なし)、ディスプレイ装置(図示なし)を含む。
認識カメラは、会員の顔画像を撮影して顔特徴量データに変換する。そして、認識カメラは、顔特徴量データを、被照合データ916として照合装置910に入力する。
ディスプレイ装置は、照合装置910が照合した結果情報である処理結果917を適当な形で表示する。
次に、ホストプロセッサ920およびコプロセッサ930上で動作するソフトウェア関連部分について、図15を参照して詳しく説明する。図15は、第5の実施形態の会員照合システムにおけるソフトウェアの内部構成を示す図である。
会員照合アプリケーションプロセス912と、ホスト側制御プロセス921は、ホストプロセッサのOS925上のソフトウェアプロセスであり、Socket等、OSがサポートするプロセス間通信機構を用いて両プロセスは互いにやりとりを行う。
コプロセッサ側プロセス931は、コプロセッサのOpenCL API(Application Program Interface。アプリケーションプログラムインタフェース)を利用したソフトウェアであり、OpenCL機能を用いてホスト側制御プロセス921と通信を行う。
ホスト側制御プロセス921は、進行制御スレッド941(図2の進行制御手段212に相当)と、単位照合制御スレッド943(図2の単位照合制御手段215に相当)と、照合管理ライブラリ942(図2の照合管理手段213に相当)と、対コプロセッサ通信ライブラリ944(図2のコプロセッサインタフェース手段217に相当)を含む。照合管理ライブラリ942と対コプロセッサ通信ライブラリ944は、進行制御スレッド941と単位照合制御スレッド943から呼び出される。進行制御スレッド941と単位照合制御スレッド943はシステム開始時に生成され、システム稼働期間を通じて生存し続ける。
照合管理ライブラリ942は、ブロック切り出し手段952(図2のブロック切り出し手段214に相当)と、結果登録手段953(図2の結果登録手段216に相当)を含む。また、照合管理ライブラリ942は進行管理表(図4の進行管理表241)と被照合データ(図4の被照合データ242)と最終照合結果(図4の最終照合結果243)に相当するデータ構造を内部にもつ。
ホスト側制御プロセス921には単位照合プラグイン922が結合されている。単位照合プラグイン922は、システム開発者が所定の仕様に沿って作成したソフトウェア関数群であって、3つの関数、すなわち、照合処理関数957、データアクセス関数958、結果収集関数959を含む。照合処理関数957、データアクセス関数958、結果収集関数959はそれぞれ、図2の照合処理手段221、データアクセス手段222、結果収集手段223に相当する機能をホストプロセッサ920向けソフトウェアで実現したものである。
コプロセッサ側制御プロセス931は、単位照合制御スレッド961(図2の単位照合制御手段315に相当)と、単位照合制御スレッド961から呼び出される対ホスト通信ライブラリ962を含む。単位照合制御スレッド961はシステム開始時に生成され、システム稼働期間を通じて生存し続ける。
ホストプロセッサ1側制御プロセス921と同様に、コプロセッサ側制御プロセス931には単位照合プラグイン932が結合されている。単位照合プラグイン932は、照合処理関数967、データアクセス関数968、結果収集関数969の各関数を含む。照合処理関数967、データアクセス関数968、結果収集関数969の機能は、それぞれ、ホスト側単位照合プラグイン922に含まれる照合処理関数957、データアクセス関数958、結果収集関数959と同様である。ただし、照合処理関数967、データアクセス関数968、結果収集関数969は、それぞれの機能がコプロセッサ向けソフトウェアで実現されたものとなっている。
なお、コプロセッサ側制御プロセス931の単位照合制御スレッド961および単位照合プラグイン932の各関数による、ホストプロセッサ20側のデータ構造へのアクセス、あるいはホスト側制御プロセス921との制御情報の交換は、直接OpenCL APIは呼び出されず、対ホスト通信ライブラリ962を介して行われる。
進行制御スレッド941は、内部にアプリケーションインタフェース機能951(図2のアプリケーションインタフェース手段211に相当)をもつ。進行制御スレッド941は、会員照合アプリケーションプロセス912から照合要求を受けると、照合管理ライブラリ942を呼び出して照合管理ライブラリ内の進行管理表を初期化する。そして、進行制御スレッド941は、ホスト側制御プロセス921およびコプロセッサ側制御プロセス931のそれぞれの単位照合制御スレッド943、961に通知し、単位照合制御スレッド943、961の動作を開始させる。
ホストプロセッサ920側およびコプロセッサ930側の各スレッド、ライブラリ、およびそれらのスレッド、ライブラリの中の各機能単位の動作は、第1の実施形態で説明したものと同等である。
そこで次に、本実施形態で特徴的な、単位照合プラグイン922、932と、それを制御する単位照合制御スレッド943、961について説明する。以下では、ホストプロセッサ930側を例として説明するが、コプロセッサ930側についても同様である。
単位照合プラグイン922は、前述のように、3つの関数、照合処理関数957、データアクセス関数958、結果収集関数959、を含む。
照合処理関数Fmaは、1つの被照合データDinと1つの登録済データ要素Dstを入力とし、被照合データDinと登録済みデータDstを照合した結果である照合結果スコア値Rを返す関数である。被照合データDinと登録済みデータDstは参照渡し、すなわち実データが置かれた場所へのポインタとして照合処理関数Fmaに渡される。照合処理関数Fmaは、被照合データDinと登録済みデータDstの実データを参照するのみで、実データの変更は行わない。また照合処理関数Fmaは、マルチスレッドセーフとなるように、一時作業用データの保存にはスタック領域を使う等の措置を講じて実装される。
データアクセス関数Fdaは、登録済データ要素のインデクスiを入力とし、当該データ要素が置かれた場所の、当該登録済データ集合の先頭からのオフセット値を返す関数である。各データ要素が固定長の場合、このオフセット値は、インデクス値と要素サイズの積として容易に求められるが、データ要素が可変長の場合は別途用意したインデクスデータ等を用いて算出される。
結果収集関数Freは再帰的な照合結果計算に用いられる関数である。結果収集関数Freは、入力として、iとRiの組(i,Ri)が2組与えられる。ここでiは登録済データ要素のインデクス値、Riは被照合データとi番目データ要素との照合結果スコア値、である。結果収集関数Freは、2組の入力を比較して最良スコアをもつ組を選び、その組(i,Ri)を返す。
上記3関数、照合処理関数Fma、データアクセス関数Fda、結果収集関数Freは、コプロセッサ930側についても同じ機能をもつため、コプロセッサ930側の関数の説明は省略する。
次に図16を参照して単位照合制御スレッド943の動作を説明する。
1)ステップS521
単位照合制御スレッド943は、照合管理ライブラリ942内のブロック切り出し機能952を呼び出して、単位照合制御スレッド943が動作しているホストプロセッサ920で次に処理すべきブロックの集合Scと被照合データDinを得る。S521の処理は、図5のステップS501に相当する処理である。
2)ステップS522
単位照合制御スレッド943は、単位照合制御スレッド943が動作しているホストプロセッサ920上でTh個のスレッドを作業スレッドとして作成する。スレッドは、OSやそのOSに関連する既存のミドルウェアが提供するスレッドライブラリ、例えば、POSIX(Portable Operating System Interface)スレッドやOpenMP(Open Multiprocessing。登録商標)を用いて作成される。Thは、第1の実施形態におけるホスト側単位照合手段22の実行に利用可能なホストプロセッサ20のスレッドの数に相当するもので、本実施形態では単位照合プラグイン922の実行に利用可能なホストプロセッサ920のスレッドの数である。単位照合制御スレッド943は、S522で作成されたTh個のスレッドの各々に、次のステップS523の処理を行わせた後、Th個のスレッド処理の完了を同期させてから、ステップS525の処理へ進む。
3)ステップS523
単位照合制御スレッド943は、部分結果Rjを初期化した後、部分集合Sc[j]の各要素iに対し、次の処理(3−1)、(3−2)を実行する。
(3−1)単位照合制御スレッド943は、iを引数としてデータアクセス関数Fdaを呼び出し、さらに、データアクセス関数Fdaの返値とDinを引数として照合処理関数Fmaを呼び出し、照合処理関数Fmaの返値をRtmpとする。
(3−2)単位照合制御スレッド943は、RjとRtmpを引数として結果収集関数Freを呼び出し、関数Freの返値を再びRjにセットする。
ここでSc[j]は集合Scのうちj番目の作業スレッドに割り当てられた部分集合であり、ScのうちN/Th*j番目からN/Th*(j+1)−1番目までのN/Th個の要素からなる集合である(第1の実施形態のステップS502〜S504の説明参照)。
ステップS523の処理により、j番目の作業スレッドが更新したRjの最終結果として、j番目の作業スレッドが分担した照合処理部分において最良の照合結果を与える要素に関する情報が保持される。
なお、S522からS523までの処理は、マルチスレッド実行される。図15では、マルチスレッド実行される最終ステップがS524と表記されている。
4)ステップS525
単位照合制御スレッド943は、ステップS523で求めた各Rjに対し再帰的に結果収集関数Freを適用し、与えられたScに対する最良の照合結果Rchを求める。
なお、第1の実施形態ではScに対する最良の照合結果の算出は、並列処理完了後(図5のステップS505)で一括して行われる。これに対して、本実施形態では、j番目の作業スレッドが分担した部分の最良照合結果の算出はj番目の作業スレッド自身によって行われ(ステップS523)、その後、各作業スレッドが求めた部分結果(延べTh個)に対する最良照合結果の算出が行われる(ステップS525)。以上の所定によって、最良照合結果算出に要する時間の短縮が図られる。
5)ステップS526
単位照合制御スレッド943は、照合管理ライブラリ942内の結果登録機能953を呼び出して、ステップS521で与えられたScに対する最良照合結果を登録する。S526の処理は、図5のステップS505に相当する処理である。
S521からS526までの各ステップは、ホストプロセッサ920側の単位照合制御スレッド943の動作である。コプロセッサ930側の単位照合制御スレッド961の動作も同様である。
ただし、単位照合制御スレッド961は、ホストプロセッサ920側のデータ構造へのアクセスを、対ホスト通信ライブラリ962を介して行う。すなわち、コプロセッサ930側の単位照合制御スレッド961の動作は、以下の2点でホストプロセッサ920側の単位照合制御スレッド943の動作と異なる。
1’)コプロセッサ側ステップS521
単位照合制御スレッド961は、対ホスト通信ライブラリ962を介してホストプロセッサ920側の照合管理ライブラリ942内のブロック切り出し機能952を呼び出す。
5’)コプロセッサ側ステップS526
単位照合制御スレッド961は、対ホスト通信ライブラリ962を介してホストプロセッサ920側の照合管理ライブラリ942内の結果登録機能953を呼び出す。
第5の実施形態では顔画像の照合を例として取り上げたが、本実施形態の照合装置が適用可能な処理は顔画像の照合にとどまらない。すなわち、本実施形態の照合装置は、虹彩、指紋等の各種生体情報の照合、文字列情報の照合、波形等の時系列変化情報の照合など、様々な照合システムに適用可能である。
(第6の実施形態)
第1ないし第5の実施形態における照合処理とは、2つの情報の一致の有無を判定したり、類似度を求めたりする処理である。第1ないし第5の実施形態の説明から明らかなように、本発明において照合処理の具体的内容、例えば一致の有無の判定方法、類似度の定義や計算方法は重要ではない。本発明は、「2つの情報の集合」に対して複数回繰り返される所定の「単位処理」を実行する際に、並列処理が可能となるように情報の集合を分割し、複数回の単位処理を、複数のプロセッサを用いて並列に処理する技術に関するものである。例えば、「2つの情報の集合」、「単位処理」とは、それぞれ、第1の実施形態における、切り出し集合および被照合データ、1対1照合処理である。このように、第1の実施形態における単位処理とは、対象処理の全体をなす照合処理が並列分割され、並列処理される処理である。
単位処理は、同じ内容で繰り返し実行される単独の処理であってもよく、対象処理が並列分割されたものである必要はない。単独処理の単位処理とは、例えば、n個のデータまたはデータの組に対して同一の単位処理を行い、n個の結果を得るような処理である。この場合、n個の結果は独立したものであり、n個より少ない結果に集約される必要はない。実施形態で示した照合処理は、n個の単位処理の結果が1つの最終結果に集約される例である。
実施形態で示した照合処理の入力は、登録済みデータ集合と、被照合データとの2つの集合である。単位処理への入力は、単位処理の内容に従った、3個以上のデータ集合の、それぞれの要素データからなるデータの組であってもよい。
単位処理への入力が2個以上のデータ集合の、それぞれの要素データからなるデータの組であるとき、それぞれのデータ集合の要素データの個数が同じである必要もない。例えば、m個の要素データを含むデータ集合と、n個の要素データを含むデータ集合とを入力のデータ集合とし、それぞれの要素データの(m×n)個の組について、単位処理を行ってもよい。実施形態で示された照合処理では、1個の被照合データからなるデータ集合と、n個の登録済みデータ要素を含む登録済みデータ集合を入力として単位処理が実行される。さらに、実施形態で示した照合処理では、n個の単位処理の結果が1つの最終結果に集約される。
単位処理への入力は、2個以上のデータ集合の、それぞれの要素データからなるデータの組である必要はない。単位処理は、1個のデータ集合の要素データに対して実行されるものであってもよい。このような処理には、例えば、n個の要素データに対して、例えば自乗演算等、同一の演算を行い、n個の結果を得るような処理がある。この場合、n個の演算結果をすべて加算する等、n個より少ない最終結果に集約する処理を行ってもよい。
上記の、単位処理の複数の結果を、それより個数が少ない最終結果に集約する集約処理は、単位処理とは独立した処理である。従って、集約処理を実行する主体は、並列処理を行ういずれかのプロセッサであっても、並列処理を行うプロセッサ以外のプロセッサであってもよい。
以上を整理すると、本発明の並列処理装置が備える必須の構成は図17のようになる。図17は、第6の実施形態の並列処理装置100の構成を示すブロック図である。
並列処理装置100は、第1のプロセッサ101、第2のプロセッサ102、選択手段103、第1のプロセッサ制御手段104、第2のプロセッサ制御手段105を備える。
選択手段103は、第1のプロセッサ101および第2のプロセッサ102の性能または機能を示す所定の指標に基づいて、データ集合140から第1の部分集合151および第2の部分集合152を選択する。プロセッサの、性能または機能を示す指標とは、例えば、第1のプロセッサ101および第2のプロセッサ102を用いて並列に実行可能な処理の数である。すなわち、指標として、プロセッサの総数(本実施形態では、”2”)や、単位処理の実行に利用可能な第1のプロセッサ101および第2のプロセッサ102のそれぞれのスレッド数、等を用いることができる。
第1のプロセッサ制御手段104は、第1の部分集合151に含まれる第1のデータ121を第1のプロセッサ101に入力する。第2のプロセッサ制御手段105は、第2の部分集合152に含まれる第2のデータ122を第2のプロセッサ102に入力する。
第1のプロセッサ101は、第1のプログラム111を実行する。第1のプログラム111は、データ集合140に含まれるデータを入力として実行される単位処理の処理手順を規定する。第1のプロセッサ101は、入力された第1のデータ121に対して、第1のプログラム111に規定された単位処理を実行し、第1の結果131を出力する。
第2のプロセッサ102は、第2のプログラム112を実行する。第2のプログラム112も、第1のプログラム111と同一内容の、データ集合140に含まれるデータを入力として実行される単位処理の処理手順を規定する。第2のプロセッサ102は、入力された第2のデータ122に対して、第2のプログラム112に規定された単位処理を実行し、第2の結果132を出力する。
以上のように、並列処理装置100は、1個のデータ集合140に含まれるデータを、第1のプロセッサ101および第2のプロセッサ102を用いて並列処理する。データ集合140の要素データからの、第1のプロセッサ101の処理対象の第1の入力データ121および第2のプロセッサ102の処理対象の第2の入力データ122の選択は、選択手段103によって行われる。また、第1のプロセッサ101および第2のプロセッサ102への、第1のデータ121、第2のデータ122の入力は、それぞれ、第1のプロセッサ制御手段104、第2のプロセッサ制御手段105によって行われる。
従って、並列処理装置100の利用者は、データ集合140に含まれる要素データである、第1のデータ121および第2のデータ122に対して実行すべき処理を、同一内容の第1のプログラム111および第2のプログラム112として用意すればよい。すなわち、並列処理装置100によると、複数の単位処理を、複数のプロセッサで効率よく、簡便に並列処理することができる。
なお、選択手段103、第1のプロセッサ制御手段104、第2のプロセッサ制御手段105の具体的な実現手段は限定されない。
すなわち、選択手段103は、第1のプロセッサ101もしくは第2のプロセッサ102、または第1のプロセッサ101および第2のプロセッサ102以外の第3のプロセッサ(図示なし)が所定の処理プログラムを実行することによるソフトウェア処理により実現されてもよい。
第1のプロセッサ制御手段104は、第1のプロセッサ101または第3のプロセッサが所定の処理プログラムを実行することによるソフトウェア処理により実現されてもよい。
第2のプロセッサ制御手段105は、第2のプロセッサ102または第3のプロセッサが所定の処理プログラムを実行することによるソフトウェア処理により実現されてもよい。
あるいは、選択手段103、第1のプロセッサ制御手段104、第2のプロセッサ制御手段105のそれぞれは、専用のハードウェアによって実現されてもよい。
(第7の実施形態)
図18は、第7の実施形態の並列処理装置160の構成を示すブロック図である。第7の実施形態の並列処理装置160は、2つのデータ集合の要素データを入力とする単位処理を並列に実行する。
並列処理装置160は、第1のプロセッサ101、第2のプロセッサ102、選択手段106、第1のプロセッサ制御手段107、第2のプロセッサ制御手段108を備える。
選択手段106は、第1のプロセッサ101および第2のプロセッサ102の性能または機能を示す所定の指標に基づいて、第1のデータ集合141から第1の部分集合151および第2の部分集合152を選択する。同様に、選択手段106は、上記指標に基づいて、第2のデータ集合142から第3の部分集合153および第の部分集合154を選択する。

第1のプロセッサ制御手段107は、第1の部分集合151に含まれる第1のデータ121、および第3の部分集合153に含まれる第3のデータ123を第1のプロセッサ101に入力する。第2のプロセッサ制御手段108は、第2の部分集合152に含まれる第2のデータ122、および第4の部分集合154に含まれる第4のデータ124を第2のプロセッサ102に入力する。
第1のプロセッサ101は、第1のプログラム113を実行する。第1のプログラム113は、第1のデータ集合141および第2のデータ集合142に含まれる、2つのデータを入力として実行される単位処理の処理手順を規定する。第1のプロセッサ101は、入力された第1のデータ121および第3のデータ123に対して、第1のプログラム113規定された単位処理を実行し、第1の結果131を出力する。
第2のプロセッサ102は、第2のプログラム114を実行する。第2のプログラム114も、第1のプログラム113と同一内容の、第1のデータ集合141および第2のデータ集合142に含まれる、2つのデータを入力として実行される単位処理の処理手順を規定する。第2のプロセッサ102は、入力された第2のデータ122および第4のデータ124に対して、第2のプログラム114に規定された単位処理を実行し、第2の結果132を出力する。
以上のように、並列処理装置160は、2個のデータ集合に含まれるデータを、第1のプロセッサ101および第2のプロセッサ102を用いて並列処理する。第1のデータ集合141および第2のデータ集合142の要素データからの、第1のプロセッサ101および第2のプロセッサ102の処理対象の2つの入力データ122の選択は、選択手段106によって行われる。また、第1のプロセッサ101および第2のプロセッサ102への2つのデータの入力は、それぞれ、第1のプロセッサ制御手段107、第2のプロセッサ制御手段108によって行われる。従って、並列処理装置160の利用者は、第1のデータ集合141および第2のデータ集合142のそれぞれに含まれる要素データに対して実行すべき処理を、同一内容の第1のプログラム113および第2のプログラム114として用意すればよい。すなわち、並列処理装置160によると、複数の単位処理を、複数のプロセッサで効率よく、簡便に並列処理することができる。
図19は、第7の実施形態の並列処理装置の変形例の構成を示すブロック図である。第7の実施形態の並列処理装置170は、2つのデータ集合、第1のデータ集合141および第2のデータ集合142の要素データを入力とする単位処理を並列に実行するが、第1のデータ集合141は、固定されたデータ集合である。固定されたデータ集合とは、選択手段103によってデータ要素が選択されない集合であることを意味する。すなわち、第1ないし第5の実施形態の照合装置における、外部からの入力データである被照合データの集合が、本実施形態の第1のデータ集合141に相当し、登録済みデータ集合が第2のデータ集合に相当する。
第1のプロセッサ101、第2のプロセッサ102は、それぞれ、第1のプログラム115、第1のプログラム116を実行する。
さらに、並列処理装置170は、並列処理装置160の構成要素に加え、出力手段109を備える。出力手段109は、単位処理が複数回実行された結果得られる複数の処理結果から、所定の基準に従って、1個の最終結果を生成し、出力する。
n個の単位処理の結果を、1個の最終結果に集約する場合、その集約処理は、単位処理の結果が出力されるごとに処理されてもよい。この場合は、単位処理、集約処理ともに、複数のプロセッサで効率よく、簡便に並列処理することができる。
あるいは、n個の単位処理の結果がすべて揃った後、集約処理を行ってもよい。この場合は、単位処理のみについて、並列処理が可能である。
なお、本実施形態においても、選択手段106、第1のプロセッサ制御手段107、第2のプロセッサ制御手段108の具体的な実現手段は限定されない。
すなわち、選択手段103は、第1のプロセッサ101もしくは第2のプロセッサ102、または第1のプロセッサ101および第2のプロセッサ102以外の第3のプロセッサ(図示なし)によるソフトウェア処理により実現されてもよい。第1のプロセッサ制御手段104は、第1のプロセッサ101または第3のプロセッサによるソフトウェア処理により実現されてもよい。第2のプロセッサ制御手段105は、第2のプロセッサ102または第3のプロセッサによるソフトウェア処理により実現されてもよい。
あるいは、選択手段103、第1のプロセッサ制御手段104、第2のプロセッサ制御手段105のそれぞれは、専用のハードウェアによって実現されてもよい。
なお、本発明におけるホストプロセッサとコプロセッサは、各種の形態で処理装置に内蔵されうる。例えば、ホストプロセッサとコプロセッサが、それぞれ別個のプロセッサチップとして処理装置に内蔵されてもよい。あるいは、1個のプロセッサチップに内蔵された、2個以上のCPUコアのうち、1個のCPUコアがホストプロセッサとして、他の1個以上のCPUコアがコプロセッサと用いられてもよい。すなわち、処理装置が論理的に複数個のCPUを内蔵してさえいれば、いずれかのCPUをホストプロセッサとして使用し、他のCPUをコプロセッサとして使用し、本発明を適用することができる。ホストプロセッサとコプロセッサとして用いられる複数のCPUの、具体的なチップ構成は限定されない。
本発明におけるプログラムは、ROM(Read Only Memory)、RAM(Random Access Memory)、フラッシュメモリ等の半導体記憶装置、光ディスク、磁気ディスク、光磁気ディスク等、非一時的な媒体に格納されてもよい。
また、以上の実施形態は各々他の実施形態と組み合わせることができる。
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
データ集合に含まれるデータを入力として実行される単位処理を規定した第1のプログラムを、入力されたデータに対して実行し、第1の結果を出力する第1のプロセッサと、
前記単位処理を規定した第2のプログラムを、入力された2つのデータに対して実行し、第2の結果を出力する第2のプロセッサと、
前記第1のプロセッサおよび前記第2のプロセッサの性能または機能を示す所定の指標に基づいて、前記データ集合から第1の部分集合および第2の部分集合を選択する選択手段と、
前記第1の部分集合に含まれる第1のデータを前記第1のプロセッサに入力する第1のプロセッサ制御手段と、
前記第2の部分集合に含まれる第2のデータを前記第2のプロセッサに入力する第2のプロセッサ制御手段と、を備え、
前記第1のプロセッサおよび前記第2のプロセッサによって、前記第1のプログラムおよび前記第2のプログラムは並列に実行される
ことを特徴とする並列処理装置。
(付記2)
前記第1のプログラムおよび前記第2のプログラムは、第1の前記データ集合に含まれるデータおよび第2の前記データ集合に含まれるデータを入力として実行される前記単位処理を規定し、
前記選択手段は、前記指標に基づいて、前記第1のデータ集合から前記第1の部分集合および前記第2の部分集合を選択し、前記第2のデータ集合から第3の部分集合および第4の部分集合を選択し、
前記第1のプロセッサ制御手段は、前記第1の部分集合に含まれる前記第1のデータおよび前記第3の部分集合に含まれる第3のデータを前記第1のプロセッサに入力し、
前記第2のプロセッサ制御手段は、前記第2の部分集合に含まれる前記第2のデータおよび前記第4の部分集合に含まれる第4のデータを前記第2のプロセッサに入力する、
ことを特徴とする付記1に記載の並列処理装置。
(付記3)
前記指標は、前記第1のプロセッサおよび前記第2のプロセッサを用いて並列に実行可能な処理の数である
ことを特徴とする付記1または2に記載の並列処理装置。
(付記4)
所定の判断基準に基づいて、前記第1の結果または前記第2の結果を最終結果として出力する出力手段を備える
ことを特徴とする付記1ないし3のいずれか1項に記載の並列処理装置。
(付記5)
前記第1のプログラムおよび第2のプログラムは、第1の前記データ集合に含まれるデータおよび少なくとも2個のデータを含む第2の前記データ集合に含まれるデータを入力として実行される前記単位処理を規定し、
前記選択手段は、前記指標に基づいて、前記第2のデータ集合から第3の部分集合および第4の部分集合を選択し、
前記第1のプロセッサ制御手段は、前記第1のデータ集合に含まれる前記第1のデータおよび前記第3の部分集合に含まれる第3のデータを前記第1のプロセッサに入力し、
前記第2のプロセッサ制御手段は、前記第2のデータ集合に含まれる前記第2のデータおよび前記第4の部分集合に含まれる第4のデータを前記第2のプロセッサに入力し、
前記単位処理は、前記第1のデータ集合に含まれる被照合データである前記第1のデータと予め登録された前記第2のデータ集合に含まれる登録済データである前記第2のデータとの照合、および入力された前記被照合データである前記第3のデータと前記登録済データである前記第4のデータとの照合を行い、前記被照合データと前記登録済データとの一致の度合いを示す照合スコアを算出する照合処理であり、
前記照合スコアが最も高い前記登録済データを前記最終結果として出力する出力手段をさらに備える
ことを特徴とする付記1に記載の並列処理装置。
(付記6)
前記第1のプロセッサは、所定の第3のプログラムを実行することによって、
前記照合処理の進行状況を管理する照合管理手段と、
前記登録済データ集合から、未照合の前記登録済みデータの集合を、ブロックとして選び出すブロック切り出し手段と、
前記出力手段からの前記最終結果を得て、前記進行状況を前記照合管理手段に伝えるとともに、前記登録済データ集合の全体についての前記照合スコアが最高である前記登録済データを求める結果登録手段と、
前記ブロック切り出し手段、前記結果登録手段と、コプロセッサ上の前記結果登録手段との間の通信を行う第1の通信手段と
を実現し、
前記第2のプロセッサは、所定の第4のプログラムを実行することによって、
1組のデータ間の照合処理を行う単位照合手段と、
前記ブロックの各データと前記被照合データとの前記照合処理を実行し、前記ブロック内での最高の前記照合スコアを前記最終結果として求める単位照合制御手段と
を実現し、
前記第1のプロセッサおよび前記第2のプロセッサは、前記ブロック内の前記登録済みデータと前記被照合データとの照合を並列処理する
ことを特徴とする付記5に記載の並列処理装置。
(付記7)
前記第1のプロセッサおよび上で所定の仕様に沿って前記照合処理を行う第1の単位照合手段と、
前記第2のプロセッサ上で前記仕様に沿って前記照合処理を行う第2の単位照合手段と、
前記第1のプロセッサ上にあって前記登録済データ集合の各データと前記被照合データとの照合処理の進行状況を管理する照合管理手段と、を備え、
前記選択手段は、前記第1のプロセッサ上にあって前記登録済データ集合から1つないし複数の未照合のデータの集合をブロックとして選び出すと、
前記第1のプロセッサ制御手段は、前記選び出したブロックの各データと前記被照合データを前記第1のプロセッサに与えて並列に前記照合処理を行わせ、前記ブロック内での最高照合スコアを第1の結果として求め、
前記第2のプロセッサ制御手段は、前記選び出したブロックの各データと前記被照合データを前記第2のプロセッサに与えて並列に前記照合処理を行わせ、前記ブロック内での最高照合スコアを第2の結果として求め、
前記出力手段は、前記第1の結果および第2の結果に基づいて、前記最終結果を求める
ことを特徴とする付記6に記載の並列処理装置。
(付記8)
前記第1のプロセッサ制御手段は、前記第1の部分集合から、前記第1のプロセッサへ入力する前記第2のデータを先読みし、
前記第2のプロセッサ制御手段は、前記第2の全体集合から、前記第2のプロセッサへ入力する前記第2のデータを先読みする
ことを特徴とする、付記1ないし7のいずれか1項に記載の並列処理装置。
(付記9)
前記第1のプログラムは、所定の共通言語を用いて前記データ処理の手順が規定された共通プログラムから、前記第1のプロセッサ用の第1の言語を用いたプログラムに変換されたものであり、
前記第2のプログラムは、前記共通プログラムから前記第2のプロセッサ用の第2の言語を用いたプログラムに変換されたものである
ことを特徴とする付記5ないし8のいずれか1項に記載の並列処理装置。
(付記10)
並列処理装置に備えられた第1のプロセッサおよび第2のプロセッサの性能または機能を示す所定の指標に基づいて、データ集合から第1の部分集合および第2の部分集合を選択し、
前記第1の部分集合に含まれる第1のデータを前記第1のプロセッサに入力し、
前記第2の部分集合に含まれる第2のデータを前記第2のプロセッサに入力し、
前記データ集合に含まれるデータを入力として実行される単位処理を規定した第1のプログラムを、前記第1のプロセッサを用いて、前記第1のデータに対して実行して第1の結果を出力し、
前記単位処理を規定した第2のプログラムを、前記第2のプロセッサを用いて、前記第2のデータに対して前記第1のプログラムと並列に実行して第2の結果を出力する
ことを特徴とする並列処理方法。
(付記11)
データ集合に含まれるデータを入力として実行される単位処理を規定した第1のプログラムを入力されたデータに対して実行し、第1の結果を出力する第1のプロセッサ、および前記単位処理を規定した第2のプログラムを入力されたデータに対して実行し、第2の結果を出力する第2のプロセッサを含む並列処理装置に備えられたプロセッサを、
前記第1のプロセッサおよび前記第2のプロセッサの性能または機能を示す所定の指標に基づいて、前記データ集合から第1の部分集合および第2の部分集合を選択する選択手段、および
前記第1の部分集合に含まれる第1のデータを前記第1のプロセッサに入力する第1のプロセッサ制御手段、または
前記第2の部分集合に含まれる第2のデータを前記第2のプロセッサに入力する第2のプロセッサ制御手段として機能させるための並列処理プログラムであって、
前記第1のプロセッサおよび前記第2のプロセッサによって、前記第1のプログラムおよび前記第2のプログラムは並列に実行される並列処理プログラム
を格納することを特徴とする非一時的な記憶媒体。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2013年2月26日に出願された日本出願特願2013−035789を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、ドアカメラ、虹彩入力機器、指紋入力機器等と組み合わせて入出場管理を行う生体認証セキュリティシステムに、また、銀行や役所の窓口あるいは国境等での本人確認システムに利用可能である。また監視カメラと組み合わせて重要施設や街頭の無人監視システムにも利用可能である。
121 第1のデータ
122 第2のデータ
123 第3のデータ
124 第4のデータ
131 第1の結果
132 第2の結果
133 最終結果
151 第1の部分集合
152 第2の部分集合
153 第3の部分集合
154 第4の部分集合

Claims (7)

  1. データ集合に含まれるデータを入力として実行される単位処理を規定した第1のプログラムを、入力されたデータに対して実行し、第1の結果を出力する第1のプロセッサと、
    前記単位処理を規定した第2のプログラムを、入力されたデータに対して実行し、第2の結果を出力する第2のプロセッサと、
    前記第1のプロセッサおよび前記第2のプロセッサの性能または機能を示す所定の指標に基づいて、複数の前記データ集合のうちの1つである第1のデータ集合から第1の部分集合および第2の部分集合を選択する選択手段と、
    前記第1の部分集合に含まれる第1のデータを前記第1のプロセッサに入力する第1のプロセッサ制御手段と、
    前記第2の部分集合に含まれる第2のデータを前記第2のプロセッサに入力する第2のプロセッサ制御手段と、を備え、
    前記第1のプロセッサおよび前記第2のプロセッサによって、前記第1のプログラムおよび前記第2のプログラムは並列に実行され、
    前記第1のプログラムおよび前記第2のプログラムは、前記第1のデータ集合に含まれるデータおよび少なくとも2個のデータを含む、複数の前記データ集合のうちの前記第1のデータ集合とは異なる第2のデータ集合に含まれるデータを入力として実行される前記単位処理を規定し、
    前記選択手段は、前記指標に基づいて、前記第2のデータ集合から第3の部分集合および第4の部分集合を選択し、
    前記第1のプロセッサ制御手段は、前記第1のデータ集合に含まれる前記第1のデータおよび前記第3の部分集合に含まれる第3のデータを前記第1のプロセッサに入力し、
    前記第2のプロセッサ制御手段は、前記第2の部分集合に含まれる前記第2のデータおよび前記第4の部分集合に含まれる第4のデータを前記第2のプロセッサに入力し、
    前記単位処理は、前記第1のデータ集合に含まれる被照合データである前記第1のデータと予め登録された前記第2のデータ集合に含まれる登録済データである前記第のデータとの照合、および入力された前記被照合データである前記第のデータと前記登録済データである前記第4のデータとの照合を行い、前記被照合データと前記登録済データとの一致の度合いを示す照合スコアを算出する照合処理であり、
    前記照合スコアが最も高い前記登録済データを最終結果として出力する出力手段をさらに備える
    並列処理装置。
  2. 前記指標は、前記第1のプロセッサおよび前記第2のプロセッサを用いて並列に実行可能な処理の数である
    ことを特徴とする請求項1に記載の並列処理装置。
  3. 前記第1のプロセッサは、所定の第3のプログラムを実行することによって、
    前記照合処理の進行状況を管理する照合管理手段と、
    前記第2のデータ集合である登録済データ集合から、未照合の前記登録済みデータの集合を、ブロックとして選び出すブロック切り出し手段と、
    前記出力手段からの前記最終結果を得て、前記進行状況を前記照合管理手段に伝えるとともに、前記登録済データ集合の全体についての前記照合スコアが最高である前記登録済データを求める結果登録手段と、
    前記ブロック切り出し手段、前記結果登録手段と、コプロセッサ上の前記結果登録手段との間の通信を行う第1の通信手段と
    を実現し、
    前記第2のプロセッサは、所定の第4のプログラムを実行することによって、
    1組のデータ間の照合処理を行う単位照合手段と、
    前記ブロックの各データと前記被照合データとの前記照合処理を実行し、前記ブロック内での最高の前記照合スコアを前記最終結果として求める単位照合制御手段と
    を実現し、
    前記第1のプロセッサおよび前記第2のプロセッサは、前記ブロック内の前記登録済みデータと前記被照合データとの照合を並列処理する
    ことを特徴とする請求項1に記載の並列処理装置。
  4. 前記第1のプロセッサ上で所定の仕様に沿って前記照合処理を行う第1の単位照合手段と、
    前記第2のプロセッサ上で前記仕様に沿って前記照合処理を行う第2の単位照合手段と、
    前記第1のプロセッサ上にあって前記登録済データ集合の各データと前記被照合データとの照合処理の進行状況を管理する照合管理手段と、を備え、
    前記選択手段は、前記第1のプロセッサ上にあって前記登録済データ集合から1つないし複数の未照合のデータの集合をブロックとして選び出すと、
    前記第1のプロセッサ制御手段は、前記選び出したブロックの各データと前記被照合データを前記第1のプロセッサに与えて並列に前記照合処理を行わせ、前記ブロック内での最高照合スコアを第1の結果として求め、
    前記第2のプロセッサ制御手段は、前記選び出したブロックの各データと前記被照合データを前記第2のプロセッサに与えて並列に前記照合処理を行わせ、前記ブロック内での最高照合スコアを第2の結果として求め、
    前記出力手段は、前記第1の結果および第2の結果に基づいて、前記最終結果を求める
    ことを特徴とする請求項3に記載の並列処理装置。
  5. 前記第1のプログラムは、所定の共通言語を用いて前記データ処理の手順が規定された共通プログラムから、前記第1のプロセッサ用の第1の言語を用いたプログラムに変換されたものであり、
    前記第2のプログラムは、前記共通プログラムから前記第2のプロセッサ用の第2の言語を用いたプログラムに変換されたものである
    ことを特徴とする請求項1ないし4のいずれか1項に記載の並列処理装置。
  6. 並列処理装置に備えられた第1のプロセッサおよび第2のプロセッサの性能または機能を示す所定の指標に基づいて、複数のデータ集合のうちの1つである第1のデータ集合から第1の部分集合および第2の部分集合を選択し、
    前記第1の部分集合に含まれる第1のデータを前記第1のプロセッサに入力し、
    前記第2の部分集合に含まれる第2のデータを前記第2のプロセッサに入力し、
    前記データ集合に含まれるデータを入力として実行される単位処理を規定した第1のプログラムを、前記第1のプロセッサを用いて、前記第1のデータに対して実行して第1の結果を出力し、
    前記単位処理を規定した第2のプログラムを、前記第2のプロセッサを用いて、前記第2のデータに対して前記第1のプログラムと並列に実行して第2の結果を出力し、
    前記第1のプログラムおよび前記第2のプログラムは、前記第1のデータ集合に含まれるデータおよび少なくとも2個のデータを含む、複数の前記データ集合のうちの前記第1のデータ集合とは異なる第2のデータ集合に含まれるデータを入力として実行される前記単位処理を規定し
    記指標に基づいて、前記第2のデータ集合から第3の部分集合および第4の部分集合を選択し
    記第1のデータ集合に含まれる前記第1のデータおよび前記第3の部分集合に含まれる第3のデータを前記第1のプロセッサに入力し
    記第2の部分集合に含まれる前記第2のデータおよび前記第4の部分集合に含まれる第4のデータを前記第2のプロセッサに入力し、
    前記単位処理は、前記第1のデータ集合に含まれる被照合データである前記第1のデータと予め登録された前記第2のデータ集合に含まれる登録済データである前記第のデータとの照合、および入力された前記被照合データである前記第のデータと前記登録済データである前記第4のデータとの照合を行い、前記被照合データと前記登録済データとの一致の度合いを示す照合スコアを算出する照合処理であり、
    前記照合スコアが最も高い前記登録済データを最終結果として出力する
    並列処理方法。
  7. データ集合に含まれるデータを入力として実行される単位処理を規定した第1のプログラムを入力されたデータに対して実行し、第1の結果を出力する第1のプロセッサ、および前記単位処理を規定した第2のプログラムを入力されたデータに対して実行し、第2の結果を出力する第2のプロセッサを含む並列処理装置に備えられたプロセッサを、
    前記第1のプロセッサおよび前記第2のプロセッサの性能または機能を示す所定の指標に基づいて、複数の前記データ集合のうちの1つである第1のデータ集合から第1の部分集合および第2の部分集合を選択する選択手段、および
    前記第1の部分集合に含まれる第1のデータを前記第1のプロセッサに入力する第1のプロセッサ制御手段、または
    前記第2の部分集合に含まれる第2のデータを前記第2のプロセッサに入力する第2のプロセッサ制御手段として機能させるための並列処理プログラムであって、
    前記第1のプロセッサおよび前記第2のプロセッサによって、前記第1のプログラムおよび前記第2のプログラムは並列に実行され、
    前記第1のプログラムおよび前記第2のプログラムが、前記第1のデータ集合に含まれるデータおよび少なくとも2個のデータを含む、複数の前記データ集合のうちの前記第1のデータ集合とは異なる第2のデータ集合に含まれるデータを入力として実行される前記単位処理を規定し、
    前記選択手段が、前記指標に基づいて、前記第2のデータ集合から第3の部分集合および第4の部分集合を選択し、
    前記第1のプロセッサ制御手段が、前記第1のデータ集合に含まれる前記第1のデータおよび前記第3の部分集合に含まれる第3のデータを前記第1のプロセッサに入力し、
    前記第2のプロセッサ制御手段が、前記第2の部分集合に含まれる前記第2のデータおよび前記第4の部分集合に含まれる第4のデータを前記第2のプロセッサに入力するように、それぞれ機能させ、
    前記単位処理は、前記第1のデータ集合に含まれる被照合データである前記第1のデータと予め登録された前記第2のデータ集合に含まれる登録済データである前記第のデータとの照合、および入力された前記被照合データである前記第のデータと前記登録済データである前記第4のデータとの照合を行い、前記被照合データと前記登録済データとの一致の度合いを示す照合スコアを算出する照合処理であり、
    前記照合スコアが最も高い前記登録済データを最終結果として出力する出力手段として機能させるための並列処理プログラム。
JP2015502758A 2013-02-26 2014-02-24 並列処理装置、並列処理方法、および並列処理プログラム記憶媒体 Active JP6304230B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013035789 2013-02-26
JP2013035789 2013-02-26
PCT/JP2014/000946 WO2014132608A1 (ja) 2013-02-26 2014-02-24 並列処理装置、並列処理方法、および並列処理プログラム記憶媒体

Publications (2)

Publication Number Publication Date
JPWO2014132608A1 JPWO2014132608A1 (ja) 2017-02-02
JP6304230B2 true JP6304230B2 (ja) 2018-04-04

Family

ID=51427887

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015502758A Active JP6304230B2 (ja) 2013-02-26 2014-02-24 並列処理装置、並列処理方法、および並列処理プログラム記憶媒体

Country Status (3)

Country Link
US (1) US10025603B2 (ja)
JP (1) JP6304230B2 (ja)
WO (1) WO2014132608A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10878657B2 (en) 2018-07-25 2020-12-29 Konami Gaming, Inc. Casino management system with a patron facial recognition system and methods of operating same
US11521460B2 (en) 2018-07-25 2022-12-06 Konami Gaming, Inc. Casino management system with a patron facial recognition system and methods of operating same
JP7301825B2 (ja) 2017-11-17 2023-07-03 オムニセル, インコーポレイテッド 温度制御された分配引き出し

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6453685B2 (ja) * 2015-03-26 2019-01-16 ルネサスエレクトロニクス株式会社 演算制御装置、演算制御方法及び演算制御プログラム
JP6701650B2 (ja) * 2015-09-14 2020-05-27 富士ゼロックス株式会社 情報処理装置および画像形成装置
TWI760880B (zh) * 2020-10-07 2022-04-11 瑞昱半導體股份有限公司 與儲存裝置相關的傳輸控制電路、資料傳輸系統及操作資料傳輸系統的方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06332664A (ja) 1993-03-23 1994-12-02 Toshiba Corp 表示制御システム
JPH0844678A (ja) 1994-07-29 1996-02-16 Canon Inc 画像処理装置及びシステム
JP2001126030A (ja) 1999-10-26 2001-05-11 Nec Corp パターン認識方法及びパターン認識装置
JP2003243988A (ja) 2002-02-20 2003-08-29 Tadahiro Omi データ処理装置
JP2005018626A (ja) * 2003-06-27 2005-01-20 Ip Flex Kk 並列処理システムの生成方法
JP2006262311A (ja) 2005-03-18 2006-09-28 Toshiba Corp 情報記録装置及び情報記録方法
JP5343523B2 (ja) 2008-11-17 2013-11-13 富士通株式会社 ジョブ管理装置、ジョブ管理方法およびジョブ管理プログラム
JP2010134669A (ja) 2008-12-04 2010-06-17 Mitsubishi Electric Corp 3次元物体照合装置及び3次元物体照合方法
JP2011197803A (ja) * 2010-03-17 2011-10-06 Ricoh Co Ltd プログラム実行制御方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7301825B2 (ja) 2017-11-17 2023-07-03 オムニセル, インコーポレイテッド 温度制御された分配引き出し
JP7301825B6 (ja) 2017-11-17 2023-07-24 オムニセル, インコーポレイテッド 温度制御された分配引き出し
US10878657B2 (en) 2018-07-25 2020-12-29 Konami Gaming, Inc. Casino management system with a patron facial recognition system and methods of operating same
US11455864B2 (en) 2018-07-25 2022-09-27 Konami Gaming, Inc. Casino management system with a patron facial recognition system and methods of operating same
US11521460B2 (en) 2018-07-25 2022-12-06 Konami Gaming, Inc. Casino management system with a patron facial recognition system and methods of operating same

Also Published As

Publication number Publication date
US10025603B2 (en) 2018-07-17
JPWO2014132608A1 (ja) 2017-02-02
WO2014132608A1 (ja) 2014-09-04
US20160004543A1 (en) 2016-01-07

Similar Documents

Publication Publication Date Title
US11210760B2 (en) Programmable coarse grained and sparse matrix compute hardware with advanced scheduling
US11334796B2 (en) Optimized compute hardware for machine learning operations
JP6304230B2 (ja) 並列処理装置、並列処理方法、および並列処理プログラム記憶媒体
US11544545B2 (en) Structured activation based sparsity in an artificial neural network
EP3399418B1 (en) Fine-grain compute communication execution for deep learning frameworks
Awan et al. S-caffe: Co-designing mpi runtimes and caffe for scalable deep learning on modern gpu clusters
US11615297B2 (en) Structured weight based sparsity in an artificial neural network compiler
US20180322387A1 (en) Hardware implemented point to point communication primitives for machine learning
US11551028B2 (en) Structured weight based sparsity in an artificial neural network
US20200279133A1 (en) Structured Sparsity Guided Training In An Artificial Neural Network
Ling et al. Design and implementation of a CUDA-compatible GPU-based core for gapped BLAST algorithm
US20230177328A1 (en) Hardware implemented point to point communication primitives for machine learning
CN116806340A (zh) 确定用于对象分类的一个或更多个神经网络
CN116342372A (zh) 使用一个或更多个神经网络的图像生成
Huang et al. Strassen’s algorithm reloaded on GPUs
Yang et al. A performance model for GPU architectures that considers on-chip resources: Application to medical image registration
Gajdoš et al. GPU based parallelism for self-organizing map
CN111324439A (zh) 用于向量单元的密码引擎和调度方法
Zhu et al. A GPU-based high-throughput image retrieval algorithm
Bistaffa et al. Optimising memory management for belief propagation in junction trees using GPGPUs
Gómez-Luna et al. Load balancing versus occupancy maximization on graphics processing units: The generalized hough transform as a case study
Condello et al. An OpenCL-based feature matcher
Wang et al. Hetrocv: Auto-tuning framework and runtime for image processing and computer vision applications on heterogeneous platform
Choi et al. Overlapped Data Processing Scheme for Accelerating Training and Validation in Machine Learning
Alqudami et al. Adaptive discrete cosine transform-based image compression method on a heterogeneous system platform using Open Computing Language

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170620

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170807

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171107

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171227

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180219

R150 Certificate of patent or registration of utility model

Ref document number: 6304230

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150