"プログラマブルデバイスに接続される情報処理装置であって、各々前記プログラマブルデバイス上で実現させる機能を定義する構成データが、複数格納される構成データ蓄積手段と、各々対応する構成データにより前記プログラマブルデバイス上に実現される機能を利用するソフトウェアプログラムが、複数格納されるプログラム蓄積手段と、前記プログラマブルデバイスに、複数の構成データのうち選択された選択機能に対応する構成データを転送し、構成を要求する構成要求手段とを含む、情報処理装置。前記プログラマブルデバイスが構成を完了させた後、前記選択機能に対応するソフトウェアプログラムに従って、前記選択機能に対応する構成データにより前記プログラマブルデバイス上に実現された機能を利用する命令を実行する演算手段をさらに含む、請求項1に記載の情報処理装置。前記構成データ蓄積手段に格納しようとする構成データと、該構成データにより前記プログラマブルデバイス上に実現される機能を利用するコードを含むソフトウェアプログラムとを受け付ける手段と、受け付けた構成データおよびソフトウェアプログラムを対応付けて、前記構成データ蓄積手段および前記プログラム蓄積手段に蓄積させる手段とをさらに含む、請求項1または2に記載の情報処理装置。前記構成要求手段は、当該情報処理装置の起動時に、前記構成データの転送を実施し、前記プログラマブルデバイスの構成を要求することを特徴とする、請求項1~3のいずれか1項に記載の情報処理装置。選択機能が指定される手段をさらに含み、前記構成要求手段は、前記選択機能の指定に応答して、前記構成データの転送を実施し、前記プログラマブルデバイスの再構成を要求することを特徴とする、請求項1~4のいずれか1項に記載の情報処理装置。前記構成要求手段は、当該情報処理装置および前記プログラマブルデバイスがアイドル状態にあるときに、前記構成データの転送を実施し、前記プログラマブルデバイスの再構成を要求することを特徴とする、請求項1~5のいずれか1項に記載の情報処理装置。当該情報処理装置と外部装置との間でデータ通信を行う通信手段と、前記通信手段を用いて、前記外部装置から演算の指定を受け付ける手段と、指定された演算で利用するデータおよびパラメータ、またはこれらのいずれか一方を受け付ける手段と、前記データおよびパラメータ、またはこれらのいずれか一方を用いて、前記プログラマブルデバイスと連携した演算を開始する手段と、前記通信手段を用いて、前記指定された演算の結果を前記外部装置へ返却する手段とをさらに含む、請求項1~6のいずれか1項に記載の情報処理装置。前記通信手段を用いて前記外部装置から、前記指定された演算に必要な構成データと、該構成データにより前記プログラマブルデバイス上に実現される機能を利用し、該機能を利用して得られた演算結果を前記外部装置へ返却するコードを含むソフトウェアプログラムとを受信する手段をさらに含み、前記構成要求手段は、前記プログラマブルデバイスに、受信した前記指定された演算に必要な構成データを転送して再構成を要求することを特徴とする、請求項7に記載の情報処理装置。プログラマブルデバイスと通信する情報処理装置が実行する演算方法であって、前記情報処理装置に対し、各々前記プログラマブルデバイス上で実現させる機能を定義する構成データが複数格納される構成データ蓄積手段から、前記複数の構成データのうち選択機能に対応する構成データを読み出すステップと、各々対応する構成データにより前記プログラマブルデバイス上に実現される機能を利用するソフトウェアプログラムが複数格納されるプログラム蓄積手段から、前記選択機能に対応するソフトウェアプログラムを読み出すステップと、前記プログラマブルデバイスに、前記選択機能に対応する構成データを転送し、構成を要求するステップと、前記選択機能に対応するソフトウェアプログラムに従った処理を実行するステップとを実行させる、演算方法。プログラマブルデバイスと通信するコンピュータが実行可能なプログラムであって、前記コンピュータを、各々前記プログラマブルデバイス上で実現させる機能を定義する構成データが、複数格納される構成データ蓄積手段、各々対応する構成データにより前記プログラマブルデバイス上に実現される機能を利用するソフトウェアプログラムが、複数格納されるプログラム蓄積手段、および前記プログラマブルデバイスに、複数の構成データのうち選択された選択機能に対応する構成データを転送し、構成を要求する構成要求手段として機能させる、プログラム。従来技術においては、上記特許文献1に例示されるように、複数の機能を実現するため、半導体チップ上のメモリを大容量化し、複数のコンフィギュレーションデータをメモリ上に格納するアプローチが採用されている。しかしながら、半導体チップ上のメモリの大容量化は、半導体チップ面積の増大を意味し、1枚のシリコンウェハから生産できるチップ数が減ってしまうため、製造原価が嵩んでしまう。さらに、上記半導体チップ面積の増大は、配線長の長大化を招き、消費電力を増大させてしまう。これらの点を鑑みると、上記プログラマブルデバイス内のメモリの大容量化は好ましいとはいえない。上記特許文献2~4に例示されるように、外部または内部にコンフィギュレーションデータを格納した記憶装置を設けて、ホスト装置側のハードウェア機能ユニットの切り替えに応じて半導体チップ上のメモリの構成データを更新するアプローチも採用されている。しかしながら、ソフトウェアの追加、変更について考慮がなされておらず、多様な機能を実現する目的を満足できるものではなかった。本発明は、上記従来技術における不充分な点に鑑みてなされたものであり、本発明は、FPGAなどに代表されるプログラマブルデバイスと接続される情報処理装置において、プログラマブルデバイスの複数の構成データを蓄積し、所望の機能を実現するために適切な構成データを選択設定してプログラマブルデバイスを再構成し、該プログラマブルデバイスと連携した処理を行う情報処理装置、演算方法、およびプログラムを提供することを目的とする。本発明は、上記課題を解決するため、下記特徴を有する、プログラマブルデバイスに接続された情報処理装置を提供する。本情報処理装置は、構成データを複数格納する構成データ蓄積手段と、ソフトウェアプログラムを複数格納するプログラム蓄積手段とを備える。上記構成データ各々は、上記プログラマブルデバイス上で実現させる機能を定義するものである。上記ソフトウェアプログラム各々は、対応する構成データにより上記プログラマブルデバイス上に実現される機能を利用するものである。本情報処理装置は、プログラマブルデバイスに、複数の構成データのうち選択された選択機能に対応する構成データを転送し、構成を要求する構成要求手段を含む。上記構成によれば、プログラマブルデバイスを用いる情報処理装置において、プログラマブルデバイスを情報処理装置が求める多様な設定に構成し、情報処理装置と連携した演算を実現することが可能になり、プログラマブルデバイスの有効性を著しく向上させることが可能となる。以下、図面を参照しながら、本発明の実施形態について説明するが、本発明の実施形態は、以下に説明する実施形態に限定されるものではない。なお、以下に説明する実施形態では、プログラマブルデバイスを搭載するアクセラレータと連携した演算処理を実現している演算システムを構成する情報処理装置を一例に説明する。図1は、第1の実施形態による演算システムの概略を示すブロック図である。図1に示す演算システム100は、情報処理装置110とアクセラレータ150とを含む。アクセラレータ150は、ユーザ側で内部論理回路の再書き込みが可能な集積回路であるプログラマブルデバイスを搭載する。プログラマブルデバイスは、具体的には、PALProgrammableArrayLogicやGALGenericArrayLogicなど狭義のPLDProgrammableLogicDevice、CPDComplexProgrammableDeviceおよびFPGAFieldProgrammableGateArrayを含むプログラマブルロジックデバイスである。なお、以下の説明では、アクセラレータ150がFPGAを備えているものとして説明する。情報処理装置110は、画像処理やビデオ処理などの各種演算処理をハードウェア回路として実装するアクセラレータ150を利用する、ホスト装置である。情報処理装置110は、特に限定されるものではないが、パーソナルコンピュータ、ワークステーション、サーバなどの汎用コンピュータ、複合機、複写機、プリンタ、ファクシミリ、スキャナなどの画像処理装置、PDAPersonalDigitalAssistanceやスマートフォンなどの携帯情報端末などとして構成される。情報処理装置110は、CPU112と、制御部114と、RAM116と、プログラム蓄積部118と、構成データ蓄積部120と、送信バッファ122とを備える。CPU112は、後述するアクセラレータ150と連携した演算処理を含めて情報処理装置110の全体制御を行う手段である。制御部114は、当該情報処理装置110内のデータフローを制御する手段である。RAM116は、上記CPU112による演算のための作業空間を提供する記憶装置である。プログラム蓄積部118は、当該情報処理装置110が実行するソフトウェアプログラムコードを蓄積する記憶領域である。構成データ蓄積部120は、アクセラレータ150に搭載されるプログラマブルデバイスの機能構成を定義するコンフィギュレーションデータを蓄積する記憶領域である。プログラム蓄積部118および構成データ蓄積部120には、それぞれ、複数のソフトウェアプログラムコードおよびコンフィギュレーションデータを蓄積する。プログラム蓄積部118および構成データ蓄積部120は、特に限定されるものではないが、HDDHardDiskDriveやSSDSolidStateDriveなどの2次記憶装置により提供することができる。送信バッファ122は、アクセラレータ150へコンフィギュレーションデータを転送する際に、該データを一時的に記憶するバッファメモリである。アクセラレータ150は、制御部152と、構成データ格納部154と、ローカルメモリ156と、再構成可能な演算器アレイ158と、外部インタフェース160とを備える。制御部152は、当該アクセラレータ150内のデータフローを含めて全体制御を行う手段である。ローカルメモリ156は、当該アクセラレータ150内で利用されるローカルメモリである。構成データ格納部154は、上述したアクセラレータ150が備えるプログラマブルデバイスのコンフィギュレーションデータを格納する記憶領域である。構成データ格納部154は、EEPROMやSRAMなどの不揮発性または揮発性のメモリ装置により構成される。再構成可能な演算器アレイ158は、複数のロジックエレメントの2次元アレイで構成される。アクセラレータ150においてプログラマブルデバイスが実現するロジック機能は、個々のロジックエレメントのロジック機能と、ロジックエレメント間の接続関係とを指定することにより定められる。上記コンフィギュレーションデータは、上述のようなプログラマブルデバイスのロジック機能を指定する情報をいい、コンフィギュレーションビットストリームとも呼ばれ、本実施形態における構成データを構成する。以下、コンフィギュレーションデータを構成データと参照する。外部インタフェース160は、上記情報処理装置110と通信して、各種命令および構成データを受信する通信手段である。本実施形態における演算器アレイ158は、また、再構成が可能とされている。再構成リコンフィギュレーションとは、上記プログラマブルデバイスが何度も書き換え可能であるものについて、構成データ格納部154内の構成データを書き換えることにより、プログラマブルデバイスのロジック機能を異なるロジック機能へ変更することをいう。上記演算システム100においては、情報処理装置110は、電源投入時、アイドル時、ユーザ指示があった時など適時にて、CPU112により、構成データ蓄積部120から構成データを読み出し、アクセラレータ150へ送信して、プログラマブルデバイスの構成処理を要求する。アクセラレータ150は、制御部152により、外部インタフェース160を介して受信した構成データを構成データ格納部154に格納する。アクセラレータ150は、制御部152により、構成データ格納部154に格納される構成データに従って再構成可能な演算器アレイ158の回路構成処理を実施する。これにより、情報処理装置110に対する演算機能提供の準備が行われる。情報処理装置110は、CPU112により、アクセラレータ150の準備完了の通知を受けて、プログラム蓄積部118に蓄積されるソフトウェアプログラムコードを実行する。当該ソフトウェアプログラムコードは、上記構成データによりアクセラレータ150のプログラマブルデバイス上に実現される機能を利用するコードである。以下、ソフトウェアプログラムコードを単にプログラムと参照する。プログラムと構成データとは、図2に示すように対応付けられて管理されている。図2は、対応付けて管理されるプログラムおよび構成データを説明する図である。図2Aは、プログラムおよび構成データを対応付ける管理テーブルのデータ構造を示す。図2Aに示すように、プログラムおよび構成データは、それぞれ機能に関連付けられてテーブルに登録されている。図2Aに示す管理テーブルによって、図2Bに示すように、プログラム蓄積部118および構成データ蓄積部120内に格納されている複数のプログラム200,202,204,206および複数の構成データ210,212,214,216が、それぞれ対応付けられる。なお、プログラム蓄積部118および構成データ蓄積部120に蓄積されるプログラムおよび構成データは、本実施形態では、固定されてはおらず、追加、変更および削除などをすることによって、多様な機能を実現することが可能とされている。図3は、プログラム蓄積部118および構成データ蓄積部120に蓄積されるプログラムおよび構成データの組を追加、変更および削除するためのグラフィカルユーザインタフェースGUIを示す。図3Aは、登録されているプログラムおよびコンフィギュレーションを対応付けて表示するための登録一覧表示画面を示す。図3Aに示す登録一覧表示画面220は、登録されている機能を一覧表示する一覧表示テーブル222と、新規追加ボタン226と、編集ボタン228と、削除ボタン230と、設定ボタン232と、キャンセルボタン234とを含む。一覧表示テーブル222には、機能の名称が表示されるカラム222aと、該機能に対応するプログラムが表示されるカラム222bと、該機能に対応する構成データが表示されるカラム222cとが含まれる。一覧表示テーブル222において、機能-プログラム-構成データの組224が選択された状態で削除ボタン230がクリックされると、その組は、登録から抹消される。登録から抹消されたプログラムおよび構成データは、それぞれ、プログラム蓄積部118および構成データ蓄積部120から削除されるか、あるいは削除フラグが立てられて後日削除されることになる。新規追加ボタン226がクリックされると、図3Bに示す新規登録画面が表示される。機能-プログラム-構成データの組224が選択された状態で編集ボタン228がクリックされると、その組の登録内容を編集するための図3Bに類似した編集画面が表示される。図3Bは、プログラムおよび構成データの組を新規登録するための新規登録画面を示す。図3Bに示す新規登録画面240は、登録しようとする内容を入力するためのテーブル242と、テーブル242の内容で新規追加を実行するための追加ボタン248と、新規追加をキャンセルするためのキャンセルボタン250とを含む。テーブル242は、機能の名称を入力するためのテキストボックス244と、該機能に対応付けて登録するプログラムおよび構成データを指定するための参照ボタン付きテキストボックス246a,246bとを含む。参照ボタン付きテキストボックス246a,246bがクリックされると、ファイル選択ダイアログボックスが表示される。操作者は、テキストボックス244に機能名を入力して、参照ボタン付きテキストボックス246a,246bで参照ボタンを適宜使用してそれぞれファイル選択指定し、追加ボタン248をクリックすることにより、機能の新規追加を行うことができる。そして、操作者は、図3Aに示す設定ボタン232をクリックすることにより、登録内容を確定させることができる。あるいは、操作者は、キャンセルボタン234をクリックすることにより登録内容を破棄することができる。なお、編集ボタン228に応答して表示される編集画面は、図3Bに示すものと同様の構成とすることができるので、説明は省略する。図3に示したGUIは、情報処理装置110が備えるディスプレイ、または情報処理装置110が提供するリモートインタフェースにアクセスする図示しない外部装置が備えるディスプレイに表示される。情報処理装置110または外部装置が備える入力装置による上記GUIに対する操作によって、プログラムおよび構成データが指定される。そして、情報処理装置110は、CPU112により、該指定に応答して、情報処理装置110内の記憶領域または外部装置の記憶領域に保存されるプログラムおよび構成データを受け付け、プログラム蓄積部118および構成データ蓄積部120に蓄積させる。プログラムおよび構成データの管理の運用に関しては、図2Aに示す管理テーブルのように機能が管理されている場合、標準機能は変更不可能とし、オプション機能は変更可能とするという運用が考えられる。この場合、必要とする機能のみ搭載することによって、記録容量の小さな機器での記録容量不足を避けることができる。また搭載機能の改善や障害対策など、事後的な更新も容易になる。さらに、上述したプログラムおよび構成データの追加、変更および削除は、情報処理装置110のアイドル時、ユーザ指示に応じた機能実行停止後など、機能実行に不都合が生じないタイミングにて実施することが望ましい。また、図3に示すGUIを用いてプログラム-構成データの組を登録するものとして説明してきたが、ディスプレイなどを備えないデバイスでは、適宜、ファームウェアアップデートのための手動操作に対応して、最新状態のプログラムおよび構成データに更新する態様としてもよい。本実施形態による演算システム100では、図2に示すようにプログラムと構成データとが対応付けて管理されているため、情報処理装置110からは、アクセラレータ150に対して、当該情報処理装置110がアクセラレータ150に求める機能に対応した構成データが送信される。したがって、情報処理装置110とアクセラレータ150とのプログラムおよび構成データ間に不整合を生じさせない。また、プログラムと構成データとが機能毎に組にして管理されているので、機能を指定することで、利用すべきソフトウェアプログラムコードと構成データとが一意に決定される。以下、図4および図5を参照しながら、第1の実施形態による演算システム100で行われる情報処理装置110とアクセラレータ150とを連携させた演算処理について、詳細を説明する。図4は、第1の実施形態による情報処理装置とアクセラレータとを連携させた演算処理の起動時の全体フローを示すフローチャートである。なお、図4および図5においては、各処理ステップが、実行主体を分けて説明されている。図4に示すステップS100~S104および図5に示すステップS300~S307は、情報処理装置ホスト110が実行主体となる処理である。図4に示すステップS200~S206および図5に示すステップS400~S407は、アクセラレータ150が実行主体となる処理である。図4に示す処理は、情報処理装置ホスト110およびアクセラレータ150が電源投入されて起動されたことに応答して、ステップS100およびステップS200から開始される。ステップS101では、情報処理装置110は、CPU112により、構成データ蓄積部120から構成データを読み出し、アクセラレータ150に送信して、プログラマブルデバイスの構成処理を要求する。ここで、送信される構成データは、上記登録された複数の機能のうち予め選択された機能に対応する構成データである。CPU112は、本実施形態における構成要求手段を構成する。ステップS201では、アクセラレータ150は、情報処理装置110から構成データを受信する。ステップS202では、アクセラレータ150は、受信した構成データを構成データ格納部154に格納する。ステップS203では、アクセラレータ150は、格納した構成データに従って、再構成可能な演算器アレイ158の回路構成の構成処理を実施する。アクセラレータ150が構成処理を完了させると、ステップS204では、アクセラレータ150は、情報処理装置110に対し、機能提供する準備が完了したことを意味する準備完了信号を出力する。ステップS204に対応して、ステップS102では、情報処理装置110は、アクセラレータ150から準備完了信号を受信する。準備完了信号が受信されると、ステップS103では、情報処理装置110は、上記送信した構成データに対応するプログラムの実行を開始し、後述するアクセラレータ150と連携する演算処理以下、連携演算と参照する。を行う。アクセラレータ150側でも、ステップS103に対応してステップS205で、連携演算処理を行う。図5は、第1の実施形態による情報処理装置ホストとアクセラレータとを連携させた演算処理示すフローチャートである。図5に示す処理は、図4に示すステップS103およびステップS205で連携演算処理が呼び出されたことに対応して、それぞれ、ステップS300およびステップS400から開始する。ステップS301では、情報処理装置110は、上記プログラムの演算処理を開始して、アクセラレータ150の初期化を指令する。ホスト側のステップS301に対応して、ステップS401では、アクセラレータ150は、演算処理開始処理を実行し、演算回路を初期化する。ステップS302では、情報処理装置110は、上記プログラムによる処理が末端に達したため処理を終了させるのか否かを判定する。ステップS302で、プログラムを終了させないと判定された場合NOは、ステップS303へ処理が進められる。ステップS303では、情報処理装置110は、上記プログラムに含まれる情報処理装置110側の命令コードを実行するとともに、アクセラレータ150を利用する命令コードに対応して、アクセラレータ150を駆動し、演算を依頼する。ホスト側のステップS303に対応して、ステップS402では、アクセラレータ150は、プログラマブルデバイスの再構成可能な演算器アレイ158のロジック機能により情報処理装置110から依頼された演算を実行する。ステップS403では、アクセラレータ150は、依頼された演算の結果を情報処理装置110に返却する。アクセラレータ側のステップS403に対応して、ステップS304では、情報処理装置110は、アクセラレータ150から演算結果を受信し、ステップS302へ処理を分岐させる。アクセラレータ側では、ステップS403後、ステップS404では、アクセラレータ150は、次の演算が依頼されたのか演算終了の指令が行われたのかに応じて処理を分岐させる。ステップS404で、演算終了の指令が行われず、ホスト側のステップS303に対応して次の演算の依頼があった場合NOは、ステップS402にループされて、ステップS402で依頼された演算を実行する。ステップS302で、上記プログラムによる処理が末端に達したために処理を終了させると判定した場合YESは、ステップS305へ処理が進められる。ステップS305では、情報処理装置110は、アクセラレータ150に演算終了を指令する。アクセラレータ側では、ステップS404では、次の演算が依頼されたか演算終了の指令が行われたに応じて処理を分岐させ、ステップS305に対応して演算終了の指令が行われた場合YESは、ステップS405へ処理が進められる。ステップS405では、アクセラレータ150は、演算終了処理後始末を実行し、ステップS406で、演算終了処理の完了を報告し、ステップS407で本処理を終了させて図4に示す処理に戻る。アクセラレータ側のステップS406に対応して、ステップS306では、情報処理装置110が、演算終了処理後始末を実行して、ステップS307で、本処理を終了させて、図4に示す処理に戻る。情報処理装置110およびアクセラレータ150は、それぞれ、図5に示すステップS307およびステップS407から戻って連携演算処理が終了すると、ステップS104およびステップS206で本処理を終了させる。図4および図5に示した処理によれば、演算システム100の起動時に、予め選択された機能に対応する構成データが、情報処理装置110からアクセラレータ150へと転送されて、該構成データに基づいて演算器アレイ158が構成される。そして、演算器アレイ158が構成を完了させた後は、情報処理装置110は、予め選択された機能に対応するプログラムを起動させて、アクセラレータ150を駆動しながら所望の連携演算処理を行うことができる。ところで、アクセラレータ150に搭載されるプログラマブルデバイスとしては、ダイナミックリコンフィギュラブルプロセッサと呼ばれる半導体デバイスが知られている。この半導体デバイスは、動的な再構成、つまり電源遮断することなく極短時間に回路書き換えが可能となっており、特に近年のFPGAにおいては、部分的に動的再構成が可能になっており、適用範囲も広がっている。上記アクセラレータ150に搭載されるプログラマブルデバイスとして、ダイナミックリコンフィギュラブルプロセッサを用いれば、情報処理装置ホスト110の電源遮断を待つ必要なく、即時、プログラマブルデバイスの構成を更新して、アクセラレータ150が提供する機能を変更することができる。上述までは、演算システム100の起動時の処理について説明してきたが、以下、図6および図7を参照しながら、起動後ユーザからの指示に応答して機能を変更する処理について説明する。上記動的再構成を利用することにより、演算システム100は、現時点でアクセラレータ150に構成されている機能と異なる機能が必要となった場合でも、演算システム100の再起動を伴わずに、プログラマブルデバイスのロジック機能を異なるロジック機能へ変更し、異なる他の連携演算処理を行うことができる。図6Aは、第1の実施形態による情報処理装置ホストが実行する、アクセラレータと連携して実現する機能を変更する処理を示すフローチャートである。図6Aに示す処理は、演算システム100が起動したことに応答して、ステップS500から開始する。ステップS501では、情報処理装置110は、ユーザから機能変更の指示があったか否かを判定し、ユーザから機能変更の指示があるまでの間NOの間、ステップS501をループさせて、指示を待ち受ける。ステップS501で、ユーザからの機能変更指示があったと判定された場合YESは、ステップS502へ処理を進める。ステップS502では、情報処理装置110は、自己およびアクセラレータ150の動作状態を確認する。ステップS503では、情報処理装置110は、機能変更が即時実施可能であるか否かを判定する。説明する実施形態では、当該情報処理装置110およびアクセラレータ150の両方がアイドル状態にあるときに、即時実施が可能であると判定されるものとする。ステップS503で、即時実施が可能であると判定された場合YESは、ステップS504で、機能切り替え処理を実行し、機能切り替え処理が完了すると、ステップS501へループさせて、次の指示を待ち受ける。一方、ステップS503で、即時実施が不可能であると判定された場合NOは、ステップS505へ処理を進める。ステップS505では、情報処理装置110は、タスクが登録されているキューに機能変更命令を投入し、ステップS501へループさせて、次の指示を待ち受ける。図6Bは、第1の実施形態による情報処理装置ホストが実行する、キューに投入された機能変更命令を実行する処理を示すフローチャートである。図6Bに示す処理は、演算システム100が起動したことに応答して、ステップS600から開始する。ステップS601では、情報処理装置110は、当該情報処理装置110がアイドル状態にあるか否かを判定し、アイドル状態となるまでの間NOの間、ステップS601をループさせて待ち受ける。なお、情報処理装置110のアイドル状態は、情報処理装置110のOSオペレーティングシステムが備えるタスクスケジューラなどを監視することによって判定することができる。または、入出力部分やジョブ管理の待ちキューなどを監視することによるシステム固有の資源管理機能を利用してもよい。ステップS601で、情報処理装置110がアイドル状態にあると判定された場合YESは、ステップS602へ処理を進める。ステップS602では、情報処理装置110は、キューに機能変更命令があるか否かを判定する。ステップS602で、キューに機能変更命令が無いと判定された場合NOは、ステップS601へ処理をループさせて、機能変更命令を待ち受ける。一方、ステップS602では、キューに機能変更命令が有ると判定された場合YESは、ステップS603へ処理を分岐させる。ステップS603では、情報処理装置110は、アクセラレータ150に問い合わせを行って、アクセラレータ150の動作状態を確認する。ステップS604では、情報処理装置110は、機能変更が実施可能であるか否かを判定する。説明する実施形態では、当該情報処理装置110およびアクセラレータ150の両方がアイドル状態にあるときに、実施可能であると判定されるものとする。ステップS604で、実施可能であると判定された場合YESは、ステップS605で、機能切り替え処理を実行し、ステップS606で、キューから当該機能変更命令を削除した後、ステップS601へループさせて、次の指示を待ち受ける。一方、ステップS604で、実施不可能であると判定された場合NOは、ステップS601へ処理をループさせて、実施可能となるまで待ち受ける。図7は、第1の実施形態による機能切り替え処理を示すフローチャートである。なお、図7についても、図4および図5と同様に、ステップS700~S705は、情報処理装置ホスト110が実行主体となる処理であり、ステップS800~S806は、アクセラレータ150が実行主体となる処理である。図7に示す処理は、図6Aに示したステップS504または図6Bに示したステップS605で呼び出されて、ステップS700およびステップS800から開始される。ステップS701では、情報処理装置110は、選択された機能に対応するプログラムおよび構成データを準備する。ここでは、従前選択されていた機能に対応するプログラムが終了しているものとする。ステップS702では、情報処理装置110は、アクセラレータ150に対し、機能変更を要求するとともに、変更後の機能に対応する構成データを送信する。ステップS801では、アクセラレータ150は、情報処理装置110から、機能変更要求とともに構成データを受信する。アクセラレータ150は、ステップS802で、受信した構成データを構成データ格納部154に格納し、ステップS803で、格納した構成データに従って、再構成可能な演算器アレイ158の回路構成の再構成処理を実施する。アクセラレータ150は、再構成処理を完了させると、ステップS804で、情報処理装置110に対し準備完了信号を出力する。ステップS804に対応して、ステップS703では、情報処理装置110は、アクセラレータ150から準備完了信号を受信する。ステップS704では、情報処理装置110は、上記変更後の機能に対応するプログラムの実行を開始し、アクセラレータとの連携演算処理を行う。アクセラレータ150側でも、ステップS704に対応して、ステップS805で、連携演算処理が行われる。連携演算処理が終了すると、ステップS705およびステップS806で本処理を終了させる。なお、図7のステップS805で呼び出される連携演算は、図5に示したものと同様であるため、詳細な説明は省略する。上述したように、アクセラレータ150に搭載するプログラマブルデバイスとして、動的再構成が可能なリコンフィギュラブルプロセッサを用いることにより、電源遮断することなく、機能毎にアクセラレータ150の回路構成の変更が可能となる。つまり、あるタスクを一の局面ではアクセラレータ150上のハードウェアで処理し、他の局面ではCPU112でソフトウェア処理することができる。以下、図8および図9を参照しながら、上述したアクセラレータとの連携演算の利用態様について説明する。図8は、上述したアクセラレータとの連携演算をビデオデコード処理に適用した利用態様を説明する図である。図8に示す処理は、ビデオ再生が指示されたことに応答して、ステップS900から開始する。ステップS901では、情報処理装置110は、再生が要求されるビデオの品質が高画質設定であるか否かを判定する。ここでは、説明の便宜上、高画質であるか否かで処理を分岐させているが、ビットレート、コーデックの種類など画像ファイル自体の品質に応じて判定することができ、またユーザが許容する品質に応じて判定することができる。ステップS901で、ビデオ品質が高画質であると判定された場合YESは、ステップS902へ処理を進める。ステップS902では、情報処理装置110は、アクセラレータ150に、ビデオデコード機能に対応する構成データを送信するとともに、機能構成の変更を要求する。ステップS903では、情報処理装置110は、アクセラレータ150から準備完了信号を受信し、ステップS904では、アクセラレータ150と連携したビデオデコード演算を実行する。ビデオデコード演算が終了すると、ステップS906で、本ビデオデコード処理を終了する。一方、ステップS901で、ビデオ品質が高画質ではないと判定された場合NOは、ステップS905へ処理を進める。ステップS905では、情報処理装置110は、ソフトウェアデコーダによるビデオデコード処理を実行し、ステップS906で、本ビデオデコード処理を終了する。図8を参照して説明した連携演算処理によれば、高画質で再生する場合にはビデオデコード機能をアクセラレータ150上のハードウェア回路に担当させ、低画質で再生しても構わない場合にはCPU112でビデオデコードのソフトウェアに担当させることができる。つまり、演算負荷の大小に応じて、アクセラレータ150を使うか否かを切り替えることによって、アクセラレータ150が占有されてしまう可能性を低減するとともに、消費電力を低減することが可能となる。図9は、他の利用態様を説明するフローチャートである。図9に説明する例では、機能に対応するプログラムは、繰り返し実行されるコード単位を含み、該コード単位は、アクセラレータ150の準備状況に応じて、機能処理をCPU112によるソフトウェア処理として実行するか、アクセラレータ150を駆動した連携演算として実行するかを分岐させるコードを含む。アクセラレータ150の準備状況は、準備完了フラグによって表されており、準備完了フラグは、アクセラレータ150から準備完了信号を受信していない間は偽の値であり、該準備完了信号を受信すると真の値となる。図9に示す処理は、ステップS1000から開始し、ステップS1001では、情報処理装置110は、対応する構成データをアクセラレータ150に送信する。ステップS1002では、情報処理装置110は、対応するプログラムによる機能処理を開始する。ステップS1003では、情報処理装置110は、該プログラムの終了条件が成立したか否かを判定する。ステップS1003で、終了条件が成立していないと判定された場合NOは、ステップS1004へ処理が分岐される。ステップS1004では、情報処理装置110は、準備完了フラグの値が真であるか否かを判定する。ステップS1004で、準備完了フラグの値が偽であると判定された場合NOは、ステップS1005で、ソフトウェア処理として上述したコード単位の機能処理を実行し、ステップS1003へループさせる。一方、ステップS1004で、準備完了フラグの値が真であると判定された場合YESは、ステップS1006では、情報処理装置110は、アクセラレータ150との連携演算として上述したコード単位の機能処理を実行し、ステップS1003へループさせる。ステップS1003で、終了条件が成立したと判定された場合YESは、ステップS1007へ処理を進め、本処理を終了させる。図9に示す処理によれば、アクセラレータ150のハードウェア化が整っていない新しく実行された処理は、CPU112にてソフトウェア処理として実行する。一方、アクセラレータ150による実行準備が整い次第、アクセラレータ150と連携した演算に切り替えて処理が実行される。これにより、CPU負荷を軽減しつつ、システム全体の運用を効率化することが可能となる。以上説明した第1の実施形態には、以下に説明する利点がある。まず、情報処理装置110側からアクセラレータ150内のプログラマブルデバイスの機能を利用する場合、情報処理装置110側では、構成データによって構成済みのデバイスが提供する機能を前提としたプログラムを準備する必要がある。つまり、情報処理装置110側のプログラムと、アクセラレータ150側の構成データとの組み合わせが適切であることが必須である。上述までの第1の実施形態によれば、情報処理装置110側にプログラマブルデバイスの構成データと、それに対応したプログラムとが対応付けて蓄積され、使用時には情報処理装置110からアクセラレータ150に転送されて再構成される。このため、情報処理装置110側がアクセラレータ150に期待する機能と、アクセラレータ150が提供する機能との間に不一致を生じさせない。また、プログラム蓄積部118および構成データ蓄積部120は、半導体チップ上のメモリで構成する必要がなく、このようなメモリと比較して安価に大容量化できる2次記憶装置を用いて構成することができる。このことから、多様な機能を実現するため多数の構成データおよびプログラムを蓄積しても支障がなく、半導体製造コストの上昇も招かない。さらに、ホスト110からアクセラレータ150へ構成データを転送し、アクセラレータ150内で構成設定を完了させるまでは、ある程度の時間を要することになる。プログラマブルデバイスとして一般的なFPGAを利用する場合、システム全体を停止させ、FPGAの回路書き換え命令と構成データとを送信し、書き換え後にシステムをリブートして新たなシステムとして動作させる手間がかかる。さらに、リブート時間が必要であり、この期間は、ユーザを待たしてしまうことになる。これに対して、上記第1の実施形態では、構成データの転送および再構成処理が起動時に実行されるため、アクセラレータ150の設定処理に要する時間を情報処理装置110の起動時間に隠蔽することができ、使用感を著しく向上させることが可能である。また、ユーザによる機能変更が指示された際、情報処理装置110およびアクセラレータ150のいずれかでもアイドル状態でない場合は、動作中の処理を中断しない限り、プログラマブルデバイスの構成を変更することができない。上記第1の実施形態によれば、情報処理装置110およびアクセラレータ150のアイドル状態を検知して、構成データの転送および再構成処理が実行されるため、演算処理途中の結果を失うことなく、ユーザからの、プログラマブルデバイスの構成変更を伴う機能実行要求を受け付けることが可能となる。また、ユーザによる機能変更が指示された際に、情報処理装置110およびアクセラレータ150のいずれかでもアイドル状態でない場合に、実行中の処理を停止するか、停止するまで待つ態様が考えられる。上述した実施形態では、実行中の処理が停止するまで待つものとして説明したが、ユーザが許すのであれば、実行中の処理を停止した上で機能変更を実行することを妨げるものではない。上述した第1の実施形態による演算システム100は、アクセラレータ150と、該アクセラレータ150のホストとなる情報処理装置110とから構成されるものであった。以下、図10および図11を参照しながら、第2の実施形態による演算システムについて説明する。図10は、第2の実施形態による演算システムの概略を示すブロック図である。図10に示す演算システム300は、アクセラレータ350と、該アクセラレータ350の直接のホストとなる第1情報処理装置310と、第2情報処理装置370とを含み構成される。第1情報処理装置310は、各種演算をハードウェア回路として実装するアクセラレータ350を直接利用する直接のホスト装置であり、かつ、アクセラレータ350の演算資源を、アクセラレータ350を直接利用できない他の情報処理装置に対して提供する機能を備える。第2情報処理装置370は、上記情報処理装置310を経由してアクセラレータ350の演算資源を利用する要求元である。以下、第1情報処理装置をホスト310と参照し、第2情報処理装置を要求元370という場合がある。第1情報処理装置310は、第1の実施形態の情報処理装置110と同様に、CPU312、制御部314、RAM316、プログラム蓄積部318、構成データ蓄積部320および送信バッファ322を備える。本実施形態による第1情報処理装置310は、さらに、ネットワークインタフェース324を備える。第1の実施形態で説明したものと同一のハードウェアコンポーネント312~322については、第1の実施形態と同様のはたらきをするので、説明を割愛する。ネットワークインタフェース324は、TCP/IPやイーサネット登録商標などのプロトコルに従って、第1情報処理装置310を有線または無線のネットワークに接続させるインタフェース機器である。本実施形態のネットワークインタフェース324は、ネットワークを介して第1情報処理装置310を第2情報処理装置370に接続させている。一方、第2情報処理装置370は、第1情報処理装置310と類似した構成を有しており、CPU372と、RAM374と、データ蓄積部376と、ネットワークインタフェース378とを備える。CPU372は、後述する第1情報処理装置310を経由してアクセラレータ350を利用する処理を含めて、第2情報処理装置370の全体制御を行う手段である。RAM374は、上記CPU372による演算のための作業空間を提供する記憶装置である。ネットワークインタフェース378は、TCP/IPやイーサネット登録商標などのプロトコルに従って、第2情報処理装置370を有線または無線のネットワークに接続させるインタフェース機器である。本実施形態のネットワークインタフェース378は、ネットワークを介して第2情報処理装置370を第1情報処理装置310に接続させている。データ蓄積部376は、ホスト310に実行させるソフトウェアプログラムコードと、ホスト310を経由してアクセラレータ350のプログラマブルデバイスに送信するための構成データとを対応付けて蓄積する記憶領域である。上記プログラムおよび構成データに関連付けて、当該第2情報処理装置370で実行するソフトウェアプログラムコードを蓄積していてもよい。データ蓄積部376は、特に限定されるものではないが、HDDやSSDなどの2次記憶装置により提供することができる。アクセラレータ350は、第1の実施形態と同様であるため説明を割愛する。第2情報処理装置370は、必要となったときに、アクセラレータ350の演算機能の提供を受けるため第1情報処理装置310に演算を要求する。第2の実施形態における演算システム300においては、第1情報処理装置310は、第2情報処理装置370から演算の要求があった時に、要求された演算機能に応じた構成データを構成データ蓄積部320から読み出して、アクセラレータ350へ送信する。アクセラレータ350は、外部インタフェースを介して受信した構成データを構成データ格納部に格納し、該構成データに従って再構成可能な演算器アレイを構成する。第1情報処理装置310は、アクセラレータ350の準備完了の通知を受けて、プログラム蓄積部318に蓄積されるプログラムを実行する。当該プログラムは、第2情報処理装置370からの要求を受けて、上記構成データによりアクセラレータ350のプログラマブルデバイス上に実現される機能を利用し、その演算結果を第2情報処理装置370へ応答するコードを含む。第2情報処理装置370は、第1情報処理装置310から送信される要求した演算結果を受信して、自身の処理に組み込み、最終的な結果を得る。プログラムと構成データとは、第1の実施形態と同様に、対応付けられて管理される。上記構成データおよびプログラムは、必ずしも第1情報処理装置310が蓄積していない場合があるため、第2の実施形態では、直接のホスト310からアクセラレータ350の演算機能の提供を受けている要求元の第2情報処理装置370が、これらの構成データおよびプログラムを提供してもよい。図11は、第2の実施形態による第2情報処理装置要求元と第1情報処理装置ホストとアクセラレータとを連携させた演算処理の起動時の全体フローを示すシーケンス図である。図11に示す処理は、要求元370側から開始され、ステップS1101では、要求元370は、ホスト310に対し、処理を依頼する要求を発行する。これに対応してホスト310は、該処理要求を受け付ける。ステップS1102では、要求元370は、ホスト310に対し、依頼する処理の演算機能を指定する。これに対応してホスト310は、演算の指定を受け付ける。ステップS1103では、要求元370は、ホスト310に対し、上記指定した演算で用いるデータ、パラメータを送信する。これに対応してホスト310は、上記指定した演算で用いるデータ、パラメータを受け付ける。ステップS1104では、ホスト310は、要求元370から指定された演算機能に対応するプログラムおよび構成データが、自身の蓄積部318,320に蓄積されているか否かを判定する。なお、図11に示すシーケンス図では、自身の蓄積部318,320に必要なプログラムおよび構成データが蓄積されていない場合を例に説明するが、蓄積されているの場合は、後述するステップS1105およびステップS1106が省略される。ステップS1105では、ホスト310は、要求元370に対し、必要なプログラムおよび構成データの送信を依頼する。ステップS1106では、要求元370は、送信依頼を受けて、データ蓄積部376から対応するプログラムおよび構成データを読み出し、ホスト310へ送信する。ステップS1107では、ホスト310は、要求元370から受信した構成データをアクセラレータ350に送信して、プログラマブルデバイスの再構成処理を要求する。ステップS1108では、アクセラレータ350は、ホスト310から受信した構成データを構成データ格納部に格納する。ステップS1109では、アクセラレータ350は、格納した構成データに従って、再構成可能な演算器アレイの回路構成の再構成処理を実施する。アクセラレータ350は、構成処理を完了させると、ステップS1110で、ホスト310に対し、準備完了信号を出力する。ステップS1111では、ホスト310は、要求元370から上記構成データとともに受信したプログラムによる処理を開始させる。ホスト310は、ステップS1112で、アクセラレータ350を初期化し、ステップS1113で、データおよびパラメータ、またはこれらのいずれか一方を用いて、アクセラレータ350を駆動する命令コードを実行し、演算依頼を行う。ステップS1114では、ホスト310は、アクセラレータ350から演算結果を受信する。上記ステップS1113およびステップS1114を適宜繰り返し、要求元370から要求された演算が完了した後、ホスト310は、ステップS1115で、アクセラレータ350に終了を通知し、ステップS1116で、要求元370に演算終了を報告する。ステップS1117では、要求元370は、演算結果を受け入れる準備が整ったことを通知する結果受付準備完了通知をホスト310に対し送信する。ステップS1118では、ホスト310は、結果受付準備完了通知を受けて、処理結果を要求元370へ返却するコードを実行し、処理結果を送信する。ステップS1119では、要求元370は、処理結果を受けて、処理結果受信通知をホスト310に送信し、ステップS1120で、要求終了応答を受信する。上述した第2の実施形態の演算システム300によれば、アクセラレータ350を直接利用できない情報処理装置370においても、アクセラレータ350を直接利用できる情報処理装置310を経由して、同等な演算機能を利用できる。これにより、ホスト310の有効性を著しく向上させることができる。また、単一のホストからのみアクセラレータを利用する構成においては、常にアクセラレータを必要とする演算を実施する場合を除けば、通常、アクセラレータの遊休時間が存在する。上記第2の実施形態によれば、外部の情報処理装置370からアクセラレータ350を利用可能としているので、アクセラレータ350の利用率の向上にも寄与する。さらに、上記第2の実施形態では、直接のホスト310がプログラムおよび構成データを備えなくても、要求元370からプログラムおよび構成データを送信できるため、直接のホスト310に格納されているプログラムおよび構成データによって実行できる演算機能に限定されない。以上説明してきたように、上述した実施形態によれば、FPGAなどに代表されるプログラマブルデバイスを搭載するアクセラレータと接続される情報処理装置において、プログラマブルデバイスの複数の構成データを蓄積し、所望の機能を実現するために適切な構成データを選択設定してプログラマブルデバイスを再構成し、該プログラマブルデバイスと連携した処理を行う情報処理装置、演算方法、およびプログラムを提供することができる。上述した実施形態によれば、FPGAなどに代表されるプログラマブルデバイスをアクセラレータとして用いる情報処理装置において、アクセラレータを情報処理装置が求める多様な設定に構成し、情報処理装置と連携することが可能になり、アクセラレータの有効性を著しく向上させることが可能となる。さらに、アクセラレータを備える情報処理装置を経由して、アクセラレータを備えない他の情報処理装置においても、アクセラレータと連携した演算の結果を利用することができるので、アクセラレータの利用範囲が拡大される。なお、上記機能部は、アセンブラ、C、C、C、Java登録商標、などのレガシープログラミング言語やオブジェクト指向プログラミング言語などで記述されたコンピュータ実行可能なプログラムにより実現でき、ROM、EEPROM、EPROM、フラッシュメモリ、フレキシブルディスク、CD-ROM、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、ブルーレイディスク、SDカード、MOなど装置可読な記録媒体に格納して、あるいは電気通信回線を通じて頒布することができる。これまで本発明の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用効果を奏する限り、本発明の範囲に含まれるものである。"