(57)【要約】【課題】構成変更型集積回路を用いてアプリケーションプログラムを効率的に実行する構成変更型集積回路の割当システム。【解決手段】構成変更型集積回路の割当システム１０は、アプリケーションプログラムを実行する仮想化環境１０５を複数備え、構成変更可能な複数の構成変更型集積回路１０４と、複数の構成変更型集積回路のうちの所定の構成変更型集積回路に対し、複数の仮想化環境のうちの所定の仮想化環境により指示されるアプリケーションプログラムの所定の処理を割り当てるキューイング処理部１１１と、所定の仮想化環境に所定の構成変更型集積回路を割り当てる割当処理部１１２と、所定の構成変更型集積回路を構成変更するロジック変更処理部１１３と、を有する。【選択図】図１
2020190867.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムを実行する仮想化環境を複数備える構成変更型集積回路の割当システムであって、
構成変更可能な複数の構成変更型集積回路と、
前記複数の構成変更型集積回路のうちの所定の構成変更型集積回路に対し、前記複数の仮想化環境のうちの所定の仮想化環境により指示される前記アプリケーションプログラムの所定の処理を割り当てるキューイング処理部と、
前記所定の仮想化環境に前記所定の構成変更型集積回路を割り当てる割当処理部と、
前記所定の構成変更型集積回路を構成変更するロジック変更処理部と、を有する
構成変更型集積回路の割当システム。
【請求項２】
前記キューイング処理部は、
前記複数の構成変更型集積回路ごとに蓄積される前記アプリケーションプログラムの処理時間を算出する機能と、
前記構成変更型集積回路の構成変更の時間を算出する機能と、
前記アプリケーションプログラムの処理時間および前記構成変更の時間を合計した実行時間を前記複数の構成変更型集積回路ごとに算出する機能と、
前記複数の構成変更型集積回路ごとの前記実行時間に基づいて第１の構成変更型集積回路を選択する機能と、
構成変更前の回路を使用して前記所定の処理を実行可能な第２の構成変更型集積回路を選択する機能と、
前記第１の構成変更型集積回路および前記第２の構成変更型集積回路を比較して前記所定の構成変更型集積回路を選択する機能と、を有する
請求項１に記載の構成変更型集積回路の割当システム。
【請求項３】
さらに、前記キューイング処理部は、
前記仮想化環境ごとの優先順位情報と、
前記優先順位情報に基づいて前記所定の処理を割り当てる機能と、を有する
請求項２に記載の構成変更型集積回路の割当システム。
【請求項４】
さらに、前記割当処理部は、
前記所定の構成変更型集積回路を構成変更するかを判定する機能と、
前記所定の構成変更型集積回路を構成変更するの判定結果に基づいて前記ロジック変更処理部を実行する機能と、を有する
請求項２に記載の構成変更型集積回路の割当システム。
【請求項５】
さらに、前記構成変更型集積回路の割当システムは、
前記構成変更型集積回路の割り当て実績を前記仮想化環境ごとに蓄積するシステム稼働履歴記憶部と、
前記システム稼働履歴記憶部の情報に基づいて、前記構成変更型集積回路の構成変更のスケジュールを設定するスケジュール計算処理部と、を備え、
前記ロジック変更処理部は、前記構成変更型集積回路が前記アプリケーションプログラムの処理から解放された場合に、前記スケジュールに示される回路を前記構成変更型集積回路に実装する機能を有する
請求項１に記載の構成変更型集積回路の割当システム。
【請求項６】
さらに、前記構成変更型集積回路の割当システムは、ロジックデザイン処理部を備え、
前記ロジックデザイン処理部は、
前記システム稼働履歴記憶部の情報に基づいて複数の回路を一つの前記構成変更型集積回路に実装可能かを判定する機能を有し、
さらに、前記スケジュール計算処理部は、
前記ロジックデザイン処理部の判定結果に基づいて前記スケジュールを算出する機能を有する
請求項５に記載の構成変更型集積回路の割当システム。
【請求項７】
前記構成変更型集積回路の割当システムは、
前記システム稼働履歴記憶部に保存される情報が所定数以上の場合に前記スケジュール計算処理部を実行し、
前記キューイング処理部および前記割当処理部を前記スケジュール計算処理部から独立の状態で実行させることにより前記システム稼働履歴記憶部に情報を蓄積させる
請求項５に記載の構成変更型集積回路の割当システム。
【請求項８】
さらに、前記構成変更型集積回路の割当システムは、予実績判定処理部を備え、
予実績判定処理部は、
前記スケジュールと、前記システム稼働履歴記憶部に保存される情報と、を比較して前記スケジュールの再設定をするか判定する機能と、
前記スケジュールの再設定の判定結果に基づき前記スケジュール計算処理部を実行する機能と、を有する
請求項５に記載の構成変更型集積回路の割当システム。
【請求項９】
複数の構成変更型集積回路のうちの所定の構成変更型集積回路に対し、仮想化環境のうちの所定の仮想化環境により指示されるアプリケーションプログラムの所定の処理を割り当て、
前記所定の仮想化環境に前記所定の構成変更型集積回路を割り当て、
前記所定の構成変更型集積回路を構成変更し、
前記所定の仮想化環境にてアプリケーションプログラムの前記所定の処理を実行する、
構成変更型集積回路の割当方法。
【請求項１０】
コンピュータを、アプリケーションプログラムを実行する仮想化環境を複数備える、構成変更型集積回路の割当システムとして機能させるためのコンピュータプログラムであって、
前記コンピュータには、構成変更可能な複数の構成変更型集積回路が備えられ、
前記コンピュータ上に、
前記複数の構成変更型集積回路のうちの所定の構成変更型集積回路に対し、前記仮想化環境のうちの所定の仮想化環境により指示される前記アプリケーションプログラムの所定の処理を割り当てるキューイング処理部と、
前記所定の仮想化環境に前記所定の構成変更型集積回路を割り当てる割当処理部と、
前記所定の構成変更型集積回路を構成変更するロジック変更処理部と、
をそれぞれ実現させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構成変更型集積回路の割当システム、構成変更型集積回路の割当方法およびコンピュータプログラムに関する。
【背景技術】
【０００２】
いわゆるクラウドコンピュータ上で各種の情報処理サービスを提供するサービスプロバイダは、機械学習またはデータ分析等を実行するアプリケーションプログラム（以下、アプリケーションと略記する場合がある）の実行環境を構築することにより、クラウドサービスを顧客へ提供している。クラウドサービスでは、構成変更可能集積回路（以下、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）と示す場合がある）またはＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等を用いることにより、アプリケーションの処理を高速化することが検討されている。ＦＰＧＡおよびＧＰＵ等のハードウェア資源は限られるため、サービスプロバイダは、複数のアプリケーションの実行環境の間で、ＦＰＧＡおよびＧＰＵ等を共有する制御が求められる。
【０００３】
特許文献１の計算デバイスは、動的に選択されたスケジューリングポリシに基づいて、ＧＰＵコマンドをスケジュールするＧＰＵスケジューラを有する。ＧＰＵスケジューラは、異なる仮想マシンからＧＰＵコマンドを受け取り、スケジューリングポリシを動的に選択し、ＧＰＵが処理するＧＰＵコマンドをスケジュールする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１７−５２２６５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の計算デバイスは、スケジューリングポリシを切り替えることによって複数の仮想マシンでＧＰＵを共有する。しかしながら、ＦＰＧＡを実行環境ごとに共有する場合には、ＦＰＧＡを実行環境の間で切り替える際の構成変更に要する時間（オーバーヘッド）が発生する。
【０００６】
そこで本発明は、上記の課題を解決する為になされたものであり、構成変更型集積回路を割り当てることによってアプリケーションプログラムの処理を効率的に実行することを目的とする。
【課題を解決するための手段】
【０００７】
構成変更型集積回路の割当システムは、アプリケーションプログラムを実行する仮想化環境を複数備え、構成変更可能な複数の構成変更型集積回路と、複数の構成変更型集積回路のうちの所定の構成変更型集積回路に対し、複数の仮想化環境のうちの所定の仮想化環境により指示されるアプリケーションプログラムの所定の処理を割り当てるキューイング処理部と、所定の仮想化環境に所定の構成変更型集積回路を割り当てる割当処理部と、所定の構成変更型集積回路を構成変更するロジック変更処理部と、を有する。
【発明の効果】
【０００８】
本発明によれば、構成変更型集積回路を用いてアプリケーションプログラムの処理を効率的に実行することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施例の管理サーバの概略図。
【図２】管理サーバのハードウェア構成の概略図。
【図３】タスクリスト記憶部の説明図。
【図４】キューイング処理部の流れ図。
【図５】タスクキュー記憶部の説明図。
【図６】タスクの実行時間の説明図。
【図７】優先順位情報の説明図。
【図８】割当処理部の流れ図。
【図９】第２の実施例に係る管理サーバの概略図。
【図１０】スケジュール生成処理の流れ図。
【図１１】システム稼働履歴記憶部の説明図。
【図１２】ロジック適用スケジュールの説明図。
【発明を実施するための形態】
【００１０】
以下、本実施例を添付図面に基づいて説明するが、当該図面に記載の構成に限定されない。
【００１１】
本実施形態は、構成変更可能な構成変更型集積回路を仮想化環境に割り当てることによって、アプリケーションプログラムを効率よく実行する構成変更型集積回路の割当システムに関するものである。このため、本実施形態では、ＦＰＧＡの構成変更に係る時間を考慮してアプリケーションのタスクを動的に割り当てる。アプリケーションのタスクは、それぞれ独立したコンテナの中でＦＰＧＡにより処理される。なお、以下に示す実施形態において、構成変更型集積回路の割当システムは、管理サーバと示す場合がある。
【実施例１】
【００１２】
図１は、本実施例の管理サーバ１０の概略図である。管理サーバ１０は、「仮想化環境」の一例としてのコンテナ１０５を複数備え、アプリケーションプログラム５０（図２参照）を実行する。なお、アプリケーションプログラム５０は、アプリケーション５０と略記する場合がある。
【００１３】
管理サーバ１０は、通信ネットワーク３０を介して操作端末２０（１），２０（２）と接続される。なお、操作端末２０（１），２０（２）は、特に区別しない場合には操作端末２０と示す場合がある。
【００１４】
利用者が操作端末２０を操作することによって、アプリケーション５０を実行させる制御信号が通信ネットワーク３０を介して管理サーバ１０に送信される。その制御信号を受けた管理サーバ１０は、アプリケーション５０を実行する。管理サーバ１０は、通信ネットワーク３０を介して、実行結果を操作端末２０へ送信する。
【００１５】
管理サーバ１０は、例えば、「複数の構成変更型集積回路」の一例としての複数のＦＰＧＡ１０４と、複数のコンテナ１０５と、キューイング処理部１１１と、割当処理部１１２と、ロジック変更処理部１１３と、タスクリスト記憶部１２１と、タスクキュー記憶部１２２と、ロジック記憶部１２３と、を有する。なお、図１に示す、タスクリスト記憶部１２１と、タスクキュー記憶部１２２と、ロジック記憶部１２３と、は、「記憶部」の記載を省略して示す。
【００１６】
コンテナ１０５は、管理サーバ１０の有するコンピュータ資源を仮想的に分割して、それぞれ並行してアプリケーション５０を処理することのできる環境を提供するものであり、例えば、仮想マシンまたはコンテナ技術を用いて構成される。仮想マシンは、例えば、ハイパーバイザ型の仮想化ソフトウェアによって設定された、管理サーバ１０の仮想的なハードウェア資源を示す。コンテナ技術は、例えば、コンテナ型の仮想化ソフトウェアによって設定された管理サーバ１０の仮想的なハードウェア資源を示す。コンテナ型の仮想化ソフトウェアは、一つのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）上に、それぞれ独立した管理サーバ１０の仮想的なハードウェア資源を複数設定する。
【００１７】
コンテナ１０５は、例えば、利用者が操作端末２０を用いてアプリケーション５０の操作をすることによって、アプリケーション５０の処理の情報（以降、タスクと示す場合がある）を算出する。キューイング処理部１１１は、タスクの情報をコンテナ１０５から取得する。
【００１８】
キューイング処理部１１１は、タスクリスト記憶部１２１にタスクの情報を保存する。  キューイング処理部１１１は、図４にて詳述するように、タスクを各ＦＰＧＡ１０４に割り当てるプログラムである。キューイング処理部１１１は、タスクキュー記憶部１２２と双方向に通信し、割り当て結果をタスクキュー記憶部１２２に保存する。
【００１９】
タスクキュー記憶部１２２は、図５にて詳述するように、各ＦＰＧＡ１０４に対して割り当てられたタスクの情報を保存するデータベースである。割当処理部１１２は、ＦＰＧＡ１０４をコンテナ１０５に対してマウントするプログラムである。
【００２０】
割当処理部１１２は、タスクキュー記憶部１２２からキューイング処理部１１１の割り当て結果を取得する。割当処理部１１２は、タスクリスト記憶部１２１からコンテナ１０５の情報を取得する。割当処理部１１２は、ＦＰＧＡ１０４の状態を取得する。ＦＰＧＡ１０４の状態は、例えば、ＦＰＧＡ１０４がタスクを実行状態、ＦＰＧＡ１０４の構成変更状態、または、ＦＰＧＡ１０４の待機状態等が挙げられる。割当処理部１１２は、ＦＰＧＡ１０４の構成変更を行う場合には、ロジック変更処理部１１３を実行する。
【００２１】
ロジック変更処理部１１３は、ＦＰＧＡ１０４の構成変更をするプログラムである。ロジック変更処理部１１３は、変更するＦＰＧＡ１０４の情報と、ＦＰＧＡ１０４に適用するロジックの情報と、を割当処理部１１２から取得する。ロジック変更処理部１１３は、ロジック記憶部１２３からロジックの情報を取得する。
【００２２】
図２は、管理サーバ１０のハードウェア構成の概略図である。管理サーバ１０は、例えば、プロセッサ１０１と、補助記憶装置１０２と、メモリ１０３と、ＦＰＧＡ１０４と、入出力装置１０６と、通信インターフェース１０７と、各装置１０１〜１０４，１０６，１０７をそれぞれ双方向に通信可能に接続するデータ伝送路１０８と、を有する。
【００２３】
プロセッサ１０１は、例えば「ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）」である。プロセッサ１０１は、プログラム１１１〜１１３またはアプリケーション５０を、補助記憶装置１０２からメモリ１０３に読み込んで実行することにより各機能を実現する。
【００２４】
補助記憶装置１０２は、例えば、ハードディスクまたはＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の不揮発性記憶装置である。補助記憶装置１０２は、例えば、キューイング処理部１１１と、割当処理部１１２と、ロジック変更処理部１１３と、アプリケーション５０と、のプログラムを記憶している。
【００２５】
補助記憶装置１０２は、例えば、タスクリスト記憶部１２１と、タスクキュー記憶部１２２と、ロジック記憶部１２３と、のデータベースを有する。なお、図２に示す各データベースでは、「記憶部」の記載を省略して示す。アプリケーション５０は、例えば、「機械学習ＳＤＫ（Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ）」等の特定の目的の為に作られたソフトウェアを示す。
【００２６】
なお、各プログラム１１１〜１１３、アプリケーション５０または各データベース１２１〜１２３のうち少なくとも一部は、外部記録媒体４０を介して管理サーバ１０にインストールされてもよい。外部記録媒体４０は、例えば、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）カード、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）カード、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、Ｂｌｕｅ  Ｒａｙ  Ｄｉｓｋ、その他の光ディスク、または、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ等である。
【００２７】
各プログラム１１１〜１１３、アプリケーション５０または各データベース１２１〜１２３は、同一の外部記憶媒体４０に格納されていることに限らず、複数の外部記憶媒体４０にそれぞれ格納されていてもよい。メモリ１０３は、例えば、「ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）」等の揮発性記憶装置である。
【００２８】
入出力装置１０６は、例えば、ディスプレイ、キーボード、ポインタデバイス、携帯情報端末（タブレット端末、スマートフォン等）である。音声で管理サーバ１０の少なくとも一部を操作可能としてもよい。通信インターフェース１０７（図中、通信Ｉ／Ｆと示す場合がある）は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）の接続端子、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）の接続端子または無線通信の接続装置等である。通信インターフェース１０７は、例えば、通信ネットワーク３０を介して操作端末２０と無線通信で接続される。なお、通信インターフェース１０７は、操作端末２０と有線通信で接続されてもよい。
【００２９】
操作端末２０は、利用者がアプリケーション５０を操作するコンピュータである。管理サーバ１０には、アプリケーション５０の利用者ごとに異なる操作端末２０が接続されてもよい。管理サーバ１０には、操作端末２０（１），２０（２）の二つに限らず、三つ以上の操作端末２０が接続されてもよい。
【００３０】
入出力装置２０１は、利用者により操作される装置であり、例えばディスプレイおよびキーボードなどが含まれる。操作端末２０は、利用者により入出力装置２０１に入力されたデータを、通信ネットワーク３０を介して管理サーバ１０に送信する。操作端末２０は、管理サーバ１０から送信されたデータを通信ネットワーク３０を介して受信し、入出力装置２０１に表示させることもできる。
【００３１】
図３は、タスクリスト記憶部１２１の説明図である。タスクリスト記憶部１２１には、各コンテナ１０５から送信されたタスクの情報が保存される。タスクリスト記憶部１２１には、例えば、タスクＩＤ（ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）１２１１と、ロジックＩＤ１２１２と、コンテナＩＤ１２１３と、が保存される。
【００３２】
タスクＩＤ１２１１には、タスクの識別情報が保存される。タスクＩＤ１２１１には、具体的には、例えば、「タスク＿０１」〜「タスク＿１２」が示される。タスクＩＤ１２１１には、「タスク＿０１」から「タスク＿１２」の順番で各コンテナ１０５から送信される。
【００３３】
ロジックＩＤ１２１２には、ＦＰＧＡ１０４のロジックの識別情報が保存される。ロジックＩＤ１２１２には、例えば、「判定処理＿０１」と、「モデル生成＿０１」と、「モデル生成＿０２」と、「ＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）＿Ｄｒｉｌｌ＿０１」と、「ＳＱＬ＿Ｉｍｐａｒａ＿０１」と、が示される。
【００３４】
コンテナＩＤ１２１３には、タスクをタスクリスト記憶部１２１に送信したコンテナ１０５の識別情報が保存される。コンテナＩＤ１２１３には、例えば、「コンテナ＿０１」〜「コンテナ＿１２」と各コンテナ１０５の識別情報が示される。
【００３５】
なお、コンテナ１０５がタスクの処理を完了する場合には、管理サーバ１０は、該当するタスクの情報１２１１〜１２１３をタスクリスト記憶部１２１から削除してもよい。
【００３６】
なお、キューイング処理１１１の機能を説明する場合において、「所定のコンテナ」の一例としての「コンテナ＿１２」によって新しく算出された「タスク＿１２」を「所定のタスク」の一例として説明する。
【００３７】
キューイング処理部１１１は、「コンテナ＿１２」が「タスク＿１２」を算出することによって実行される。キューイング処理部１１１は、「タスク＿１２」の情報をタスクリスト記憶部１２１に保存する。
【００３８】
図４は、キューイング処理部１１１の流れ図である。キューイング処理部１１１は、タスクリスト記憶部１２１およびタスクキュー記憶部１２２を参照して、「第１の構成変更型集積回路」の一例としての第１のＦＰＧＡを選択する（Ｓ１１）。第１のＦＰＧＡの選択方法を説明する前に、タスクキュー記憶部１２２の説明をする。
【００３９】
図５は、タスクキュー記憶部１２２の説明図である。タスクキュー記憶部１２２は、ＦＰＧＡ情報（図中、ＦＰＧＡ＿ＩＤと示す場合がある）１２２１と、タスクキュー１２２２＿０１〜１２２２＿Ｎ（Ｎ＝任意の数）と、を有する。なお、タスクキュー１２２２＿０１〜１２２２＿Ｎは、特に区別しない場合には、タスクキュー１２２２と示す場合がある。
【００４０】
ＦＰＧＡ情報１２２１には、ＦＰＧＡ１０４の識別情報が保存される。ＦＰＧＡ情報１２２１には、例えば、「ＦＰＧＡ＿０１」〜「ＦＰＧＡ＿０８」が示される。
【００４１】
タスクキュー１２２２には、例えば、タスクＩＤ１２１１がＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）の構造で保存される。すなわち、タスクキュー１２２２＿０１〜タスクキュー１２２２＿Ｎの順番でタスクＩＤ１２１１が保存される。
【００４２】
タスクキュー１２２２＿０１に保存されるタスクＩＤ１２１１は、例えば、コンテナ１０５で実行される。タスクキュー１２２２＿０１に保存されるタスクＩＤ１２１１の処理が終了した場合には、タスクキュー１２２２＿０２に保存されるタスクＩＤ１２１１が同一のＦＰＧＡ情報１２２１のタスクキュー１２２２＿０１に移動する。
【００４３】
なお、タスクキュー１２２２は、割り当てられたタスクの数により、追加または削除されてもよい。すなわち、任意の数Ｎは、一定の値に限らず、割り当てられたタスクの数によって増減される変数でもよい。
【００４４】
キューイング処理部１１１の第１のＦＰＧＡを選択する方法を説明する。図６は、各ＦＰＧＡ１０４におけるタスクの実行時間の説明図である。各ＦＰＧＡ１０４の中から、「ＦＰＧＡ＿０１」と、「ＦＰＧＡ＿０２」と、「ＦＰＧＡ＿０４」と、を一例に挙げてキューイング処理部１１１の第１のＦＰＧＡを選択する方法を説明する。
【００４５】
「ＦＰＧＡ＿０１」には、「タスク＿０１」がタスクキュー１２２２＿０１に保存される。「ＦＰＧＡ＿０２」には、「タスク＿０２」および「タスク＿０９」がタスクキュー１２２２＿０１およびタスクキュー１２２２＿０２に保存される。「ＦＰＧＡ＿０４」には、「タスク＿０４」および「タスク＿１０」がタスクキュー１２２２＿０１およびタスクキュー１２２２＿０２に保存される。
【００４６】
「タスク＿０１」〜「タスク＿１２」の実行時間は、ユーザによって設定されてもよい。なお、「タスク＿０１」〜「タスク＿１２」の実行時間は、コンテナ１０５が各タスクを実行した実績の情報から算出されてもよい。
【００４７】
「タスク＿０１」〜「タスク＿１２」の実行時間は、具体的には、例えば、「４０秒」に設定される。なお、「タスク＿０１」〜「タスク＿１２」の実行時間は、一律に設定されることに限らず、タスクＩＤ１２１１ごとに実行時間が設定されてもよい。
【００４８】
ＦＰＧＡ１０４の構成変更時間６０は、ユーザによって設定されてもよい。なお、ＦＰＧＡ１０４の構成変更時間６０は、ＦＰＧＡ１０４の構成変更の実績から算出されてもよい。新しいロジックＩＤ１２１２の構成変更時間６０は、新しいロジックがＦＰＧＡ１０４の面積を占める割合に基づいて、実績のあるロジックＩＤ１２１２の構成変更時間６０から算出されてもよい。その実績のあるロジックＩＤ１２１２の面積は、新しいロジックの面積と同様である。
【００４９】
ＦＰＧＡ１０４の構成変更時間６０は、具体的には、例えば、「５０秒」に設定される。なお、構成変更時間６０は、一律に設定されることに限らず、構成変更後のロジックＩＤ１２１２に基づいて、タスクＩＤ１２１１ごとにそれぞれ設定されてもよい。
【００５０】
なお、タスクの実行が途中である場合には、キューイング処理部１１１は、「タスク＿０１」〜「タスク＿１２」の実行時間の残りの時間を算出する。ＦＰＧＡ１０４の構成変更が途中である場合には、キューイング処理部１１１は、構成変更時間６０の残りの時間を算出する。
【００５１】
キューイング処理部１１１は、「ＦＰＧＡ＿０１」、「ＦＰＧＡ＿０２」および「ＦＰＧＡ＿０４」ごとに、タスクの実行時間と、構成変更時間６０との合計時間を算出する。すなわち、キューイング処理部１１１は、ＦＰＧＡ１０４ごとに、タスクの実行時間と、構成変更時間６０との合計時間を算出する。
【００５２】
「ＦＰＧＡ＿０１」の合計時間は、例えば、「タスク＿０１」の実行時間である「４０秒」である。なお、「ＦＰＧＡ＿０３」，「ＦＰＧＡ＿０６」〜「ＦＰＧＡ＿０８」は、「ＦＰＧＡ＿０１」と同様にタスクの数が「１」であるため、実行時間が「４０秒」である。
【００５３】
「ＦＰＧＡ＿０２」の合計時間は、例えば、「タスク＿０２」および「タスク＿０９」の実行時間である「８０秒」である。なお、「ＦＰＧＡ＿０５」は、「ＦＰＧＡ＿０２」と同様に、「タスク＿０５」と、「タスク＿１１」と、のロジックＩＤ１２１２が一致しているので、合計時間が「８０秒」である。
【００５４】
「タスク＿０４」と、「タスク＿１０」と、のロジックＩＤ１２１２が異なるため、「ＦＰＧＡ＿０４」の合計時間には、構成変更時間６０が含まれる。これにより、「ＦＰＧＡ＿０４」の合計時間は、例えば、「タスク＿０４」および「タスク＿１０」の実行時間と、構成変更時間６０と、の合計の「１３０秒」である。
【００５５】
なお、本実施例において、各ＦＰＧＡ１０の合計時間には、各プログラム１１１〜１１３の処理時間またはＦＰＧＡ１０４の待機時間等が含まれてもよい。
【００５６】
図４を参照する。キューイング処理部１１１は、例えば、実行時間が「４０秒」の「ＦＰＧＡ＿０１」，「ＦＰＧＡ＿０３」，「ＦＰＧＡ＿０６」〜「ＦＰＧＡ＿０８」を第１のＦＰＧＡに選択する（Ｓ１１）。すなわち、キューイング処理部１１１は、例えば、各ＦＰＧＡ１０４のうちの短い合計時間を有する第１のＦＰＧＡを選択する。
【００５７】
キューイング処理部１１１は、処理（Ｓ１２）に移動する。キューイング処理部１１１は、タスクリスト記憶部１２１から「タスク＿１２」のロジックＩＤ１２１２を取得する。「タスク＿１２」のロジックＩＤ１２１２は、例えば、「モデル生成＿０２」である。
【００５８】
キューイング処理部１１１は、タスクキュー記憶部１２２を参照して各第１のＦＰＧＡのタスクキュー１２２２の末尾のタスクＩＤ１２１１を取得する。末尾のタスクＩＤ１２１１とは、例えば、各ＦＰＧＡ情報１２２１において、タスクキュー１２２２に保存されるタスクＩＤのうち、最後に処理が実行されるタスクＩＤを示す。
【００５９】
キューイング処理部１１１は、タスクリスト記憶部１２１を参照して、各第１のＦＰＧＡの末尾のタスクＩＤ１２１１に基づいて、各第１のＦＰＧＡのロジックＩＤ１２１２の値を取得する。
【００６０】
キューイング処理部１１１は、「モデル生成＿０２」が各第１のＦＰＧＡの末尾のタスクのロジックＩＤ１２１２に含まれているかを判定する（Ｓ１２）。「モデル生成＿０２」の値が各第１のＦＰＧＡのロジックＩＤ１２１２に含まれていないため（Ｓ１２：Ｙｅｓ）、キューイング処理部１１１は、第１のＦＰＧＡ以外の他のＦＰＧＡ内に「モデル生成＿０２」を含む「第２の構成変更型集積回路」の一例としての第２のＦＰＧＡがあるかを判定する（Ｓ１３）。
【００６１】
キューイング処理部１１１は、「タスク＿０２」および「タスク＿０９」が「モデル生成＿０２」を示す為（Ｓ１３：Ｙｅｓ）、「タスク＿０９」を末尾のタスクとして有する「ＦＰＧＡ＿０２」を第２のＦＰＧＡとして選択する（Ｓ１４）。すなわち、キューイング処理部１１１は、第１のＦＰＧＡを除く複数のＦＰＧＡ１０４のうち、構成変更前のロジックを使用して所定のタスクを実行可能な第２のＦＰＧＡを選択する。なお、キューイング処理部１１１は、第２のＦＰＧＡを複数選択してもよい。
【００６２】
キューイング処理部１１１は、第１のＦＰＧＡにおける「タスク＿１２」の実行開始時間と、第２のＦＰＧＡにおける「タスク＿１２」の実行開始時間と、を算出する（Ｓ１５）。実行開始時間は、例えば、「タスク＿１２」の処理を開始するまでにかかる、タスクＩＤ１２１１の実行時間と、構成変更時間６０と、の合計である。
【００６３】
「ＦＰＧＡ＿０１」の「タスク＿０１」のロジックが「判定処理＿０１」であるため、キューイング処理部１１１は、「ＦＰＧＡ＿０１」の実行開始時間に構成変更時間６０の「５０秒」が含まれると判定する。キューイング処理部１１１は、「ＦＰＧＡ＿０１」における、「タスク＿０１」と、構成変更時間６０と、の処理の合計時間である「９０秒」を「タスク＿１２」の実行開始時間として算出する。なお、第１のＦＰＧＡの「タスク＿１２」の実行開始時間は、第１実行開始時間と示す場合がある。
【００６４】
「ＦＰＧＡ＿０２」の「タスク＿０９」のロジックが「モデル生成＿０２」であるため、キューイング処理部１１１は、「タスク＿０２」および「タスク＿０９」の処理の合計時間である「８０秒」を「ＦＰＧＡ＿０２」の実行開始時間として算出する。なお、第２のＦＰＧＡの「タスク＿１２」の実行開始時間は、第２実行開始時間と示す場合がある。
【００６５】
キューイング処理部１１１は、第１実行開始時間と、第２実行開始時間と、を比較する（Ｓ１６）。キューイング処理部１１１は、例えば、第２実行開始時間が第１実行開始時間よりも短いため（Ｓ１６：Ｙｅｓ）、キューイング処理部１１１は、第２のＦＰＧＡである「ＦＰＧＡ＿０２」のタスクキュー１２２２＿３に「タスク＿１２」を割り当てる（Ｓ１７）。
【００６６】
第１実行開始時間が第２実行開始時間よりも短い場合（Ｓ１６：Ｎｏ）には、キューイング処理部１１１は、所定のタスクを第１のＦＰＧＡに割り当てる（Ｓ１８）。すなわち、キューイング処理部１１１は、第１のＦＰＧＡと、第２のＦＰＧＡとを比較して実行開始時間が短いＦＰＧＡ１０４を所定のＦＰＧＡとして選択する（Ｓ１６〜Ｓ１８）。
【００６７】
構成変更前のロジックで所定のタスクを実行可能な第１のＦＰＧＡがある場合（Ｓ１２：Ｎｏ）、または、第１のＦＰＧＡ以外の他のＦＰＧＡがロジックの構成変更をして所定のタスクを実行する場合（Ｓ１３：Ｎｏ）には、キューイング処理部１１１は、第１のＦＰＧＡを所定のＦＰＧＡとして所定のタスクを割り当てる。
【００６８】
すなわち、キューイング処理部１１１は、各ＦＰＧＡ１０４の中で所定のタスクを最も早く実行できる処理のＦＰＧＡに所定のタスクを割り当てる。
【００６９】
所定のタスクを割り当てるＦＰＧＡ１０４の候補が複数ある場合には、キューイング処理部１１１は、いずれかのうちの一つのＦＰＧＡ１０４を選択してタスクを割り当てる。キューイング処理部１１１は、各ＦＰＧＡ１０４からランダムに所定のＦＰＧＡ１０４を選択してもよい。
【００７０】
任意のコンテナ１０５が任意のＦＰＧＡ１０４を専有して利用する場合には、キューイング処理部１１１は、タスクキュー記憶部１２２から任意のＦＰＧＡ１０４のＦＰＧＡ情報１２２１を削除してもよい。なお、キューイング処理部１１１は、任意のＦＰＧＡ情報１２２１に対応するタスクキュー１２２２＿０１に、任意のコンテナ１０５のタスクＩＤ１２１１を固定することによって、任意のＦＰＧＡ１０４を任意のコンテナ１０５に専有させてもよい。
【００７１】
所定のタスクがタスクキュー１２２２＿０１に保存される場合には、キューイング処理部１１１は、ＦＰＧＡ１０４の構成変更前のロジックの情報を取得する。キューイング処理部１１１は、例えば、取得したロジックの情報と、所定のタスクのロジックＩＤ１２１２と、が一致するＦＰＧＡ情報１２２１にタスクを割り当てる。取得したロジックの情報と、所定のタスクのロジックＩＤ１２１２と、が異なる場合には、キューイング処理部１１１は、いずれかのうちの一つのＦＰＧＡ１０４を選択してタスクを割り当ててもよい。所定のタスクがタスクキュー１２２２＿０１に保存される場合は、例えば、新たに管理サーバ１０を立ち上げた場合等が挙げられる。
【００７２】
キューイング処理部１１１は、各アプリケーション５０の優先順位に基づいて、ＦＰＧＡ１０４ごとにタスクを割り当ててもよい。図７（Ａ）は、アプリケーション５０の優先順位情報１３１２の説明図である。キューイング処理部１１１は、アプリケーション５０の優先順位情報１３１２を取得する。優先順位情報１３１２は、アプリケーションＤＩ１３１１ごとに設定される。アプリケーションＩＤ１３１１には、各アプリケーション５０の識別情報が保存される。
【００７３】
優先順位情報１３１２には、例えば、「ランク＿１」〜「ランク＿Ｍ」（Ｍ＝所定の数）が示されている。優先度としては、例えば、「ランク＿１」が優先順位情報１３１２の中で最も優先度が高く、「ランク＿２」，「ランク＿３」と次第に優先度が低くなり、「ランク＿Ｍ」が優先順位情報１３１２の中で最も優先度が低くなる。すなわち、キューイング処理部１１１は、例えば、「ランク＿１」〜「ランク＿Ｍ」の順番で優先的にタスクキュー１２２２に各タスクを割り当てる。なお、所定の数Ｍは、一定の値に限らず、ユーザによって変更される変数でもよい。
【００７４】
図７（Ｂ）は、アプリケーションＩＤ１３１１と、タスクＩＤ１２１１と、の説明図である。キューイング処理部１１１ｂは、例えば、「タスク＿１２」のアプリケーションＩＤ１３１１を取得する。「タスク＿１２」のアプリケーションＩＤ１３１１は、「アプリケーション＿１２」である。キューイング処理部１１１は、「タスク＿１２」の優先順位情報１３１２を取得する。「タスク＿１２」の優先順位情報１３１２が「ランク＿０１」であるため、キューイング処理部１１１ｂは、優先順位情報１３１２が「ランク＿０２」，「ランク＿０３」のアプリケーションＩＤ１３１１を取得する。
【００７５】
「アプリケーション＿１１」優先順位情報が「ランク＿０３」の処理であるため、キューイング処理部１１１ｂは、タスクリスト記憶部１２１から「アプリケーション＿１１」のタスクＩＤ１２１１を取得する。「アプリケーション＿１１」のタスクＩＤ１２１が「タスク＿１１」であるため、キューイング処理部１１１ｂは、「タスク＿１１」の前に「タスク＿１２」を割り当てる。すなわち、キューイング処理部１１１ｂは、タスクキュー１２２２＿０２に保存されている「タスク＿１１」をタスクキュー１２２２＿０３に移動し、「タスク＿１２」をタスクキュー１２２２＿０２に保存する。
【００７６】
すなわち、キューイング処理部１１１は、例えば、所定のアプリケーション５０よりも優先度の低い、低優先アプリケーション５０のタスクを取得する。キューイング処理部１１１は、低優先アプリケーション５０のタスクの前に所定のタスクを割り当てる。なお、キューイング処理部１１１ｂは、所定のタスクが実行されるまでの待ち時間に応じて、所定のタスクを割り込ませるタスクキュー１２２２の場所を選択してもよい。
【００７７】
図８は、ＦＰＧＡ割り当て処理（Ｓ２０）の流れ図である。ＦＰＧＡ割り当て処理（Ｓ２０）は、割当処理部１１２の処理（Ｓ２１〜Ｓ２３，Ｓ２５，Ｓ２６）およびロジック変更処理部１１３の処理（Ｓ２４）を有する。なお、ＦＰＧＡ割り当て処理（Ｓ２０）は、「ＦＰＧＡ＿０２」の「タスク＿０２」および「タスク＿０９」が実行完了することによって、「ＦＰＧＡ＿０２」のタスクキュー１２２２＿０１に「タスク＿１２」が保存される場合を例に挙げて説明する。
【００７８】
ＦＰＧＡ割り当て処理（Ｓ２０）は、割当処理部１１２の処理（Ｓ２１）に移動する。割当処理部１１２は、例えば、タスクキュー１２２２＿０１のタスクＩＤ１２１１が変更されることによって実行される。割当処理部１１２は、例えば、タスクリスト記憶部１２１から「タスク＿０９」のロジックＩＤ１２１２を取得する（Ｓ２１）。「タスク＿０９」のロジックＩＤ１２１２は、「モデル生成＿０２」である。すなわち、割当処理部１１２は、タスクキュー１２２２＿０１から削除されたタスクＩＤ１２１１に基づいて、ＦＰＧＡ１０４に実装済みのロジックＩＤ１２１２を取得する。
【００７９】
割当処理部１１２は、例えば、タスクリスト記憶部１２１から「タスク＿１２」のロジックＩＤ１２１２を取得する（Ｓ２２）。「タスク＿１２」のロジックＩＤ１２１２は、例えば、「モデル生成＿０２」である。すなわち、割当処理部１１２は、タスクキュー１２２２＿０１に保存されるタスクＩＤ１２１１に基づいて、実装予定のロジックＩＤ１２１２を取得する。
【００８０】
割当処理部１１２は、「タスク＿０９」のロジックＩＤ１２１２と、「タスク＿１２」のロジックＩＤ１２１２と、を比較して「ＦＰＧＡ＿０２」のロジックを構成変更するかどうか判定する（Ｓ２３）。すなわち、割当処理部１１２は、ＦＰＧＡ１０４に実装済みのロジックと、ＦＰＧＡ１０４に実装予定のロジックと、を比較することによって所定のＦＰＧＡ１０４を構成変更するかを判定する。
【００８１】
「タスク＿０２」のロジックＩＤ１２１２と、「タスク＿０９」のロジックＩＤ１２１２と、が共に「モデル生成＿０２」であるため（Ｓ２３：Ｎｏ）、割当処理部１１２の処理は、処理（Ｓ２５）に移動する。
【００８２】
割当処理部１１２は、「タスク＿０９」のコンテナＩＤ１２１３をタスクリスト記憶部１２１から取得する。「タスク＿０９」が「コンテナ＿０９」にて実行される処理であるため、割当処理部１１２は、「コンテナ＿０９」に対して「ＦＰＧＡ＿０２」をマウントする。なお、割当処理部１１２は、「ＦＰＧＡ＿０２」がアプリケーション５０の処理から解放された場合に、「ＦＰＧＡ＿０２」を「コンテナ＿０９」に対してマウントする。割当処理部１１２は、「コンテナ＿０９」の「アプリケーション＿０９」の処理を開始させる制御信号を「コンテナ＿０９」に送信する（Ｓ２６）。
【００８３】
すなわち、割当処理部１１２は、タスクリスト記憶部１２１およびタスクキュー記憶部１２２を参照し、所定のＦＰＧＡ１０４を所定のコンテナ１０５にマウントする機能である。
【００８４】
ＦＰＧＡ１０４を構成変更するかどうか判定する処理（Ｓ２３）において、実装済みのロジックと、実装予定のロジックと、が異なるロジックＩＤ１２１２を有している場合（Ｓ２３：Ｙｅｓ）には、割当処理部１１２は、ロジック変更処理部１１３を実行する（Ｓ２４）。割当処理部１１２は、所定のＦＰＧＡ１０４のＦＰＧＡ情報１２２１と、実装予定のロジックＩＤ１２１２と、をロジック変更処理部１１３に送信する。なお、割当処理部１１２は、例えば、所定のＦＰＧＡ１０４がタスクから解放された場合に、ロジック変更処理部１１３を実行する。
【００８５】
ロジック変更処理部１１３は、所定のＦＰＧＡ１０４のＦＰＧＡ情報１２２１と、実装予定のロジックＩＤ１２１２と、を取得する。ロジック変更処理部１１３は、実装予定のロジックＩＤ１２１２と一致するロジックの情報を、ロジック記憶部１２３から取得する。ロジック変更処理部１１３は、取得したロジックの情報に基づいて、ＦＰＧＡ１０４の構成変更をする。
【００８６】
ロジック記憶部１２３は、ロジックの情報を記録する。ロジックの情報は、例えば、回路に実装される端子の接続情報を示す。ロジックの情報は、所定のプログラムにより用意されてもよい。ユーザは、例えば、ハードウェア記述言語（ＨＤＬ：Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）によって記載されたプログラムを論理合成ツールによってロジックの情報に変換してもよい。論理合成ツールは、例えば、ハードウェア記述言語によるソースコードをロジックの情報に変換するソフトウェアである。
【００８７】
以上に示す、キューイング処理部１１１および割当処理部１１２によって、ＦＰＧＡ１０４をコンテナ１０５間で共有することができる。管理サーバ１０は、キューイング処理１１１によって、アプリケーション５０のタスクを効率的に実行することができる。
【００８８】
キューイング処理部１１１は、第１のＦＰＧＡおよび第２のＦＰＧＡのいずれか一方から所定のＦＰＧＡを選択することによって、所定のタスクを各ＦＰＧＡ１０４の中で最も早く実行できるＦＰＧＡ１０４に割り当てることができる。
【００８９】
アプリケーション５０の優先順位情報１３１２に基づいてキューイング処理部１１１が所定のタスクをＦＰＧＡ１０４に割り当てることによって、管理サーバ１０は、他のアプリケーション５０の処理よりも優先的に所定のアプリケーション５０の処理を開始することができる。
【実施例２】
【００９０】
図９は、第２の実施例に係る管理サーバ１０ａの概略図である。本実施例は、第１実施例の変形例に相当するため、第１実施例との相違を中心に説明する。管理サーバ１０ａは、操作端末２０（１），２０（２）と、通信ネットワーク３０を介して接続される。
【００９１】
管理サーバ１０ａは、例えば、ＦＰＧＡ１０４と、コンテナ１０５と、キューイング処理部１１１と、割当処理部１１２と、ロジック変更処理部１１３ａと、スケジュール計算処理部１１４と、予実績判定処理部１１５と、ソリューション判定部１１６と、ロジックデザイン処理部１１７と、タスクリスト記憶部１２１と、タスクキュー記憶部１２２と、ロジック記憶部１２３と、システム稼働履歴記憶部１２４と、スケジュール記憶部１２５と、ソリューション記憶部１２６と、を有する。なお、図９に示す各データベースには、「記憶部」の記載を省略して示す。
【００９２】
システム稼働履歴記憶部１２４は、図１１にて詳述するように、ＦＰＧＡ１０４と、コンテナ１０５と、の実績を保存するデータベースである。スケジュール計算処理部１１４は、システム稼働履歴１２４を参照し、図１２にて詳述するＦＰＧＡ１０４の構成変更のスケジュール１２７０（以降、ロジック適用スケジュール１２７０と示す場合がある）を算出するプログラムである。スケジュール計算処理部１１４は、スケジュール記憶部１２５にロジック適用スケジュール１２７０を保存する。
【００９３】
ロジック変更処理部１１３ａは、スケジュール記憶部１２５を参照し、ＦＰＧＡ１０４の構成変更をするプログラムである。ロジック変更処理部１１３ａは、ＦＰＧＡ１０４の状態を参照し、ＦＰＧＡ１０４の構成変更をする。
【００９４】
予実績判定処理部１１５は、システム稼働履歴記憶部１２４およびスケジュール記憶部１２５を参照し、ＦＰＧＡ１０４およびコンテナ１０５の実績と、ロジック適用スケジュール１２７０と、の差異を検出するプログラムである。差異が所定の閾値以上検出された場合には、予実績判定処理部１１５は、スケジュール計算処理部１１４およびソリューション判定処理部１１６を実行させる。
【００９５】
ソリューション判定処理部１１６は、ソリューション記憶部１２６を参照し、ロジック適用スケジュール１２７０を作成する際に使用するソリューションを設定する。ソリューション判定部１１６は、判定結果をスケジュール計算処理部１１７に送信する。
【００９６】
ロジックデザイン処理部１１７は、システム稼働履歴記憶部１２４を参照し、１台のＦＰＧＡに複数のロジックを実装できるかを判定するプログラムである。ロジックデザイン処理部１１７は、判定結果をスケジュール計算処理部１１４に送信する。
【００９７】
図１０は、スケジュール生成処理（Ｓ３０）の流れ図である。スケジュール生成処理（Ｓ３０）は、例えば、スケジュール計算処理部１１４の処理（Ｓ３１）と、ロジック変更処理部１１３ａの処理（Ｓ３２，Ｓ３３）と、予実績判定処理部１１５の処理（Ｓ３５，Ｓ３６）と、ソリューション判定部１１６の処理（Ｓ３７）と、を示す。
【００９８】
スケジュール生成処理（Ｓ３０）は、スケジュール計算処理部１１４の処理（Ｓ３１）に移動する。スケジュール計算処理部１１４は、例えば、システム稼働履歴記憶部１２４の情報に基づいて、「構成変更のスケジュール」の一例としてのロジック適用スケジュール１２７０（図１２参照）を算出する機能である。スケジュール計算処理（Ｓ３１）の説明前に、システム稼働履歴記憶部１２４およびロジック適用スケジュール１２７０の説明をする。
【００９９】
図１１は、システム稼働履歴記憶部１２４の説明図である。システム稼働履歴記憶部１２４は、ＩＴ（Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ）インフラ層の稼働履歴情報と、アプリケーション５０の稼働履歴情報と、を有する。ＩＴインフラ層の稼働履歴情報は、例えば、ＦＰＧＡ１０４およびコンテナ１０５等の稼働履歴情報である。
【０１００】
システム稼働履歴記憶部１２４は、コンテナＩＤ１２４１と、サービス名１２４２と、処理名１２４３と、ロジックＩＤ１２４４と、ＦＰＧＡ情報１２４５（図中ＦＰＧＡ＿ＩＤと示す場合がある）と、実行開始１２４６と、実行終了１２４７と、データ量１２４８と、を有する。
【０１０１】
コンテナＩＤ１２４１には、コンテナ１０５を一意に特定する情報が保存される。コンテナＩＤ１２４１は、タスクリスト記憶部１２１のコンテナＩＤ１２１３と対応する。
【０１０２】
サービス名１２４２には、コンテナ１０５上で稼働するアプリケーション５０を一意に特定する情報が保存される。処理名１２４３には、コンテナ１０５上で実行されるアプリケーション５０の処理を特定する情報が保存される。
【０１０３】
ロジックＩＤ１２４４には、アプリケーション５０を実行するＦＰＧＡ１０４のロジックを特定する情報が保存される。ロジックＩＤ１２４４は、タスクリスト記憶部１２１のロジックＩＤ１２１２と対応する。ＦＰＧＡ情報１２４５には、ＦＰＧＡ１０４を特定する情報が保存される。ＦＰＧＡ情報１２４５は、タスクキュー記憶部１２２のＦＰＧＡ情報１２２１と対応する。
【０１０４】
実行開始１２４６には、処理名１２４３にて示されるアプリケーション５０の処理の開始時刻が保存される。実行終了１２４７には、処理名１２４３にて示されるアプリケーション５０の処理の終了時刻が保存される。
【０１０５】
データ量１２４８には、アプリケーション５０の処理データの容量が保存される。処理データは、例えば、機械学習における教師データ等が挙げられる。アプリケーション５０の処理データは、例えば、補助記憶装置１０２からメモリ１０３にロードされる。なお、システム稼働履歴記憶部１２４には、ＦＰＧＡ１０４およびコンテナ１０５の処理の実績に限らず、手動または不図示の他のプログラムにより蓄積された情報でもよい。
【０１０６】
図１２は、ロジック適用スケジュール１２７０の説明図である。ロジック適用スケジュール１２７０は、スケジュール記憶部１２７に保存される。ロジック適用スケジュール１２７０は、ＦＰＧＡ数１２７１と、ロジックＩＤ１２７２と、開始時刻１２７３と、完了時刻１２７４とを有する。
【０１０７】
ＦＰＧＡ数１２７１には、ＦＰＧＡ１０４の数の情報が保存される。ロジックＩＤ１２７２には、ＦＰＧＡ１０４のロジックを特定する情報が保存される。なお、ロジックＩＤ１２７２には、少なくとも一つ以上のロジックの識別情報が保存される。開始時刻１２７３と完了時刻１２７４には、ロジックＩＤ１２７２のロジックをＦＰＧＡ１０４に実装する時間の情報が保存される。
【０１０８】
すなわち、ロジック適用スケジュール１２７０は、開始時刻１２７３から完了時刻１２７４までの間に、ロジックＩＤ１２７２のロジックが実装されたＦＰＧＡ１０４を、ＦＰＧＡ数１２７１で示された数用意するというスケジュールを示す。
【０１０９】
図１０に戻り、スケジュール計算処理部１１４のスケジュール計算処理（Ｓ３１）は、例えば、アプリケーション５０のソリューションに基づいて、ロジック適用スケジュール１２７０を算出する。スケジュール計算処理部１１４は、ソリューションの情報を後に詳述するソリューション判定部１１６から取得する。
【０１１０】
なお、スケジュール計算処理部１１４は、例えば、システム稼働履歴記憶部１２４の所定期間におけるロジックＩＤ１２４４の統計に基づいて、ロジック適用スケジュール１２７０を算出してもよい。スケジュール計算処理部１１４は、例えば、新たにシステム稼働履歴記憶部１２４に保存された情報から所定件数の情報を参照することによって、ロジック適用スケジュール１２７０を算出してもよい。
【０１１１】
なお、管理サーバ１０ａは、システム稼働履歴記憶部１２４に保存される情報が所定数以上記憶されている場合にスケジュール計算処理部１１４を実行する。システム稼働履歴記憶部１２４の情報が所定数未満である場合には、管理サーバ１０ａは、キューイング処理部１１１と、割当処理部１１２と、ロジック変更処理部１１３と、を実行することによって、各ＦＰＧＡ１０４を各コンテナ１０５に割り当てる。
【０１１２】
すなわち、キューイング処理部１１１および割当処理部１１２は、スケジュール計算処理部１１４から独立して処理する。管理サーバ１０ａは、キューイング処理部１１１と、割当処理部１１２と、ロジック変更処理部１１３と、を実行することによって、システム稼働履歴記憶部１２４に、ＩＴインフラ層の稼働履歴情報およびアプリケーション５０の稼働履歴情報を蓄積する。
【０１１３】
図１０に戻り、スケジュール生成処理（Ｓ３０）は、ロジック変更処理部１１３ａのロジック変更処理（Ｓ３２，Ｓ３３）に移動する。ロジック変更処理部１１３ａは、割当処理部１１２の結果に基づいてＦＰＧＡ１０４を構成変更する第１変更機能と、ロジック適用スケジュール１２７０に沿ってＦＰＧＡ１０４を構成変更する第２変更機能と、を有する。なお、図１０に示すロジック変更処理（Ｓ３２，Ｓ３３）は、ロジック変更処理部１１３ａの第２変更機能を示す。
【０１１４】
ロジック変更処理部１１３ａの第１変更機能は、割当処理部１１２から制御信号が送信されることによって実行される。ロジック変更処理部１１３ａは、割当処理部１１２から、ロジックＩＤ１２１２およびＦＰＧＡ情報１２２１を取得する。ロジック変更処理部１１３ａは、ロジックＩＤ１２１２およびロジック記憶部１２３に基づいて、ＦＰＧＡ情報１２２１が設定されるＦＰＧＡ１０４を構成変更する。
【０１１５】
ロジック変更処理部１１３ａの第２変更機能は、ＦＰＧＡ１０４がアプリケーション５０の処理から解放された場合にロジック適用スケジュール１２７０に示されるロジックを実装する。ロジック変更処理部１１３ａは、アプリケーション５０の処理から解放されるＦＰＧＡ１０４があるかを判定する（Ｓ３２）。
【０１１６】
処理から解放されるＦＰＧＡ１０４がある場合（Ｓ３２：Ｙｅｓ）には、ロジック変更処理部１１３ａは、ロジックＩＤ１２７２にて示されるロジックを処理から解放されるＦＰＧＡ１０４に実装する（Ｓ３３）。
【０１１７】
ＦＰＧＡ１０４がアプリケーション５０の処理を実行していると判断する場合（Ｓ３２：Ｎｏ）には、ロジック変更処理部１１３は、ＦＰＧＡ１０４が処理から解放されるまで待機する。なお、開始時刻１２７３以降もＦＰＧＡ１０４が処理を実行していると判断した場合には、ロジック変更処理部１１３ａの第２変更機能は、終了してもよい。
【０１１８】
管理サーバ１０ａは、アプリケーション５０の処理を実行する（Ｓ３４）。ＦＰＧＡ１０４およびコンテナ１０５は、システム稼働履歴記憶部１２４に情報を送信する。
【０１１９】
スケジュール生成処理（Ｓ３０）は、予実績判定処理部１１５の処理（Ｓ３５）に移動する。予実績判定処理部１１５は、システム稼働履歴記憶部１２４に保存されるＦＰＧＡ１０４のロジックの変更の実績がロジック適用スケジュール１２７０と異なる場合に、ロジック適用スケジュール１２７０を再生成させる機能である。
【０１２０】
予実績判定処理部１１５は、例えば、システム稼働履歴記憶部１２４から、ＦＰＧＡ１０４およびコンテナ１０５の情報を取得する。予実績判定処理部１１５は、スケジュール記憶部１２７からロジック適用スケジュール１２７０を取得する（Ｓ３５）。
【０１２１】
予実績判定処理部１１５は、例えば、各ＦＰＧＡ１０４のロジックがロジック適用スケジュール１２７０に沿って構成変更されたかを判定する（Ｓ３６）。すなわち、予実績判定処理部１１５は、ロジック適用スケジュール１２７０と、システム稼働履歴記憶部１２４に保存される実績と、の差異を検出する。
【０１２２】
予実績判定処理部１１５は、ロジック適用スケジュール１２７０に示されるロジックＩＤ１２７２以外のロジックがＦＰＧＡ１０４に実装されたことを、システム稼働履歴記憶部１２４から検出してもよい。
【０１２３】
差異が所定の閾値以上ある場合（Ｓ３６：Ｎｏ）には、予実績判定処理部１１５は、比較した結果をソリューション判定部１１６に送信し、スケジュール計算処理部１１４を実行する。所定の閾値は、ユーザによって設定されてもよい。
【０１２４】
予実績判定処理部１１５は、ＦＰＧＡ１０４をコンテナ１０５に割り当てる際に制限が加えられることによって実行されてもよい。すなわち、予実績判定処理部１１５は、例えば、任意のコンテナ１０５が任意のＦＰＧＡ１０４を専有して利用する場合に実行されてもよい。
【０１２５】
予実績判定処理部１１５は、所定のタイミングで実行されてもよい。予実績判定処理部１１５は、例えば、任意のＦＰＧＡ１０４が所定時間あたりに所定回数以上構成変更された場合、所定周期ごとに実行すると設定された場合、または、タスクキュー１２２２に保存されるタスクの数がＦＰＧＡ１０４間で偏りが生じた場合に実行されてもよい。
【０１２６】
ソリューション判定部１１６は、予実績判定処理部１１５の差異の情報を取得し、スケジュール計算処理部１１４で使用するソリューションを選択する機能である。ソリューションの情報は、例えば、ソリューション記憶部１２６に複数保存される。
【０１２７】
なお、スケジュール計算処理部１１４は、ロジックデザイン処理部１１７の判定結果を参照してロジック適用スケジュール１２７０を算出してもよい。ロジックデザイン処理部１１７は、システム稼働履歴記憶部１２４の情報に基づいて複数のロジックを一つのＦＰＧＡ１０４に実装可能かを判定する機能である。ロジックデザイン処理部１１７は、システム稼働履歴記憶部１２４からＦＰＧＡ１０４に実装されたロジックの情報を複数取得する。ロジックデザイン処理部１１７は、一台のＦＰＧＡ１０４に複数のロジックを実装可能か判定する。
【０１２８】
ロジックデザイン処理部１１７は、具体的には、例えば、システム稼働履歴記憶部１２４において、「コンテナ＿０１」に割り当てられたＦＰＧＡ１０４には、「モデル生成＿０１」と、「モデル生成＿０２」と、が実装されると判定する。ロジックデザイン処理部１１７は、「コンテナ＿０１」以外の他のコンテナ１０５においても、実装されたロジックＩＤ１２４４を判定する。
【０１２９】
各コンテナ１０５において「モデル生成＿０１」と、「モデル生成＿０２」と、が実装される頻度が高い場合には、ロジックデザイン処理部１１７は、「モデル生成＿０１」と、「モデル生成＿０２」と、を一つのＦＰＧＡ１０４に実装できるかを判定する。すなわち、ロジックデザイン処理部１１７は、ＦＰＧＡ１０４の回路の実装面積と、「モデル生成＿０１」の回路の実装面積および「モデル生成＿０２」の回路の実装面積の合計と、を比較する。
【０１３０】
「モデル生成＿０１」の回路の実装面積および「モデル生成＿０２」の回路の実装面積の合計がＦＰＧＡ１０４の回路の実装面積よりも狭い場合には、ロジックデザイン処理部１１７は、一つのＦＰＧＡ１０４に「モデル生成＿０１」と、「モデル生成＿０２」と、を実装できると判定する。ロジックデザイン処理部１１７は、判定結果をスケジュール計算処理部１１４に送信する。スケジュール計算処理部１１４は、取得した判定結果に基づいて、ロジック適用スケジュール１２７０を算出する。
【０１３１】
これにより、スケジュール計算処理部１１４によって、管理サーバ１０ａは、アプリケーション５０を実行する前に予めＦＰＧＡ１０４を構成変更することができる。この結果、管理サーバ１０ａは、アプリケーション５０の処理を効率的に実行する事ができる。
予実績判定処理部１１５によって、管理サーバ１０ａは、ロジック適用スケジュール１２７０を改善することができる。
【０１３２】
キューイング処理部１１１および割当処理部１１２がスケジュール計算処理部１１４から独立していることによって、ロジック適用スケジュール１２７０が生成される前でも、キューイング処理部１１１および割当処理部１１２は処理をすることができる。
【０１３３】
ロジックデザイン処理部１１７によって、１台のＦＰＧＡ１０４に複数のロジックを実装する事ができる。これにより、アプリケーション５０の処理から解放されるＦＰＧＡ１０４の数を増やすことができる。この結果、ロジック適用スケジュール１２７０を適用する機会を増やすことができると期待できる。
【０１３４】
なお、本実施形態に例示する処理フローには、不図示の処理ステップが含まれていても良いし、いくつかの処理ステップが存在しなくても良い場合もあり、いくつかの処理ステップの実行順序が入れ替わっていても良い。
【０１３５】
本実施形態の説明では、プログラムを主語として開示された処理は管理サーバ等の計算機、情報処理装置が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアによって実現されてもよい。
【０１３６】
各種プログラムは、プログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各計算機にインストールされてもよい。この場合、プログラム配布サーバは、プロセッサと記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムを記憶する。配布プログラムをプロセッサが実行することで、プログラム配布サーバのプロセッサは、配布対象のプログラムを他の計算機に配布する。
【０１３７】
ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。ある実施例の構成に他の実施例の構成を加えてもよい。各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
【０１３８】
前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。また、図示する全てのプロセッサや処理やデータや、その他のハードウェア装置や、ソフトウェアは、不図示のネットワークにより接続された、別のサーバ装置やストレージ装置上に存在していてもよいし、別のサーバ装置やストレージ装置上で実行されていても良い。
【符号の説明】
【０１３９】
１０，１０ａ，１０ｂ…管理サーバ、２０（１），２０（２）…操作端末、３０…通信ネットワーク、４０…外部記録媒体、１０４…ＦＰＧＡ、１０５…コンテナ、１１１，１１１ｂ…キューイング処理部、１１２…割当処理部、１１３，１１３ａ…ロジック変更処理部、１１４…スケジュール計算処理部、１１５…予実績判定処理部、１１６…ソリューション判定部、１１７…ロジックデザイン処理部、１２１…タスクリスト記憶部、１２２…タスクキュー記憶部、１２３…ロジック記憶部、１２４…システム稼働履歴記憶部、１２５…スケジュール記憶部、１２６…ソリューション記憶部
【図１】
2020190867.tif 000003
【図２】
2020190867.tif 000004
【図３】
2020190867.tif 000005
【図４】
2020190867.tif 000006
【図５】
2020190867.tif 000007
【図６】
2020190867.tif 000008
【図７】
2020190867.tif 000009
【図８】
2020190867.tif 000010
【図９】
2020190867.tif 000011
【図１０】
2020190867.tif 000012
【図１１】
2020190867.tif 000013
【図１２】
2020190867.tif 000014