JP2020190867A - Configuration changeable integrated circuit allocation system, configuration changeable integrated circuit allocation method and computer program - Google Patents
Configuration changeable integrated circuit allocation system, configuration changeable integrated circuit allocation method and computer program Download PDFInfo
- Publication number
- JP2020190867A JP2020190867A JP2019095210A JP2019095210A JP2020190867A JP 2020190867 A JP2020190867 A JP 2020190867A JP 2019095210 A JP2019095210 A JP 2019095210A JP 2019095210 A JP2019095210 A JP 2019095210A JP 2020190867 A JP2020190867 A JP 2020190867A
- Authority
- JP
- Japan
- Prior art keywords
- processing unit
- configuration
- integrated circuit
- predetermined
- fpga
- 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.)
- Pending
Links
Images
Abstract
Description
本発明は、構成変更型集積回路の割当システム、構成変更型集積回路の割当方法およびコンピュータプログラムに関する。 The present invention relates to a configuration change type integrated circuit allocation system, a configuration change type integrated circuit allocation method, and a computer program.
いわゆるクラウドコンピュータ上で各種の情報処理サービスを提供するサービスプロバイダは、機械学習またはデータ分析等を実行するアプリケーションプログラム(以下、アプリケーションと略記する場合がある)の実行環境を構築することにより、クラウドサービスを顧客へ提供している。クラウドサービスでは、構成変更可能集積回路(以下、FPGA(Field−Programmable Gate Array)と示す場合がある)またはGPU(Graphics Processing Unit)等を用いることにより、アプリケーションの処理を高速化することが検討されている。FPGAおよびGPU等のハードウェア資源は限られるため、サービスプロバイダは、複数のアプリケーションの実行環境の間で、FPGAおよびGPU等を共有する制御が求められる。 A service provider that provides various information processing services on a so-called cloud computer builds an execution environment for an application program (hereinafter, may be abbreviated as an application) that executes machine learning or data analysis, thereby providing a cloud service. To customers. In cloud services, it has been considered to speed up application processing by using a configurable integrated circuit (hereinafter, sometimes referred to as FPGA (Field-Programmable Gate Array)) or GPU (Graphics Processing Unit). ing. Since hardware resources such as FPGA and GPU are limited, service providers are required to control sharing FPGA and GPU among execution environments of a plurality of applications.
特許文献1の計算デバイスは、動的に選択されたスケジューリングポリシに基づいて、GPUコマンドをスケジュールするGPUスケジューラを有する。GPUスケジューラは、異なる仮想マシンからGPUコマンドを受け取り、スケジューリングポリシを動的に選択し、GPUが処理するGPUコマンドをスケジュールする。
The computing device of
特許文献1の計算デバイスは、スケジューリングポリシを切り替えることによって複数の仮想マシンでGPUを共有する。しかしながら、FPGAを実行環境ごとに共有する場合には、FPGAを実行環境の間で切り替える際の構成変更に要する時間(オーバーヘッド)が発生する。
The computing device of
そこで本発明は、上記の課題を解決する為になされたものであり、構成変更型集積回路を割り当てることによってアプリケーションプログラムの処理を効率的に実行することを目的とする。 Therefore, the present invention has been made to solve the above problems, and an object of the present invention is to efficiently execute the processing of an application program by allocating a configuration-modifying integrated circuit.
構成変更型集積回路の割当システムは、アプリケーションプログラムを実行する仮想化環境を複数備え、構成変更可能な複数の構成変更型集積回路と、複数の構成変更型集積回路のうちの所定の構成変更型集積回路に対し、複数の仮想化環境のうちの所定の仮想化環境により指示されるアプリケーションプログラムの所定の処理を割り当てるキューイング処理部と、所定の仮想化環境に所定の構成変更型集積回路を割り当てる割当処理部と、所定の構成変更型集積回路を構成変更するロジック変更処理部と、を有する。 The configuration change type integrated circuit allocation system is provided with a plurality of virtualized environments for executing application programs, and is composed of a plurality of configuration changeable integrated circuits and a predetermined configuration change type among a plurality of configuration change type integrated circuits. A queuing processing unit that assigns a predetermined process of an application program instructed by a predetermined virtual environment among a plurality of virtualized environments to an integrated circuit, and a predetermined configuration-changeable integrated circuit in the predetermined virtual environment. It has an allocation processing unit for allocating and a logic change processing unit for changing the configuration of a predetermined configuration change type integrated circuit.
本発明によれば、構成変更型集積回路を用いてアプリケーションプログラムの処理を効率的に実行することができる。 According to the present invention, it is possible to efficiently execute the processing of the application program by using the configuration-modifying integrated circuit.
以下、本実施例を添付図面に基づいて説明するが、当該図面に記載の構成に限定されない。 Hereinafter, this embodiment will be described with reference to the accompanying drawings, but the present invention is not limited to the configuration described in the drawings.
本実施形態は、構成変更可能な構成変更型集積回路を仮想化環境に割り当てることによって、アプリケーションプログラムを効率よく実行する構成変更型集積回路の割当システムに関するものである。このため、本実施形態では、FPGAの構成変更に係る時間を考慮してアプリケーションのタスクを動的に割り当てる。アプリケーションのタスクは、それぞれ独立したコンテナの中でFPGAにより処理される。なお、以下に示す実施形態において、構成変更型集積回路の割当システムは、管理サーバと示す場合がある。 The present embodiment relates to a configuration changeable integrated circuit allocation system that efficiently executes an application program by allocating a configuration changeable integrated circuit to a virtual environment. Therefore, in the present embodiment, the tasks of the application are dynamically assigned in consideration of the time related to the configuration change of the FPGA. The tasks of the application are processed by the FPGA in separate containers. In the embodiment shown below, the configuration change type integrated circuit allocation system may be referred to as a management server.
図1は、本実施例の管理サーバ10の概略図である。管理サーバ10は、「仮想化環境」の一例としてのコンテナ105を複数備え、アプリケーションプログラム50(図2参照)を実行する。なお、アプリケーションプログラム50は、アプリケーション50と略記する場合がある。
FIG. 1 is a schematic view of the
管理サーバ10は、通信ネットワーク30を介して操作端末20(1),20(2)と接続される。なお、操作端末20(1),20(2)は、特に区別しない場合には操作端末20と示す場合がある。
The
利用者が操作端末20を操作することによって、アプリケーション50を実行させる制御信号が通信ネットワーク30を介して管理サーバ10に送信される。その制御信号を受けた管理サーバ10は、アプリケーション50を実行する。管理サーバ10は、通信ネットワーク30を介して、実行結果を操作端末20へ送信する。
When the user operates the
管理サーバ10は、例えば、「複数の構成変更型集積回路」の一例としての複数のFPGA104と、複数のコンテナ105と、キューイング処理部111と、割当処理部112と、ロジック変更処理部113と、タスクリスト記憶部121と、タスクキュー記憶部122と、ロジック記憶部123と、を有する。なお、図1に示す、タスクリスト記憶部121と、タスクキュー記憶部122と、ロジック記憶部123と、は、「記憶部」の記載を省略して示す。
The
コンテナ105は、管理サーバ10の有するコンピュータ資源を仮想的に分割して、それぞれ並行してアプリケーション50を処理することのできる環境を提供するものであり、例えば、仮想マシンまたはコンテナ技術を用いて構成される。仮想マシンは、例えば、ハイパーバイザ型の仮想化ソフトウェアによって設定された、管理サーバ10の仮想的なハードウェア資源を示す。コンテナ技術は、例えば、コンテナ型の仮想化ソフトウェアによって設定された管理サーバ10の仮想的なハードウェア資源を示す。コンテナ型の仮想化ソフトウェアは、一つのOS(Operating System)上に、それぞれ独立した管理サーバ10の仮想的なハードウェア資源を複数設定する。
The
コンテナ105は、例えば、利用者が操作端末20を用いてアプリケーション50の操作をすることによって、アプリケーション50の処理の情報(以降、タスクと示す場合がある)を算出する。キューイング処理部111は、タスクの情報をコンテナ105から取得する。
The
キューイング処理部111は、タスクリスト記憶部121にタスクの情報を保存する。 キューイング処理部111は、図4にて詳述するように、タスクを各FPGA104に割り当てるプログラムである。キューイング処理部111は、タスクキュー記憶部122と双方向に通信し、割り当て結果をタスクキュー記憶部122に保存する。
The queuing processing unit 111 stores task information in the task
タスクキュー記憶部122は、図5にて詳述するように、各FPGA104に対して割り当てられたタスクの情報を保存するデータベースである。割当処理部112は、FPGA104をコンテナ105に対してマウントするプログラムである。
As described in detail in FIG. 5, the task
割当処理部112は、タスクキュー記憶部122からキューイング処理部111の割り当て結果を取得する。割当処理部112は、タスクリスト記憶部121からコンテナ105の情報を取得する。割当処理部112は、FPGA104の状態を取得する。FPGA104の状態は、例えば、FPGA104がタスクを実行状態、FPGA104の構成変更状態、または、FPGA104の待機状態等が挙げられる。割当処理部112は、FPGA104の構成変更を行う場合には、ロジック変更処理部113を実行する。
The
ロジック変更処理部113は、FPGA104の構成変更をするプログラムである。ロジック変更処理部113は、変更するFPGA104の情報と、FPGA104に適用するロジックの情報と、を割当処理部112から取得する。ロジック変更処理部113は、ロジック記憶部123からロジックの情報を取得する。
The logic
図2は、管理サーバ10のハードウェア構成の概略図である。管理サーバ10は、例えば、プロセッサ101と、補助記憶装置102と、メモリ103と、FPGA104と、入出力装置106と、通信インターフェース107と、各装置101〜104,106,107をそれぞれ双方向に通信可能に接続するデータ伝送路108と、を有する。
FIG. 2 is a schematic diagram of the hardware configuration of the
プロセッサ101は、例えば「CPU(Central Processing Unit)」である。プロセッサ101は、プログラム111〜113またはアプリケーション50を、補助記憶装置102からメモリ103に読み込んで実行することにより各機能を実現する。
The
補助記憶装置102は、例えば、ハードディスクまたはSSD(Solid State Drive)等の不揮発性記憶装置である。補助記憶装置102は、例えば、キューイング処理部111と、割当処理部112と、ロジック変更処理部113と、アプリケーション50と、のプログラムを記憶している。
The
補助記憶装置102は、例えば、タスクリスト記憶部121と、タスクキュー記憶部122と、ロジック記憶部123と、のデータベースを有する。なお、図2に示す各データベースでは、「記憶部」の記載を省略して示す。アプリケーション50は、例えば、「機械学習SDK(Software Development Kit)」等の特定の目的の為に作られたソフトウェアを示す。
The
なお、各プログラム111〜113、アプリケーション50または各データベース121〜123のうち少なくとも一部は、外部記録媒体40を介して管理サーバ10にインストールされてもよい。外部記録媒体40は、例えば、IC(Integrated Circuit)カード、SD(Secure Digital)カード、DVD(Digital Versatile Disc)、Blue Ray Disk、その他の光ディスク、または、USB(Universal Serial Bus)メモリ等である。
At least a part of each program 111-113, application 50, or each database 121-123 may be installed on the
各プログラム111〜113、アプリケーション50または各データベース121〜123は、同一の外部記憶媒体40に格納されていることに限らず、複数の外部記憶媒体40にそれぞれ格納されていてもよい。メモリ103は、例えば、「RAM(Random Access Memory)」等の揮発性記憶装置である。
The programs 111 to 113, the applications 50, or the
入出力装置106は、例えば、ディスプレイ、キーボード、ポインタデバイス、携帯情報端末(タブレット端末、スマートフォン等)である。音声で管理サーバ10の少なくとも一部を操作可能としてもよい。通信インターフェース107(図中、通信I/Fと示す場合がある)は、例えば、LAN(Local Area Network)の接続端子、SAN(Storage Area Network)の接続端子または無線通信の接続装置等である。通信インターフェース107は、例えば、通信ネットワーク30を介して操作端末20と無線通信で接続される。なお、通信インターフェース107は、操作端末20と有線通信で接続されてもよい。
The input /
操作端末20は、利用者がアプリケーション50を操作するコンピュータである。管理サーバ10には、アプリケーション50の利用者ごとに異なる操作端末20が接続されてもよい。管理サーバ10には、操作端末20(1),20(2)の二つに限らず、三つ以上の操作端末20が接続されてもよい。
The
入出力装置201は、利用者により操作される装置であり、例えばディスプレイおよびキーボードなどが含まれる。操作端末20は、利用者により入出力装置201に入力されたデータを、通信ネットワーク30を介して管理サーバ10に送信する。操作端末20は、管理サーバ10から送信されたデータを通信ネットワーク30を介して受信し、入出力装置201に表示させることもできる。
The input /
図3は、タスクリスト記憶部121の説明図である。タスクリスト記憶部121には、各コンテナ105から送信されたタスクの情報が保存される。タスクリスト記憶部121には、例えば、タスクID(IDentification)1211と、ロジックID1212と、コンテナID1213と、が保存される。
FIG. 3 is an explanatory diagram of the task
タスクID1211には、タスクの識別情報が保存される。タスクID1211には、具体的には、例えば、「タスク_01」〜「タスク_12」が示される。タスクID1211には、「タスク_01」から「タスク_12」の順番で各コンテナ105から送信される。
The task identification information is stored in the
ロジックID1212には、FPGA104のロジックの識別情報が保存される。ロジックID1212には、例えば、「判定処理_01」と、「モデル生成_01」と、「モデル生成_02」と、「SQL(Structured Query Language)_Drill_01」と、「SQL_Impara_01」と、が示される。
The
コンテナID1213には、タスクをタスクリスト記憶部121に送信したコンテナ105の識別情報が保存される。コンテナID1213には、例えば、「コンテナ_01」〜「コンテナ_12」と各コンテナ105の識別情報が示される。
The
なお、コンテナ105がタスクの処理を完了する場合には、管理サーバ10は、該当するタスクの情報1211〜1213をタスクリスト記憶部121から削除してもよい。
When the
なお、キューイング処理111の機能を説明する場合において、「所定のコンテナ」の一例としての「コンテナ_12」によって新しく算出された「タスク_12」を「所定のタスク」の一例として説明する。 In the case of explaining the function of the queuing process 111, the "task_12" newly calculated by the "container_12" as an example of the "predetermined container" will be described as an example of the "predetermined task".
キューイング処理部111は、「コンテナ_12」が「タスク_12」を算出することによって実行される。キューイング処理部111は、「タスク_12」の情報をタスクリスト記憶部121に保存する。
The queuing processing unit 111 is executed by the "container_12" calculating the "task_12". The queuing processing unit 111 stores the information of "task_12" in the task
図4は、キューイング処理部111の流れ図である。キューイング処理部111は、タスクリスト記憶部121およびタスクキュー記憶部122を参照して、「第1の構成変更型集積回路」の一例としての第1のFPGAを選択する(S11)。第1のFPGAの選択方法を説明する前に、タスクキュー記憶部122の説明をする。
FIG. 4 is a flow chart of the queuing processing unit 111. The queuing processing unit 111 refers to the task
図5は、タスクキュー記憶部122の説明図である。タスクキュー記憶部122は、FPGA情報(図中、FPGA_IDと示す場合がある)1221と、タスクキュー1222_01〜1222_N(N=任意の数)と、を有する。なお、タスクキュー1222_01〜1222_Nは、特に区別しない場合には、タスクキュー1222と示す場合がある。
FIG. 5 is an explanatory diagram of the task
FPGA情報1221には、FPGA104の識別情報が保存される。FPGA情報1221には、例えば、「FPGA_01」〜「FPGA_08」が示される。
The identification information of the
タスクキュー1222には、例えば、タスクID1211がFIFO(First In First Out)の構造で保存される。すなわち、タスクキュー1222_01〜タスクキュー1222_Nの順番でタスクID1211が保存される。
In the task queue 1222, for example, the
タスクキュー1222_01に保存されるタスクID1211は、例えば、コンテナ105で実行される。タスクキュー1222_01に保存されるタスクID1211の処理が終了した場合には、タスクキュー1222_02に保存されるタスクID1211が同一のFPGA情報1221のタスクキュー1222_01に移動する。
The
なお、タスクキュー1222は、割り当てられたタスクの数により、追加または削除されてもよい。すなわち、任意の数Nは、一定の値に限らず、割り当てられたタスクの数によって増減される変数でもよい。 The task queue 1222 may be added or deleted depending on the number of assigned tasks. That is, the arbitrary number N is not limited to a constant value, and may be a variable that is increased or decreased depending on the number of assigned tasks.
キューイング処理部111の第1のFPGAを選択する方法を説明する。図6は、各FPGA104におけるタスクの実行時間の説明図である。各FPGA104の中から、「FPGA_01」と、「FPGA_02」と、「FPGA_04」と、を一例に挙げてキューイング処理部111の第1のFPGAを選択する方法を説明する。
A method of selecting the first FPGA of the queuing processing unit 111 will be described. FIG. 6 is an explanatory diagram of a task execution time in each
「FPGA_01」には、「タスク_01」がタスクキュー1222_01に保存される。「FPGA_02」には、「タスク_02」および「タスク_09」がタスクキュー1222_01およびタスクキュー1222_02に保存される。「FPGA_04」には、「タスク_04」および「タスク_10」がタスクキュー1222_01およびタスクキュー1222_02に保存される。 In "FPGA_01", "task_01" is stored in the task queue 1222_01. In "FPGA_02", "task_02" and "task_09" are stored in the task queue 1222_01 and the task queue 1222_02. In "FPGA_04", "task_04" and "task_10" are stored in the task queue 1222_01 and the task queue 1222_02.
「タスク_01」〜「タスク_12」の実行時間は、ユーザによって設定されてもよい。なお、「タスク_01」〜「タスク_12」の実行時間は、コンテナ105が各タスクを実行した実績の情報から算出されてもよい。
The execution time of "task_01" to "task_12" may be set by the user. The execution time of "task_01" to "task_12" may be calculated from the information of the actual results of the
「タスク_01」〜「タスク_12」の実行時間は、具体的には、例えば、「40秒」に設定される。なお、「タスク_01」〜「タスク_12」の実行時間は、一律に設定されることに限らず、タスクID1211ごとに実行時間が設定されてもよい。
Specifically, the execution time of "task_01" to "task_12" is set to, for example, "40 seconds". The execution time of "task_01" to "task_12" is not limited to being set uniformly, and the execution time may be set for each
FPGA104の構成変更時間60は、ユーザによって設定されてもよい。なお、FPGA104の構成変更時間60は、FPGA104の構成変更の実績から算出されてもよい。新しいロジックID1212の構成変更時間60は、新しいロジックがFPGA104の面積を占める割合に基づいて、実績のあるロジックID1212の構成変更時間60から算出されてもよい。その実績のあるロジックID1212の面積は、新しいロジックの面積と同様である。
The
FPGA104の構成変更時間60は、具体的には、例えば、「50秒」に設定される。なお、構成変更時間60は、一律に設定されることに限らず、構成変更後のロジックID1212に基づいて、タスクID1211ごとにそれぞれ設定されてもよい。
Specifically, the
なお、タスクの実行が途中である場合には、キューイング処理部111は、「タスク_01」〜「タスク_12」の実行時間の残りの時間を算出する。FPGA104の構成変更が途中である場合には、キューイング処理部111は、構成変更時間60の残りの時間を算出する。
When the task is being executed, the queuing processing unit 111 calculates the remaining time of the execution times of "task_01" to "task_12". When the configuration change of the
キューイング処理部111は、「FPGA_01」、「FPGA_02」および「FPGA_04」ごとに、タスクの実行時間と、構成変更時間60との合計時間を算出する。すなわち、キューイング処理部111は、FPGA104ごとに、タスクの実行時間と、構成変更時間60との合計時間を算出する。
The queuing processing unit 111 calculates the total time of the task execution time and the
「FPGA_01」の合計時間は、例えば、「タスク_01」の実行時間である「40秒」である。なお、「FPGA_03」,「FPGA_06」〜「FPGA_08」は、「FPGA_01」と同様にタスクの数が「1」であるため、実行時間が「40秒」である。 The total time of "FPGA_01" is, for example, "40 seconds" which is the execution time of "task_01". Since the number of tasks of "FPGA_03" and "FPGA_06" to "FPGA_08" is "1" as in "FPGA_01", the execution time is "40 seconds".
「FPGA_02」の合計時間は、例えば、「タスク_02」および「タスク_09」の実行時間である「80秒」である。なお、「FPGA_05」は、「FPGA_02」と同様に、「タスク_05」と、「タスク_11」と、のロジックID1212が一致しているので、合計時間が「80秒」である。
The total time of "FPGA_02" is, for example, "80 seconds" which is the execution time of "task_02" and "task_09". As with "FPGA_02", the
「タスク_04」と、「タスク_10」と、のロジックID1212が異なるため、「FPGA_04」の合計時間には、構成変更時間60が含まれる。これにより、「FPGA_04」の合計時間は、例えば、「タスク_04」および「タスク_10」の実行時間と、構成変更時間60と、の合計の「130秒」である。
Since the
なお、本実施例において、各FPGA10の合計時間には、各プログラム111〜113の処理時間またはFPGA104の待機時間等が含まれてもよい。
In this embodiment, the total time of each
図4を参照する。キューイング処理部111は、例えば、実行時間が「40秒」の「FPGA_01」,「FPGA_03」,「FPGA_06」〜「FPGA_08」を第1のFPGAに選択する(S11)。すなわち、キューイング処理部111は、例えば、各FPGA104のうちの短い合計時間を有する第1のFPGAを選択する。
See FIG. For example, the queuing processing unit 111 selects "FPGA_01", "FPGA_03", "FPGA_06" to "FPGA_08" having an execution time of "40 seconds" as the first FPGA (S11). That is, the queuing processing unit 111 selects, for example, the first FPGA having the short total time of each
キューイング処理部111は、処理(S12)に移動する。キューイング処理部111は、タスクリスト記憶部121から「タスク_12」のロジックID1212を取得する。「タスク_12」のロジックID1212は、例えば、「モデル生成_02」である。
The queuing processing unit 111 moves to the processing (S12). The queuing processing unit 111 acquires the
キューイング処理部111は、タスクキュー記憶部122を参照して各第1のFPGAのタスクキュー1222の末尾のタスクID1211を取得する。末尾のタスクID1211とは、例えば、各FPGA情報1221において、タスクキュー1222に保存されるタスクIDのうち、最後に処理が実行されるタスクIDを示す。
The queuing processing unit 111 refers to the task
キューイング処理部111は、タスクリスト記憶部121を参照して、各第1のFPGAの末尾のタスクID1211に基づいて、各第1のFPGAのロジックID1212の値を取得する。
The queuing processing unit 111 refers to the task
キューイング処理部111は、「モデル生成_02」が各第1のFPGAの末尾のタスクのロジックID1212に含まれているかを判定する(S12)。「モデル生成_02」の値が各第1のFPGAのロジックID1212に含まれていないため(S12:Yes)、キューイング処理部111は、第1のFPGA以外の他のFPGA内に「モデル生成_02」を含む「第2の構成変更型集積回路」の一例としての第2のFPGAがあるかを判定する(S13)。
The queuing processing unit 111 determines whether "model generation_02" is included in the
キューイング処理部111は、「タスク_02」および「タスク_09」が「モデル生成_02」を示す為(S13:Yes)、「タスク_09」を末尾のタスクとして有する「FPGA_02」を第2のFPGAとして選択する(S14)。すなわち、キューイング処理部111は、第1のFPGAを除く複数のFPGA104のうち、構成変更前のロジックを使用して所定のタスクを実行可能な第2のFPGAを選択する。なお、キューイング処理部111は、第2のFPGAを複数選択してもよい。
Since "task_02" and "task_09" indicate "model generation_02" (S13: Yes), the queuing processing unit 111 uses "FPGA_02" having "task_09" as the last task as the second FPGA. Select (S14). That is, the queuing processing unit 111 selects the second FPGA that can execute a predetermined task by using the logic before the configuration change from the plurality of
キューイング処理部111は、第1のFPGAにおける「タスク_12」の実行開始時間と、第2のFPGAにおける「タスク_12」の実行開始時間と、を算出する(S15)。実行開始時間は、例えば、「タスク_12」の処理を開始するまでにかかる、タスクID1211の実行時間と、構成変更時間60と、の合計である。
The queuing processing unit 111 calculates the execution start time of "task_12" in the first FPGA and the execution start time of "task_12" in the second FPGA (S15). The execution start time is, for example, the total of the execution time of the
「FPGA_01」の「タスク_01」のロジックが「判定処理_01」であるため、キューイング処理部111は、「FPGA_01」の実行開始時間に構成変更時間60の「50秒」が含まれると判定する。キューイング処理部111は、「FPGA_01」における、「タスク_01」と、構成変更時間60と、の処理の合計時間である「90秒」を「タスク_12」の実行開始時間として算出する。なお、第1のFPGAの「タスク_12」の実行開始時間は、第1実行開始時間と示す場合がある。
Since the logic of "task_01" of "FPGA_01" is "determination processing_01", the queuing processing unit 111 determines that the execution start time of "FPGA_01" includes "50 seconds" of the
「FPGA_02」の「タスク_09」のロジックが「モデル生成_02」であるため、キューイング処理部111は、「タスク_02」および「タスク_09」の処理の合計時間である「80秒」を「FPGA_02」の実行開始時間として算出する。なお、第2のFPGAの「タスク_12」の実行開始時間は、第2実行開始時間と示す場合がある。 Since the logic of "task_09" of "FPGA_02" is "model generation_02", the queuing processing unit 111 sets "80 seconds", which is the total processing time of "task_02" and "task_09", to "FPGA_02". Is calculated as the execution start time. The execution start time of "task_12" of the second FPGA may be indicated as the second execution start time.
キューイング処理部111は、第1実行開始時間と、第2実行開始時間と、を比較する(S16)。キューイング処理部111は、例えば、第2実行開始時間が第1実行開始時間よりも短いため(S16:Yes)、キューイング処理部111は、第2のFPGAである「FPGA_02」のタスクキュー1222_3に「タスク_12」を割り当てる(S17)。 The queuing processing unit 111 compares the first execution start time with the second execution start time (S16). Since the queuing processing unit 111 has a second execution start time shorter than the first execution start time (S16: Yes), for example, the queuing processing unit 111 has a task queue 1222_3 of the second FPGA "FPGA_02". "Task_12" is assigned to (S17).
第1実行開始時間が第2実行開始時間よりも短い場合(S16:No)には、キューイング処理部111は、所定のタスクを第1のFPGAに割り当てる(S18)。すなわち、キューイング処理部111は、第1のFPGAと、第2のFPGAとを比較して実行開始時間が短いFPGA104を所定のFPGAとして選択する(S16〜S18)。
When the first execution start time is shorter than the second execution start time (S16: No), the queuing processing unit 111 allocates a predetermined task to the first FPGA (S18). That is, the queuing processing unit 111 compares the first FPGA with the second FPGA and selects the
構成変更前のロジックで所定のタスクを実行可能な第1のFPGAがある場合(S12:No)、または、第1のFPGA以外の他のFPGAがロジックの構成変更をして所定のタスクを実行する場合(S13:No)には、キューイング処理部111は、第1のFPGAを所定のFPGAとして所定のタスクを割り当てる。 When there is a first FPGA that can execute a predetermined task with the logic before the configuration change (S12: No), or another FPGA other than the first FPGA changes the logic configuration and executes the predetermined task. In the case of (S13: No), the queuing processing unit 111 assigns a predetermined task with the first FPGA as a predetermined FPGA.
すなわち、キューイング処理部111は、各FPGA104の中で所定のタスクを最も早く実行できる処理のFPGAに所定のタスクを割り当てる。
That is, the queuing processing unit 111 assigns a predetermined task to the FPGA of the processing that can execute the predetermined task earliest in each
所定のタスクを割り当てるFPGA104の候補が複数ある場合には、キューイング処理部111は、いずれかのうちの一つのFPGA104を選択してタスクを割り当てる。キューイング処理部111は、各FPGA104からランダムに所定のFPGA104を選択してもよい。
When there are a plurality of candidates for
任意のコンテナ105が任意のFPGA104を専有して利用する場合には、キューイング処理部111は、タスクキュー記憶部122から任意のFPGA104のFPGA情報1221を削除してもよい。なお、キューイング処理部111は、任意のFPGA情報1221に対応するタスクキュー1222_01に、任意のコンテナ105のタスクID1211を固定することによって、任意のFPGA104を任意のコンテナ105に専有させてもよい。
When the
所定のタスクがタスクキュー1222_01に保存される場合には、キューイング処理部111は、FPGA104の構成変更前のロジックの情報を取得する。キューイング処理部111は、例えば、取得したロジックの情報と、所定のタスクのロジックID1212と、が一致するFPGA情報1221にタスクを割り当てる。取得したロジックの情報と、所定のタスクのロジックID1212と、が異なる場合には、キューイング処理部111は、いずれかのうちの一つのFPGA104を選択してタスクを割り当ててもよい。所定のタスクがタスクキュー1222_01に保存される場合は、例えば、新たに管理サーバ10を立ち上げた場合等が挙げられる。
When the predetermined task is stored in the task queue 1222_01, the queuing processing unit 111 acquires the information of the logic before the configuration change of the
キューイング処理部111は、各アプリケーション50の優先順位に基づいて、FPGA104ごとにタスクを割り当ててもよい。図7(A)は、アプリケーション50の優先順位情報1312の説明図である。キューイング処理部111は、アプリケーション50の優先順位情報1312を取得する。優先順位情報1312は、アプリケーションDI1311ごとに設定される。アプリケーションID1311には、各アプリケーション50の識別情報が保存される。
The queuing processing unit 111 may assign a task to each
優先順位情報1312には、例えば、「ランク_1」〜「ランク_M」(M=所定の数)が示されている。優先度としては、例えば、「ランク_1」が優先順位情報1312の中で最も優先度が高く、「ランク_2」,「ランク_3」と次第に優先度が低くなり、「ランク_M」が優先順位情報1312の中で最も優先度が低くなる。すなわち、キューイング処理部111は、例えば、「ランク_1」〜「ランク_M」の順番で優先的にタスクキュー1222に各タスクを割り当てる。なお、所定の数Mは、一定の値に限らず、ユーザによって変更される変数でもよい。
In the
図7(B)は、アプリケーションID1311と、タスクID1211と、の説明図である。キューイング処理部111bは、例えば、「タスク_12」のアプリケーションID1311を取得する。「タスク_12」のアプリケーションID1311は、「アプリケーション_12」である。キューイング処理部111は、「タスク_12」の優先順位情報1312を取得する。「タスク_12」の優先順位情報1312が「ランク_01」であるため、キューイング処理部111bは、優先順位情報1312が「ランク_02」,「ランク_03」のアプリケーションID1311を取得する。
FIG. 7B is an explanatory diagram of the
「アプリケーション_11」優先順位情報が「ランク_03」の処理であるため、キューイング処理部111bは、タスクリスト記憶部121から「アプリケーション_11」のタスクID1211を取得する。「アプリケーション_11」のタスクID121が「タスク_11」であるため、キューイング処理部111bは、「タスク_11」の前に「タスク_12」を割り当てる。すなわち、キューイング処理部111bは、タスクキュー1222_02に保存されている「タスク_11」をタスクキュー1222_03に移動し、「タスク_12」をタスクキュー1222_02に保存する。
Since the priority information of "application_11" is the processing of "rank_03", the queuing processing unit 111b acquires the
すなわち、キューイング処理部111は、例えば、所定のアプリケーション50よりも優先度の低い、低優先アプリケーション50のタスクを取得する。キューイング処理部111は、低優先アプリケーション50のタスクの前に所定のタスクを割り当てる。なお、キューイング処理部111bは、所定のタスクが実行されるまでの待ち時間に応じて、所定のタスクを割り込ませるタスクキュー1222の場所を選択してもよい。 That is, the queuing processing unit 111 acquires, for example, the task of the low priority application 50, which has a lower priority than the predetermined application 50. The queuing processing unit 111 allocates a predetermined task before the task of the low priority application 50. The queuing processing unit 111b may select the location of the task queue 1222 to interrupt the predetermined task according to the waiting time until the predetermined task is executed.
図8は、FPGA割り当て処理(S20)の流れ図である。FPGA割り当て処理(S20)は、割当処理部112の処理(S21〜S23,S25,S26)およびロジック変更処理部113の処理(S24)を有する。なお、FPGA割り当て処理(S20)は、「FPGA_02」の「タスク_02」および「タスク_09」が実行完了することによって、「FPGA_02」のタスクキュー1222_01に「タスク_12」が保存される場合を例に挙げて説明する。 FIG. 8 is a flow chart of the FPGA allocation process (S20). The FPGA allocation process (S20) includes processing of the allocation processing unit 112 (S21 to S23, S25, S26) and processing of the logic change processing unit 113 (S24). The FPGA allocation process (S20) is performed by taking as an example a case where "task_12" is saved in the task queue 1222_01 of "FPGA_02" when "task_02" and "task_09" of "FPGA_02" are completed. I will explain it by listing it.
FPGA割り当て処理(S20)は、割当処理部112の処理(S21)に移動する。割当処理部112は、例えば、タスクキュー1222_01のタスクID1211が変更されることによって実行される。割当処理部112は、例えば、タスクリスト記憶部121から「タスク_09」のロジックID1212を取得する(S21)。「タスク_09」のロジックID1212は、「モデル生成_02」である。すなわち、割当処理部112は、タスクキュー1222_01から削除されたタスクID1211に基づいて、FPGA104に実装済みのロジックID1212を取得する。
The FPGA allocation process (S20) moves to the process (S21) of the
割当処理部112は、例えば、タスクリスト記憶部121から「タスク_12」のロジックID1212を取得する(S22)。「タスク_12」のロジックID1212は、例えば、「モデル生成_02」である。すなわち、割当処理部112は、タスクキュー1222_01に保存されるタスクID1211に基づいて、実装予定のロジックID1212を取得する。
The
割当処理部112は、「タスク_09」のロジックID1212と、「タスク_12」のロジックID1212と、を比較して「FPGA_02」のロジックを構成変更するかどうか判定する(S23)。すなわち、割当処理部112は、FPGA104に実装済みのロジックと、FPGA104に実装予定のロジックと、を比較することによって所定のFPGA104を構成変更するかを判定する。
The
「タスク_02」のロジックID1212と、「タスク_09」のロジックID1212と、が共に「モデル生成_02」であるため(S23:No)、割当処理部112の処理は、処理(S25)に移動する。
Since the
割当処理部112は、「タスク_09」のコンテナID1213をタスクリスト記憶部121から取得する。「タスク_09」が「コンテナ_09」にて実行される処理であるため、割当処理部112は、「コンテナ_09」に対して「FPGA_02」をマウントする。なお、割当処理部112は、「FPGA_02」がアプリケーション50の処理から解放された場合に、「FPGA_02」を「コンテナ_09」に対してマウントする。割当処理部112は、「コンテナ_09」の「アプリケーション_09」の処理を開始させる制御信号を「コンテナ_09」に送信する(S26)。
The
すなわち、割当処理部112は、タスクリスト記憶部121およびタスクキュー記憶部122を参照し、所定のFPGA104を所定のコンテナ105にマウントする機能である。
That is, the
FPGA104を構成変更するかどうか判定する処理(S23)において、実装済みのロジックと、実装予定のロジックと、が異なるロジックID1212を有している場合(S23:Yes)には、割当処理部112は、ロジック変更処理部113を実行する(S24)。割当処理部112は、所定のFPGA104のFPGA情報1221と、実装予定のロジックID1212と、をロジック変更処理部113に送信する。なお、割当処理部112は、例えば、所定のFPGA104がタスクから解放された場合に、ロジック変更処理部113を実行する。
In the process of determining whether to change the configuration of the FPGA 104 (S23), when the implemented logic and the logic to be implemented have different logic ID 1212 (S23: Yes), the
ロジック変更処理部113は、所定のFPGA104のFPGA情報1221と、実装予定のロジックID1212と、を取得する。ロジック変更処理部113は、実装予定のロジックID1212と一致するロジックの情報を、ロジック記憶部123から取得する。ロジック変更処理部113は、取得したロジックの情報に基づいて、FPGA104の構成変更をする。
The logic
ロジック記憶部123は、ロジックの情報を記録する。ロジックの情報は、例えば、回路に実装される端子の接続情報を示す。ロジックの情報は、所定のプログラムにより用意されてもよい。ユーザは、例えば、ハードウェア記述言語(HDL:Hardware Description Language)によって記載されたプログラムを論理合成ツールによってロジックの情報に変換してもよい。論理合成ツールは、例えば、ハードウェア記述言語によるソースコードをロジックの情報に変換するソフトウェアである。
The
以上に示す、キューイング処理部111および割当処理部112によって、FPGA104をコンテナ105間で共有することができる。管理サーバ10は、キューイング処理111によって、アプリケーション50のタスクを効率的に実行することができる。
The
キューイング処理部111は、第1のFPGAおよび第2のFPGAのいずれか一方から所定のFPGAを選択することによって、所定のタスクを各FPGA104の中で最も早く実行できるFPGA104に割り当てることができる。
By selecting a predetermined FPGA from either the first FPGA or the second FPGA, the queuing processing unit 111 can assign the predetermined task to the
アプリケーション50の優先順位情報1312に基づいてキューイング処理部111が所定のタスクをFPGA104に割り当てることによって、管理サーバ10は、他のアプリケーション50の処理よりも優先的に所定のアプリケーション50の処理を開始することができる。
When the queuing processing unit 111 assigns a predetermined task to the
図9は、第2の実施例に係る管理サーバ10aの概略図である。本実施例は、第1実施例の変形例に相当するため、第1実施例との相違を中心に説明する。管理サーバ10aは、操作端末20(1),20(2)と、通信ネットワーク30を介して接続される。
FIG. 9 is a schematic view of the management server 10a according to the second embodiment. Since this embodiment corresponds to a modified example of the first embodiment, the differences from the first embodiment will be mainly described. The management server 10a is connected to the operation terminals 20 (1) and 20 (2) via the
管理サーバ10aは、例えば、FPGA104と、コンテナ105と、キューイング処理部111と、割当処理部112と、ロジック変更処理部113aと、スケジュール計算処理部114と、予実績判定処理部115と、ソリューション判定部116と、ロジックデザイン処理部117と、タスクリスト記憶部121と、タスクキュー記憶部122と、ロジック記憶部123と、システム稼働履歴記憶部124と、スケジュール記憶部125と、ソリューション記憶部126と、を有する。なお、図9に示す各データベースには、「記憶部」の記載を省略して示す。
The management server 10a includes, for example, an
システム稼働履歴記憶部124は、図11にて詳述するように、FPGA104と、コンテナ105と、の実績を保存するデータベースである。スケジュール計算処理部114は、システム稼働履歴124を参照し、図12にて詳述するFPGA104の構成変更のスケジュール1270(以降、ロジック適用スケジュール1270と示す場合がある)を算出するプログラムである。スケジュール計算処理部114は、スケジュール記憶部125にロジック適用スケジュール1270を保存する。
The system operation
ロジック変更処理部113aは、スケジュール記憶部125を参照し、FPGA104の構成変更をするプログラムである。ロジック変更処理部113aは、FPGA104の状態を参照し、FPGA104の構成変更をする。
The logic
予実績判定処理部115は、システム稼働履歴記憶部124およびスケジュール記憶部125を参照し、FPGA104およびコンテナ105の実績と、ロジック適用スケジュール1270と、の差異を検出するプログラムである。差異が所定の閾値以上検出された場合には、予実績判定処理部115は、スケジュール計算処理部114およびソリューション判定処理部116を実行させる。
The forecast / actual
ソリューション判定処理部116は、ソリューション記憶部126を参照し、ロジック適用スケジュール1270を作成する際に使用するソリューションを設定する。ソリューション判定部116は、判定結果をスケジュール計算処理部117に送信する。
The solution
ロジックデザイン処理部117は、システム稼働履歴記憶部124を参照し、1台のFPGAに複数のロジックを実装できるかを判定するプログラムである。ロジックデザイン処理部117は、判定結果をスケジュール計算処理部114に送信する。
The logic design processing unit 117 is a program that refers to the system operation
図10は、スケジュール生成処理(S30)の流れ図である。スケジュール生成処理(S30)は、例えば、スケジュール計算処理部114の処理(S31)と、ロジック変更処理部113aの処理(S32,S33)と、予実績判定処理部115の処理(S35,S36)と、ソリューション判定部116の処理(S37)と、を示す。
FIG. 10 is a flow chart of the schedule generation process (S30). The schedule generation processing (S30) includes, for example, the processing of the schedule calculation processing unit 114 (S31), the processing of the logic
スケジュール生成処理(S30)は、スケジュール計算処理部114の処理(S31)に移動する。スケジュール計算処理部114は、例えば、システム稼働履歴記憶部124の情報に基づいて、「構成変更のスケジュール」の一例としてのロジック適用スケジュール1270(図12参照)を算出する機能である。スケジュール計算処理(S31)の説明前に、システム稼働履歴記憶部124およびロジック適用スケジュール1270の説明をする。
The schedule generation process (S30) moves to the process (S31) of the schedule
図11は、システム稼働履歴記憶部124の説明図である。システム稼働履歴記憶部124は、IT(Information Technology)インフラ層の稼働履歴情報と、アプリケーション50の稼働履歴情報と、を有する。ITインフラ層の稼働履歴情報は、例えば、FPGA104およびコンテナ105等の稼働履歴情報である。
FIG. 11 is an explanatory diagram of the system operation
システム稼働履歴記憶部124は、コンテナID1241と、サービス名1242と、処理名1243と、ロジックID1244と、FPGA情報1245(図中FPGA_IDと示す場合がある)と、実行開始1246と、実行終了1247と、データ量1248と、を有する。
The system operation
コンテナID1241には、コンテナ105を一意に特定する情報が保存される。コンテナID1241は、タスクリスト記憶部121のコンテナID1213と対応する。
Information that uniquely identifies the
サービス名1242には、コンテナ105上で稼働するアプリケーション50を一意に特定する情報が保存される。処理名1243には、コンテナ105上で実行されるアプリケーション50の処理を特定する情報が保存される。
The
ロジックID1244には、アプリケーション50を実行するFPGA104のロジックを特定する情報が保存される。ロジックID1244は、タスクリスト記憶部121のロジックID1212と対応する。FPGA情報1245には、FPGA104を特定する情報が保存される。FPGA情報1245は、タスクキュー記憶部122のFPGA情報1221と対応する。
The
実行開始1246には、処理名1243にて示されるアプリケーション50の処理の開始時刻が保存される。実行終了1247には、処理名1243にて示されるアプリケーション50の処理の終了時刻が保存される。
The execution start 1246 stores the start time of the process of the application 50 indicated by the
データ量1248には、アプリケーション50の処理データの容量が保存される。処理データは、例えば、機械学習における教師データ等が挙げられる。アプリケーション50の処理データは、例えば、補助記憶装置102からメモリ103にロードされる。なお、システム稼働履歴記憶部124には、FPGA104およびコンテナ105の処理の実績に限らず、手動または不図示の他のプログラムにより蓄積された情報でもよい。
The amount of processing data of the application 50 is stored in the
図12は、ロジック適用スケジュール1270の説明図である。ロジック適用スケジュール1270は、スケジュール記憶部127に保存される。ロジック適用スケジュール1270は、FPGA数1271と、ロジックID1272と、開始時刻1273と、完了時刻1274とを有する。
FIG. 12 is an explanatory diagram of the
FPGA数1271には、FPGA104の数の情報が保存される。ロジックID1272には、FPGA104のロジックを特定する情報が保存される。なお、ロジックID1272には、少なくとも一つ以上のロジックの識別情報が保存される。開始時刻1273と完了時刻1274には、ロジックID1272のロジックをFPGA104に実装する時間の情報が保存される。
Information on the number of
すなわち、ロジック適用スケジュール1270は、開始時刻1273から完了時刻1274までの間に、ロジックID1272のロジックが実装されたFPGA104を、FPGA数1271で示された数用意するというスケジュールを示す。
That is, the
図10に戻り、スケジュール計算処理部114のスケジュール計算処理(S31)は、例えば、アプリケーション50のソリューションに基づいて、ロジック適用スケジュール1270を算出する。スケジュール計算処理部114は、ソリューションの情報を後に詳述するソリューション判定部116から取得する。
Returning to FIG. 10, the schedule calculation process (S31) of the schedule
なお、スケジュール計算処理部114は、例えば、システム稼働履歴記憶部124の所定期間におけるロジックID1244の統計に基づいて、ロジック適用スケジュール1270を算出してもよい。スケジュール計算処理部114は、例えば、新たにシステム稼働履歴記憶部124に保存された情報から所定件数の情報を参照することによって、ロジック適用スケジュール1270を算出してもよい。
The schedule
なお、管理サーバ10aは、システム稼働履歴記憶部124に保存される情報が所定数以上記憶されている場合にスケジュール計算処理部114を実行する。システム稼働履歴記憶部124の情報が所定数未満である場合には、管理サーバ10aは、キューイング処理部111と、割当処理部112と、ロジック変更処理部113と、を実行することによって、各FPGA104を各コンテナ105に割り当てる。
The management server 10a executes the schedule
すなわち、キューイング処理部111および割当処理部112は、スケジュール計算処理部114から独立して処理する。管理サーバ10aは、キューイング処理部111と、割当処理部112と、ロジック変更処理部113と、を実行することによって、システム稼働履歴記憶部124に、ITインフラ層の稼働履歴情報およびアプリケーション50の稼働履歴情報を蓄積する。
That is, the queuing processing unit 111 and the
図10に戻り、スケジュール生成処理(S30)は、ロジック変更処理部113aのロジック変更処理(S32,S33)に移動する。ロジック変更処理部113aは、割当処理部112の結果に基づいてFPGA104を構成変更する第1変更機能と、ロジック適用スケジュール1270に沿ってFPGA104を構成変更する第2変更機能と、を有する。なお、図10に示すロジック変更処理(S32,S33)は、ロジック変更処理部113aの第2変更機能を示す。
Returning to FIG. 10, the schedule generation process (S30) moves to the logic change process (S32, S33) of the logic
ロジック変更処理部113aの第1変更機能は、割当処理部112から制御信号が送信されることによって実行される。ロジック変更処理部113aは、割当処理部112から、ロジックID1212およびFPGA情報1221を取得する。ロジック変更処理部113aは、ロジックID1212およびロジック記憶部123に基づいて、FPGA情報1221が設定されるFPGA104を構成変更する。
The first change function of the logic
ロジック変更処理部113aの第2変更機能は、FPGA104がアプリケーション50の処理から解放された場合にロジック適用スケジュール1270に示されるロジックを実装する。ロジック変更処理部113aは、アプリケーション50の処理から解放されるFPGA104があるかを判定する(S32)。
The second change function of the logic
処理から解放されるFPGA104がある場合(S32:Yes)には、ロジック変更処理部113aは、ロジックID1272にて示されるロジックを処理から解放されるFPGA104に実装する(S33)。
When there is an
FPGA104がアプリケーション50の処理を実行していると判断する場合(S32:No)には、ロジック変更処理部113は、FPGA104が処理から解放されるまで待機する。なお、開始時刻1273以降もFPGA104が処理を実行していると判断した場合には、ロジック変更処理部113aの第2変更機能は、終了してもよい。
When it is determined that the
管理サーバ10aは、アプリケーション50の処理を実行する(S34)。FPGA104およびコンテナ105は、システム稼働履歴記憶部124に情報を送信する。
The management server 10a executes the process of the application 50 (S34). The
スケジュール生成処理(S30)は、予実績判定処理部115の処理(S35)に移動する。予実績判定処理部115は、システム稼働履歴記憶部124に保存されるFPGA104のロジックの変更の実績がロジック適用スケジュール1270と異なる場合に、ロジック適用スケジュール1270を再生成させる機能である。
The schedule generation process (S30) moves to the process (S35) of the forecast / performance
予実績判定処理部115は、例えば、システム稼働履歴記憶部124から、FPGA104およびコンテナ105の情報を取得する。予実績判定処理部115は、スケジュール記憶部127からロジック適用スケジュール1270を取得する(S35)。
The forecast / performance
予実績判定処理部115は、例えば、各FPGA104のロジックがロジック適用スケジュール1270に沿って構成変更されたかを判定する(S36)。すなわち、予実績判定処理部115は、ロジック適用スケジュール1270と、システム稼働履歴記憶部124に保存される実績と、の差異を検出する。
The forecast / performance
予実績判定処理部115は、ロジック適用スケジュール1270に示されるロジックID1272以外のロジックがFPGA104に実装されたことを、システム稼働履歴記憶部124から検出してもよい。
The forecast / performance
差異が所定の閾値以上ある場合(S36:No)には、予実績判定処理部115は、比較した結果をソリューション判定部116に送信し、スケジュール計算処理部114を実行する。所定の閾値は、ユーザによって設定されてもよい。
When the difference is equal to or greater than a predetermined threshold value (S36: No), the forecast / performance
予実績判定処理部115は、FPGA104をコンテナ105に割り当てる際に制限が加えられることによって実行されてもよい。すなわち、予実績判定処理部115は、例えば、任意のコンテナ105が任意のFPGA104を専有して利用する場合に実行されてもよい。
The forecast performance
予実績判定処理部115は、所定のタイミングで実行されてもよい。予実績判定処理部115は、例えば、任意のFPGA104が所定時間あたりに所定回数以上構成変更された場合、所定周期ごとに実行すると設定された場合、または、タスクキュー1222に保存されるタスクの数がFPGA104間で偏りが生じた場合に実行されてもよい。
The preliminary performance
ソリューション判定部116は、予実績判定処理部115の差異の情報を取得し、スケジュール計算処理部114で使用するソリューションを選択する機能である。ソリューションの情報は、例えば、ソリューション記憶部126に複数保存される。
The
なお、スケジュール計算処理部114は、ロジックデザイン処理部117の判定結果を参照してロジック適用スケジュール1270を算出してもよい。ロジックデザイン処理部117は、システム稼働履歴記憶部124の情報に基づいて複数のロジックを一つのFPGA104に実装可能かを判定する機能である。ロジックデザイン処理部117は、システム稼働履歴記憶部124からFPGA104に実装されたロジックの情報を複数取得する。ロジックデザイン処理部117は、一台のFPGA104に複数のロジックを実装可能か判定する。
The schedule
ロジックデザイン処理部117は、具体的には、例えば、システム稼働履歴記憶部124において、「コンテナ_01」に割り当てられたFPGA104には、「モデル生成_01」と、「モデル生成_02」と、が実装されると判定する。ロジックデザイン処理部117は、「コンテナ_01」以外の他のコンテナ105においても、実装されたロジックID1244を判定する。
Specifically, for example, in the system operation
各コンテナ105において「モデル生成_01」と、「モデル生成_02」と、が実装される頻度が高い場合には、ロジックデザイン処理部117は、「モデル生成_01」と、「モデル生成_02」と、を一つのFPGA104に実装できるかを判定する。すなわち、ロジックデザイン処理部117は、FPGA104の回路の実装面積と、「モデル生成_01」の回路の実装面積および「モデル生成_02」の回路の実装面積の合計と、を比較する。
When "model generation_01" and "model generation_02" are frequently implemented in each
「モデル生成_01」の回路の実装面積および「モデル生成_02」の回路の実装面積の合計がFPGA104の回路の実装面積よりも狭い場合には、ロジックデザイン処理部117は、一つのFPGA104に「モデル生成_01」と、「モデル生成_02」と、を実装できると判定する。ロジックデザイン処理部117は、判定結果をスケジュール計算処理部114に送信する。スケジュール計算処理部114は、取得した判定結果に基づいて、ロジック適用スケジュール1270を算出する。
When the total mounting area of the circuit of "model generation_01" and the mounting area of the circuit of "model generation_02" is smaller than the mounting area of the circuit of
これにより、スケジュール計算処理部114によって、管理サーバ10aは、アプリケーション50を実行する前に予めFPGA104を構成変更することができる。この結果、管理サーバ10aは、アプリケーション50の処理を効率的に実行する事ができる。
予実績判定処理部115によって、管理サーバ10aは、ロジック適用スケジュール1270を改善することができる。
As a result, the schedule
The management server 10a can improve the
キューイング処理部111および割当処理部112がスケジュール計算処理部114から独立していることによって、ロジック適用スケジュール1270が生成される前でも、キューイング処理部111および割当処理部112は処理をすることができる。
Since the queuing processing unit 111 and the
ロジックデザイン処理部117によって、1台のFPGA104に複数のロジックを実装する事ができる。これにより、アプリケーション50の処理から解放されるFPGA104の数を増やすことができる。この結果、ロジック適用スケジュール1270を適用する機会を増やすことができると期待できる。
The logic design processing unit 117 can implement a plurality of logics in one
なお、本実施形態に例示する処理フローには、不図示の処理ステップが含まれていても良いし、いくつかの処理ステップが存在しなくても良い場合もあり、いくつかの処理ステップの実行順序が入れ替わっていても良い。 Note that the processing flow exemplified in this embodiment may include processing steps (not shown) or may not have some processing steps, and execution of some processing steps. The order may be changed.
本実施形態の説明では、プログラムを主語として開示された処理は管理サーバ等の計算機、情報処理装置が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアによって実現されてもよい。 In the description of the present embodiment, the process disclosed with the program as the subject may be a process performed by a computer such as a management server or an information processing device. Part or all of the program may be implemented by dedicated hardware.
各種プログラムは、プログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各計算機にインストールされてもよい。この場合、プログラム配布サーバは、プロセッサと記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムを記憶する。配布プログラムをプロセッサが実行することで、プログラム配布サーバのプロセッサは、配布対象のプログラムを他の計算機に配布する。 Various programs may be installed in each computer by a program distribution server or a storage medium that can be read by the computer. In this case, the program distribution server includes a processor and a storage resource, which further stores the distribution program and the program to be distributed. When the processor executes the distribution program, the processor of the program distribution server distributes the distribution target program to other computers.
ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。ある実施例の構成に他の実施例の構成を加えてもよい。各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。 Part of the configuration of one embodiment may be replaced with the configuration of another embodiment. The configuration of another embodiment may be added to the configuration of one embodiment. Other configurations may be added / deleted / replaced with respect to a part of the configurations of each embodiment.
前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。また、図示する全てのプロセッサや処理やデータや、その他のハードウェア装置や、ソフトウェアは、不図示のネットワークにより接続された、別のサーバ装置やストレージ装置上に存在していてもよいし、別のサーバ装置やストレージ装置上で実行されていても良い。 Each of the above-described configurations, functions, processing units, processing means, etc. may be realized by hardware by designing a part or all of them by, for example, an integrated circuit, and a program in which the processor realizes each function. It may be realized by software by interpreting and executing. In addition, all the processors, processes, data, other hardware devices, and software shown may be present on another server device or storage device connected by a network (not shown). It may be executed on the server device or storage device of.
10,10a,10b…管理サーバ、20(1),20(2)…操作端末、30…通信ネットワーク、40…外部記録媒体、104…FPGA、105…コンテナ、111,111b…キューイング処理部、112…割当処理部、113,113a…ロジック変更処理部、114…スケジュール計算処理部、115…予実績判定処理部、116…ソリューション判定部、117…ロジックデザイン処理部、121…タスクリスト記憶部、122…タスクキュー記憶部、123…ロジック記憶部、124…システム稼働履歴記憶部、125…スケジュール記憶部、126…ソリューション記憶部
10, 10a, 10b ... management server, 20 (1), 20 (2) ... operation terminal, 30 ... communication network, 40 ... external recording medium, 104 ... FPGA, 105 ... container, 111, 111b ... queuing processing unit, 112 ... Allocation processing unit, 113, 113a ... Logic change processing unit, 114 ... Schedule calculation processing unit, 115 ... Preliminary performance judgment processing unit, 116 ... Solution judgment processing unit 117 ... Logic design processing unit, 121 ... Task list storage unit, 122 ... Task queue storage unit, 123 ... Logic storage unit, 124 ... System operation history storage unit, 125 ... Schedule storage unit, 126 ... Solution storage unit
Claims (10)
構成変更可能な複数の構成変更型集積回路と、
前記複数の構成変更型集積回路のうちの所定の構成変更型集積回路に対し、前記複数の仮想化環境のうちの所定の仮想化環境により指示される前記アプリケーションプログラムの所定の処理を割り当てるキューイング処理部と、
前記所定の仮想化環境に前記所定の構成変更型集積回路を割り当てる割当処理部と、
前記所定の構成変更型集積回路を構成変更するロジック変更処理部と、を有する
構成変更型集積回路の割当システム。 It is a configuration-changeable integrated circuit allocation system that has multiple virtualized environments for executing application programs.
Multiple reconfigurable integrated circuits and reconfigurable integrated circuits
Queuing that assigns a predetermined process of the application program instructed by a predetermined virtualization environment among the plurality of virtualized environments to a predetermined configuration-changed integrated circuit among the plurality of configuration-changed integrated circuits. Processing unit and
An allocation processing unit that allocates the predetermined configuration-changeable integrated circuit to the predetermined virtualization environment, and
A configuration change type integrated circuit allocation system having a logic change processing unit for modifying the configuration of the predetermined configuration change type integrated circuit.
前記複数の構成変更型集積回路ごとに蓄積される前記アプリケーションプログラムの処理時間を算出する機能と、
前記構成変更型集積回路の構成変更の時間を算出する機能と、
前記アプリケーションプログラムの処理時間および前記構成変更の時間を合計した実行時間を前記複数の構成変更型集積回路ごとに算出する機能と、
前記複数の構成変更型集積回路ごとの前記実行時間に基づいて第1の構成変更型集積回路を選択する機能と、
構成変更前の回路を使用して前記所定の処理を実行可能な第2の構成変更型集積回路を選択する機能と、
前記第1の構成変更型集積回路および前記第2の構成変更型集積回路を比較して前記所定の構成変更型集積回路を選択する機能と、を有する
請求項1に記載の構成変更型集積回路の割当システム。 The queuing processing unit
A function for calculating the processing time of the application program accumulated for each of the plurality of configuration-changeable integrated circuits, and
The function of calculating the configuration change time of the configuration change type integrated circuit and
A function of calculating the execution time, which is the sum of the processing time of the application program and the time of the configuration change, for each of the plurality of configuration change type integrated circuits.
A function of selecting a first configuration-modifying integrated circuit based on the execution time of each of the plurality of configuration-modifying integrated circuits, and
A function of selecting a second configuration-changed integrated circuit capable of executing the predetermined process using the circuit before the configuration change, and
The configuration-modified integrated circuit according to claim 1, which has a function of comparing the first configuration-modifying integrated circuit and the second configuration-modifying integrated circuit and selecting the predetermined configuration-modifying integrated circuit. Allocation system.
前記仮想化環境ごとの優先順位情報と、
前記優先順位情報に基づいて前記所定の処理を割り当てる機能と、を有する
請求項2に記載の構成変更型集積回路の割当システム。 Further, the queuing processing unit is
Priority information for each virtualized environment and
The configuration-modifying integrated circuit allocation system according to claim 2, further comprising a function of allocating the predetermined processing based on the priority information.
前記所定の構成変更型集積回路を構成変更するかを判定する機能と、
前記所定の構成変更型集積回路を構成変更するの判定結果に基づいて前記ロジック変更処理部を実行する機能と、を有する
請求項2に記載の構成変更型集積回路の割当システム。 Further, the allocation processing unit is
A function for determining whether to change the configuration of the predetermined configuration change type integrated circuit, and
The configuration change type integrated circuit allocation system according to claim 2, further comprising a function of executing the logic change processing unit based on a determination result of modifying the configuration of the predetermined configuration change type integrated circuit.
前記構成変更型集積回路の割り当て実績を前記仮想化環境ごとに蓄積するシステム稼働履歴記憶部と、
前記システム稼働履歴記憶部の情報に基づいて、前記構成変更型集積回路の構成変更のスケジュールを設定するスケジュール計算処理部と、を備え、
前記ロジック変更処理部は、前記構成変更型集積回路が前記アプリケーションプログラムの処理から解放された場合に、前記スケジュールに示される回路を前記構成変更型集積回路に実装する機能を有する
請求項1に記載の構成変更型集積回路の割当システム。 Further, the configuration change type integrated circuit allocation system is
A system operation history storage unit that stores the allocation results of the configuration-changeable integrated circuit for each virtualization environment, and
A schedule calculation processing unit for setting a configuration change schedule of the configuration change type integrated circuit based on the information of the system operation history storage unit is provided.
The first aspect of claim 1, wherein the logic change processing unit has a function of mounting the circuit shown in the schedule on the configuration change type integrated circuit when the configuration change type integrated circuit is released from the processing of the application program. Configuration change type integrated circuit allocation system.
前記ロジックデザイン処理部は、
前記システム稼働履歴記憶部の情報に基づいて複数の回路を一つの前記構成変更型集積回路に実装可能かを判定する機能を有し、
さらに、前記スケジュール計算処理部は、
前記ロジックデザイン処理部の判定結果に基づいて前記スケジュールを算出する機能を有する
請求項5に記載の構成変更型集積回路の割当システム。 Further, the configuration change type integrated circuit allocation system includes a logic design processing unit.
The logic design processing unit
It has a function of determining whether a plurality of circuits can be mounted on one configuration-changed integrated circuit based on the information of the system operation history storage unit.
Further, the schedule calculation processing unit is
The configuration-modified integrated circuit allocation system according to claim 5, which has a function of calculating the schedule based on the determination result of the logic design processing unit.
前記システム稼働履歴記憶部に保存される情報が所定数以上の場合に前記スケジュール計算処理部を実行し、
前記キューイング処理部および前記割当処理部を前記スケジュール計算処理部から独立の状態で実行させることにより前記システム稼働履歴記憶部に情報を蓄積させる
請求項5に記載の構成変更型集積回路の割当システム。 The configuration change type integrated circuit allocation system is
When the number of information stored in the system operation history storage unit is equal to or greater than a predetermined number, the schedule calculation processing unit is executed.
The configuration-modifying integrated circuit allocation system according to claim 5, wherein the queuing processing unit and the allocation processing unit are executed independently of the schedule calculation processing unit to store information in the system operation history storage unit. ..
予実績判定処理部は、
前記スケジュールと、前記システム稼働履歴記憶部に保存される情報と、を比較して前記スケジュールの再設定をするか判定する機能と、
前記スケジュールの再設定の判定結果に基づき前記スケジュール計算処理部を実行する機能と、を有する
請求項5に記載の構成変更型集積回路の割当システム。 Further, the configuration change type integrated circuit allocation system includes a forecast / performance determination processing unit.
The forecast performance judgment processing unit
A function of comparing the schedule with the information stored in the system operation history storage unit to determine whether to reset the schedule.
The configuration-modifying integrated circuit allocation system according to claim 5, further comprising a function of executing the schedule calculation processing unit based on a determination result of resetting the schedule.
前記所定の仮想化環境に前記所定の構成変更型集積回路を割り当て、
前記所定の構成変更型集積回路を構成変更し、
前記所定の仮想化環境にてアプリケーションプログラムの前記所定の処理を実行する、
構成変更型集積回路の割当方法。 A predetermined process of an application program instructed by a predetermined virtual environment in a virtual environment is assigned to a predetermined configuration change integrated circuit among a plurality of configuration change type integrated circuits.
Assigning the predetermined configuration-modifying integrated circuit to the predetermined virtualization environment,
The configuration of the predetermined configuration-changing integrated circuit is modified.
Execute the predetermined process of the application program in the predetermined virtual environment.
Configuration change type integrated circuit allocation method.
前記コンピュータには、構成変更可能な複数の構成変更型集積回路が備えられ、
前記コンピュータ上に、
前記複数の構成変更型集積回路のうちの所定の構成変更型集積回路に対し、前記仮想化環境のうちの所定の仮想化環境により指示される前記アプリケーションプログラムの所定の処理を割り当てるキューイング処理部と、
前記所定の仮想化環境に前記所定の構成変更型集積回路を割り当てる割当処理部と、
前記所定の構成変更型集積回路を構成変更するロジック変更処理部と、
をそれぞれ実現させるためのコンピュータプログラム。
A computer program for allowing a computer to function as an allocation system for reconfigured integrated circuits, which has a plurality of virtualized environments for executing application programs.
The computer is provided with a plurality of reconfigurable integrated circuits that can be reconfigured.
On the computer
A queuing processing unit that assigns a predetermined process of the application program instructed by a predetermined virtual environment in the virtual environment to a predetermined configuration change integrated circuit among the plurality of configuration change type integrated circuits. When,
An allocation processing unit that allocates the predetermined configuration-changeable integrated circuit to the predetermined virtualization environment, and
A logic change processing unit that changes the configuration of the predetermined configuration change type integrated circuit, and
A computer program to realize each of these.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019095210A JP2020190867A (en) | 2019-05-21 | 2019-05-21 | Configuration changeable integrated circuit allocation system, configuration changeable integrated circuit allocation method and computer program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019095210A JP2020190867A (en) | 2019-05-21 | 2019-05-21 | Configuration changeable integrated circuit allocation system, configuration changeable integrated circuit allocation method and computer program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020190867A true JP2020190867A (en) | 2020-11-26 |
Family
ID=73454596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019095210A Pending JP2020190867A (en) | 2019-05-21 | 2019-05-21 | Configuration changeable integrated circuit allocation system, configuration changeable integrated circuit allocation method and computer program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020190867A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022185527A1 (en) * | 2021-03-05 | 2022-09-09 | 日本電信電話株式会社 | Scheduling device, scheduling method, and scheduling program |
-
2019
- 2019-05-21 JP JP2019095210A patent/JP2020190867A/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022185527A1 (en) * | 2021-03-05 | 2022-09-09 | 日本電信電話株式会社 | Scheduling device, scheduling method, and scheduling program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11425194B1 (en) | Dynamically modifying a cluster of computing nodes used for distributed execution of a program | |
US11579914B2 (en) | Platform independent GPU profiles for more efficient utilization of GPU resources | |
EP3401787B1 (en) | Analyzing resource utilization of a cloud computing resource in a cloud computing environment | |
US9218196B2 (en) | Performing pre-stage replication of data associated with virtual machines prior to migration of virtual machines based on resource usage | |
US11720408B2 (en) | Method and system for assigning a virtual machine in virtual GPU enabled systems | |
US8838801B2 (en) | Cloud optimization using workload analysis | |
US8291414B2 (en) | Shared resource service provisioning using a virtual machine manager | |
US9092266B2 (en) | Scalable scheduling for distributed data processing | |
US10108458B2 (en) | System and method for scheduling jobs in distributed datacenters | |
US9665154B2 (en) | Subsystem-level power management in a multi-node virtual machine environment | |
JP2005056391A (en) | Method and system for balancing workload of computing environment | |
US20200174844A1 (en) | System and method for resource partitioning in distributed computing | |
US11150951B2 (en) | Releasable resource based preemptive scheduling | |
WO2021220092A1 (en) | Multi-cluster container orchestration | |
US10275558B2 (en) | Technologies for providing FPGA infrastructure-as-a-service computing capabilities | |
US20180227240A1 (en) | Data and task reallocation in distributed computing platforms | |
US10057338B2 (en) | Data distribution apparatus, data distribution method, and data distribution program for parallel computing processing system | |
CN113342477A (en) | Container group deployment method, device, equipment and storage medium | |
US10613896B2 (en) | Prioritizing I/O operations | |
JP2020190867A (en) | Configuration changeable integrated circuit allocation system, configuration changeable integrated circuit allocation method and computer program | |
US20150154048A1 (en) | Managing workload to provide more uniform wear among components within a computer cluster | |
WO2022078060A1 (en) | Tag-driven scheduling of computing resources for function execution | |
US10929245B1 (en) | Flexible scheduler for backups | |
JP7037059B2 (en) | Resource management system and resource allocation program | |
WO2016092667A1 (en) | Computer and interrupt control method |