IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特開2024-157115制御装置,制御方法および分散処理システム
<>
  • 特開-制御装置,制御方法および分散処理システム 図1
  • 特開-制御装置,制御方法および分散処理システム 図2
  • 特開-制御装置,制御方法および分散処理システム 図3
  • 特開-制御装置,制御方法および分散処理システム 図4
  • 特開-制御装置,制御方法および分散処理システム 図5
  • 特開-制御装置,制御方法および分散処理システム 図6
  • 特開-制御装置,制御方法および分散処理システム 図7
  • 特開-制御装置,制御方法および分散処理システム 図8
  • 特開-制御装置,制御方法および分散処理システム 図9
  • 特開-制御装置,制御方法および分散処理システム 図10
  • 特開-制御装置,制御方法および分散処理システム 図11
  • 特開-制御装置,制御方法および分散処理システム 図12
  • 特開-制御装置,制御方法および分散処理システム 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024157115
(43)【公開日】2024-11-07
(54)【発明の名称】制御装置,制御方法および分散処理システム
(51)【国際特許分類】
   G06F 9/50 20060101AFI20241030BHJP
   G06T 1/20 20060101ALI20241030BHJP
   G06F 15/78 20060101ALI20241030BHJP
【FI】
G06F9/50 120A
G06T1/20 Z
G06F15/78 560
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023071252
(22)【出願日】2023-04-25
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】児玉 宏喜
(72)【発明者】
【氏名】吉川 隆英
【テーマコード(参考)】
5B057
5B062
【Fターム(参考)】
5B057AA06
5B057AA19
5B057CA08
5B057CA12
5B057CA16
5B057CD07
5B057CD12
5B057CE12
5B057CH02
5B057CH14
5B057CH16
5B057DA16
5B057DB02
5B057DB09
5B057DC16
5B062AA03
(57)【要約】
【課題】プログラマブルロジック回路の処理効率を向上させる。
【解決手段】制御装置4は、1以上のプログラマブルロジック回路7の各々が備える書き換え可能な回路領域70に設定された回路によって実行される複数の処理について、処理間の負荷の不均衡を検出した場合、回路デザインの合成が完了済み且つ配置配線が決定済みである回路ロジックのテンプレート5を複数記憶する記憶領域40から、予め設定された条件を満たす第1テンプレート5を読み出し、1以上の前記回路領域70のうちの前記条件を満たす第1回路領域70に、読み出した前記第1テンプレート5を書き込むことで、前記第1テンプレート5の回路ロジックが実現する第1処理を前記第1回路領域70に設定する。
【選択図】図3
【特許請求の範囲】
【請求項1】
1以上のプログラマブルロジック回路の各々が備える書き換え可能な回路領域に設定された回路によって実行される複数の処理について、処理間の負荷の不均衡を検出した場合、回路デザインの合成が完了済み且つ配置配線が決定済みである回路ロジックのテンプレートを複数記憶する記憶領域から、予め設定された条件を満たす第1テンプレートを読み出し、
1以上の前記回路領域のうちの前記条件を満たす第1回路領域に、読み出した前記第1テンプレートを書き込むことで、前記第1テンプレートの回路ロジックが実現する第1処理を前記第1回路領域に設定する、
制御部を備える、制御装置。
【請求項2】
前記条件は、負荷が増加傾向にある第1処理を、負荷が第1閾値以下である第2処理を実行する前記第1回路領域に書き込むことを示す条件である、
請求項1に記載の制御装置。
【請求項3】
前記制御部は、前記複数の処理を実行する複数の論理回路の各々のネットワーク転送量に基づき、前記複数の処理の各々の負荷を算出する、
請求項1又は請求項2に記載の制御装置。
【請求項4】
前記制御部は、新たなテンプレートの登録要求の受信に応じて、前記新たなテンプレートを前記記憶領域に登録する、
請求項1又は請求項2に記載の制御装置。
【請求項5】
前記制御部は、
情報処理装置から発行された、前記1以上のプログラマブルロジック回路に対する処理要求を取得し、
前記複数のテンプレートの回路ロジックが実現する処理と、前記1以上のプログラマブルロジック回路の各々で動作する処理に対応するテンプレートとを管理する情報に基づき、前記処理要求で要求される処理を実現するテンプレートが動作するプログラマブルロジック回路に、前記処理要求を送信する、
請求項1又は請求項2に記載の制御装置。
【請求項6】
前記条件は、前記不均衡の検出条件と、書込対象のテンプレートと、前記書込対象のテンプレートの書込先の回路領域と、の少なくとも1つを定義し、
前記制御部は、
複数の前記条件を管理する情報から、前記複数の処理の各々の負荷が前記検出条件に合致する前記条件を特定し、
特定した前記条件を満たす前記第1テンプレート及び前記第1回路領域を特定する、
請求項1又は請求項2に記載の制御装置。
【請求項7】
1以上のプログラマブルロジック回路の各々が備える書き換え可能な回路領域に設定された回路によって実行される複数の処理について、処理間の負荷の不均衡を検出した場合、回路デザインの合成が完了済み且つ配置配線が決定済みである回路ロジックのテンプレートを複数記憶する記憶領域から、予め設定された条件を満たす第1テンプレートを読み出し、
1以上の前記回路領域のうちの前記条件を満たす第1回路領域に、読み出した前記第1テンプレートを書き込むことで、前記第1テンプレートの回路ロジックが実現する第1処理を前記第1回路領域に設定する、
処理をコンピュータが実行する、制御方法。
【請求項8】
1以上のプログラマブルロジック回路と、
制御装置と、を備え、
前記制御装置は、
前記1以上のプログラマブルロジック回路の各々が備える書き換え可能な回路領域に設定された回路によって実行される複数の処理について、処理間の負荷の不均衡を検出した場合、回路デザインの合成が完了済み且つ配置配線が決定済みである回路ロジックのテンプレートを複数記憶する記憶領域から、予め設定された条件を満たす第1テンプレートを読み出し、
1以上の前記回路領域のうちの前記条件を満たす第1回路領域に、読み出した前記第1テンプレートを書き込むことで、前記第1テンプレートの回路ロジックが実現する第1処理を前記第1回路領域に設定する、制御部を備える、
分散処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置,制御方法および分散処理システムに関する。
【背景技術】
【0002】
近年、CPU(Central Processing Unit)等の半導体の性能向上が鈍化しており、半導体の高性能化によるコンピュータの性能向上は限界に近付いている。
【0003】
一方、AI(Artificial Intelligence)技術やIoT(Internet of Things)等の発展により処理対象のデータ数が増加しており、コンピュータが実行するアプリケーションには、これまで以上の処理速度及び処理量でタスクを実行することが期待される。
【0004】
アプリケーションの高速化を図る手法の1つとして、ドメイン指向型のアーキテクチャを利用したシステム(以下、「ドメイン指向型システム」と表記する)が挙げられる。ドメイン指向型のアーキテクチャは、適用するアプリケーション領域を絞り、その領域の特性に合わせてハードウェア及びソフトウェアを最適化することで、サーバの性能及び運用性を向上させるアプローチである。
【0005】
ドメイン指向型システムでは、特定の分野における特定の計算に特化したアクセラレータと呼ばれるASIC(Application Specific Integrated Circuit)が利用される。ASICは専用のハードウェアとして製造されるため、利用用途が特定の用途に制限される。これは、ビジネス的に成り立つ見込みのあるアプリケーションでなければ、設計及び製造のコストの観点で、ドメイン指向型システムの適用が困難であることを意味する。
【0006】
アプリケーションへのドメイン指向型システムの適用を容易とするために、書き換え可能なASICとしてFPGA(Field-Programmable Gate Array)が注目されている。FPGAは、PLD(Programmable Logic Device)の一例である。PLDはプログラマブルロジック回路と称されてもよい。
【0007】
FPGAは、回路ロジックが書き込まれる回路領域を備え、リコンフィギャラブル機能により回路領域の回路ロジックの書き換えが可能である。回路ロジックは、FPGAに所定の処理を実現させる論理回路の構造を示す情報である。回路領域の回路ロジックの書き換え処理により様々な種類のASICを作成できるため、ドメイン指向型システムにFPGAを用いることで、設計及び製造のコストと性能とのバランスを取ることができる。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】米国特許出願公開第2019/0334771号明細書
【特許文献2】米国特許出願公開第2020/0099579号明細書
【特許文献3】特開2015-184549号公報
【特許文献4】特開2018-132981号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
例えば、1以上のFPGAに複数の処理を分散して実行させるドメイン指向型システム(分散処理システム)において、複数の処理間の負荷が不均衡である場合、例えば処理Aの実行要求数が多く、処理Bの実行要求数が少ない場合を想定する。
【0010】
このような場合、処理Bの回路ロジックが書き込まれたFPGAでは処理リソースに余裕がある一方、処理Aの回路ロジックが書き込まれたFPGAでは、処理リソースの不足により処理Aの滞留(処理待ち)が発生することがある。このようなFPGAの処理効率(稼働効率)の低下により、処理Aの実行要求元のコンピュータでは、処理遅延が発生し得る。
【0011】
そこで、リコンフィギャラブル機能により、処理Aの回路ロジックを1以上のFPGAの回路領域に書き込むことで、負荷の不均衡の解消を図ることが考えられる。しかし、FPGAの回路ロジックの書き換え処理には時間がかかる。例えば、書き換え処理の工程のうちの合成及び配置配線(Place and Route)には、数日程度の時間がかかることがある。このため、FPGAに実行させる処理をリアルタイムに変更することは困難であり、負荷の不均衡が解消できない場合がある。
【0012】
このように、FPGAが実行する処理の負荷に応じて、FPGAの処理効率が低下する場合があり、これによって実行要求元のコンピュータで処理遅延が発生することがある。
【0013】
1つの側面では、本発明は、プログラマブルロジック回路の処理効率を向上させることを目的の1つとする。
【課題を解決するための手段】
【0014】
1つの側面では、制御装置は、以下の処理を行なう制御部を備えてよい。前記制御部は、1以上のプログラマブルロジック回路の各々が備える書き換え可能な回路領域に設定された回路によって実行される複数の処理について、処理間の負荷の不均衡を検出した場合、回路デザインの合成が完了済み且つ配置配線が決定済みである回路ロジックのテンプレートを複数記憶する記憶領域から、予め設定された条件を満たす第1テンプレートを読み出してよい。また、前記制御部は、1以上の前記回路領域のうちの前記条件を満たす第1回路領域に、読み出した前記第1テンプレートを書き込むことで、前記第1テンプレートの回路ロジックが実現する第1処理を前記第1回路領域に設定してよい。
【発明の効果】
【0015】
1つの側面では、本発明は、プログラマブルロジック回路の処理効率を向上させることができる。
【図面の簡単な説明】
【0016】
図1】比較例に係るシステムの構成を示すブロック図である。
図2】FPGAに対する回路ロジックの書き込み処理の工程の一例を説明するための図である。
図3】一実施形態に係るシステムの構成例を示すブロック図である。
図4】一実施形態に係るシステムのハードウェア構成例を示すブロック図である。
図5】一実施形態に係る最適化装置のソフトウェア構成例を示すブロック図である。
図6】判定条件管理情報の一例を示す図である。
図7】判定部による判定処理の一例を説明するための図である。
図8】FPGA管理情報の一例を示す図である。
図9】テンプレート管理情報の一例を示す図である。
図10】一実施形態に係るシステムの動作例を説明するシーケンス図である。
図11】FPGA管理情報の更新例を示す図である。
図12】テンプレート管理情報の更新例を示す図である。
図13】判定条件管理情報の更新例を示す図である。
【発明を実施するための形態】
【0017】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形又は技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【0018】
〔A〕比較例
図1は、比較例に係るシステム100の構成を示すブロック図である。システム100は、例示的に、複数(図1の例ではn台:nは2以上の整数)のカメラ110(カメラ#0~#n-1),ホストPC(Personal Computer)120,インターフェイス130,及び1以上(図1の例では4台)のFPGA140(FPGA群)を備える。
【0019】
ホストPC120は、複数のカメラ110により撮像された撮像画像を用いて、自動運転又は防犯システム等で用いられるAI処理を実行する。AI処理は、例えば、物体検出処理等の画像認識処理であってよい。AI処理には、撮像画像そのものではなく、撮像画像に対してエッジ抽出処理,二値化処理等の前処理(画像処理)が施された画像が入力される。
【0020】
前処理は、ホストPC120での実行負荷が高い処理である。このため、ホストPC120が前処理を実行する場合、処理遅延が発生する。そこで、比較例に係るシステム100では、前処理の実行をホストPC120からFPGA140にオフロードする。
【0021】
例えば、ホストPC120は、インターフェイス130、又は、FPGA140の図示しないIO(Input / Output)ポートと繋がる高速な通信路を介して、撮像画像をFPGA140に出力する。そして、ホストPC120は、FPGA140より高速に実行された前処理の結果を取得し、当該結果を用いてAI処理を行なう。
【0022】
FPGA140は、回路ロジックを書き換え可能な回路領域を備え、回路領域に設定された回路によって所定の処理を実行する。以下、FPGA140を区別する場合にはFPGA#0~#3(図1参照)と表記する。例えば、FPGA#0~#3のそれぞれは、以下の処理を行なってよい。
【0023】
FPGA#0:処理A:解像度4Kの撮像画像に対するエッジ抽出処理
FPGA#1:処理B:解像度HR(High Resolution)の撮像画像に対するエッジ抽出処理
FPGA#2:処理C:解像度STD(Standard)の撮像画像に対するエッジ抽出処理
FPGA#3:処理D:二値化処理
【0024】
図1の例では、撮像画像が解像度別にFPGA#0~#2に入力される。FPGA#0~#2(処理A~処理C)のそれぞれにより撮像画像から抽出されたエッジは、FPGA#3に入力され、FPGA#3(処理D)により二値化される。二値化された画像データは、前処理の処理結果としてホストPC120に出力される。
【0025】
処理A~処理Cは、いずれも撮像画像に対するエッジ抽出処理であるが、扱うことのできる解像度(最大解像度)が互いに異なる。図1の例では、システム100は、同じエッジ抽出処理を解像度別にFPGA#0~#2に実行させるため、冗長な構成となり易い。
【0026】
また、FPGA140の書き換え可能な回路領域に設定される回路の規模は、当該回路が実行する処理A~処理Dの内容によって異なる。図1の符号141に、処理A~処理Dのそれぞれの回路規模を枠の大きさによって示す。
【0027】
例えば、処理A~処理Cのエッジ抽出処理は、解像度が高いほど回路規模141は大きくなる。図1の例では、扱うことのできる解像度の高い順に、処理A(4K),処理B(HR),処理C(STD)であり、回路規模141の大きい順に、処理A,処理B,処理Cである。なお、処理Dは、処理A~処理Cのそれぞれから順次出力される処理結果を利用した処理であり、最大で4Kの解像度の撮像画像に基づくエッジが入力されるため、処理Aの回路規模に合わせた回路規模141を示している。
【0028】
このため、例えば、リコンフィギャラブル機能により、各FPGA140の回路を変更する場合、各FPGA140の書き換え可能な回路領域の空き領域のサイズと、各処理の回路規模141とに基づき、適切な処理の組み合わせを決定することが重要である。
【0029】
次に、FPGA140に対する回路ロジックの書き換え(書き込み)処理、すなわち回路の設定処理について説明する。図2は、FPGA140に対する回路ロジックの書き込み処理の工程の一例を説明するための図である。
【0030】
図2に示すように、開発者は、HDL(Hardware Description Language)等の言語で回路ロジックのデザインを開発環境に入力し(工程P1)、論理合成ツールを用いてデザイン合成を行なう(工程P2)。このとき、開発者は、デザインの論理検証を行なうことで(工程P3)、デザイン検証を行ない、デザイン合成を完了する。
【0031】
開発者は、デザイン合成の完了後、FPGA140上に論理回路を組み込むためのデザイン実装を行なう(工程P4)。
【0032】
例えば、開発者は、書き換え可能な回路領域上に実装する各機能の最適化(工程P41),最適化した各機能の回路領域上への配置,配線(Place and Route)(工程P42)を行なう。このとき、開発者は、静的タイミング解析(工程P5),バックアノテーション(工程P6)によるタイミング検証(工程P7)を行ない、配置,配線を決定する。
【0033】
そして、開発者は、決定した配置,配線に基づき、回路領域に回路を書き込む(プログラムする)ためのビットストリームを作成する(工程P43)。
【0034】
開発者は、ビットストリームをFPGA140にダウンロードする(工程P8)。例えば、開発者は、JTAG(Joint Test Action Group)等の規格に準拠したインターフェイスを介して、FPGA140の外部記憶装置にビットストリームを書き込む。工程P8は、FPGA140のコンフィグレーション,論理回路の書き込み等と称されてもよい。
【0035】
外部記憶装置に書き込まれたビットストリームは、FPGA140の起動時やリコンフィギャラブル機能の実行時に外部記憶装置から読み出され、FPGA140の書き換え可能な回路領域に書き込まれる。なお、開発者は、回路領域へのビットストリームの書き込み後に、実機検証を行なう(工程P9)。これにより、FPGA140への回路の設定が完了する。
【0036】
例えば、FPGA140が実行する処理A~処理D間に負荷の不均衡が発生した場合、FPGA140の稼働効率が悪化するため、ホストPC120によるAI処理の実行に遅延が生じ得る。このような不均衡を解消するために、例えば、負荷の高い処理を実行する回路を、負荷の低い処理を実行する回路が設定されたFPGA140の回路領域に設定することで、負荷の不均衡の解消を図ることが考えられる。
【0037】
しかし、上述したように、書き換え処理の工程のうちの合成,配置,配線(例えば図2の工程P2及びP42)には、数日程度の時間がかかることがある。このため、FPGA140に実行させる処理をリアルタイムに変更することは困難である。
【0038】
そこで、一実施形態では、FPGAの処理効率を向上させる手法の一例を説明する。
【0039】
〔B〕一実施形態に係るシステムの説明
図3は、一実施形態に係るシステム1の構成例を示すブロック図である。システム1は、分散処理システム又は情報処理システムの一例である。システム1は、例示的に、複数(図3の例ではn台)のカメラ2(カメラ#0~#n-1),ホストPC3,最適化装置4,インターフェイス6,及び1以上(図3の例では4台)のFPGA7(FPGA群)を備える。
【0040】
一実施形態に係るシステム1は、AI処理の前処理である複数の処理をFPGA7に実行させるものとする。前処理は、例えば、画像に対するエッジ抽出処理,抽出されたエッジに基づく二値化処理等を含んでよい。なお、FPGA7が実行する複数の処理は、AI処理の前処理に限定されるものではなく、種々の処理が含まれてよい。
【0041】
カメラ2は、所定の撮像領域を撮像して撮像画像を出力する撮像装置の一例である。複数のカメラ2の各々は、互いに異なる解像度の撮像画像を出力してもよい。
【0042】
ホストPC3は、情報処理装置又はコンピュータの一例であり、カメラ2により撮像された撮像画像に対するAI処理を行なうAI処理エンジン30を備える。ホストPC3は、例えば、前処理をFPGA7にオフロードし、FPGA7による前処理の処理結果に基づき、AI処理エンジン30によりAI処理を行なう。
【0043】
例えば、ホストPC3は、カメラ2から撮像画像を取得すると、取得した撮像画像を含む前処理の実行要求(処理要求)を送信してよい。実行要求は、例えば、最適化装置4が取得可能な態様で送信されてよい。AI処理は、例えば、物体検出処理等の画像認識処理であってよく、自動運転又は防犯システム等で用いられてよい。
【0044】
なお、ホストPC3及び最適化装置4と、FPGA7のIOポートとの間は、通信路1aによって相互に通信可能に接続されてよい。通信路1aは、前処理の実行要求及び実行結果の伝送,回路領域70への通信路1aの書き込み等の処理に利用されてよい。例えば、ホストPC3は、ネットワーク又は通信路1aを介して、実行要求を最適化装置4に送信してもよい。なお、ホストPC3は、インターフェイス6を介して、FPGA7から前処理の実行結果を受信してもよい。
【0045】
FPGA7は、書き換え可能な回路領域70を備えてよく、回路領域70に設定された論理回路によって所定の処理を実行する。以下、FPGA7を区別する場合にはFPGA#0~#3(図3参照)と表記する。例えば、FPGA#0~#3は、それぞれ、上述した処理A~処理Dを実行してよい。図3には各処理の回路規模を符号71で示す。
【0046】
最適化装置4は、情報処理装置又はコンピュータの一例であり、FPGA7の処理効率を向上させるOptimizerである。最適化装置4は、例えば、ホストPC3とFPGA7との間に、各々と通信可能に設けられてよい。
【0047】
例えば、最適化装置4は、論理プール40を備えてよい。論理プール40は、記憶領域の一例であり、回路デザインの合成が完了済み且つ配置配線が決定済みである回路ロジックのテンプレート5を複数記憶してよい。テンプレート5は、回路ロジックの情報であり、一例として、ビットストリームであってよい。
【0048】
最適化装置4は、1以上のFPGA7の各々が備える書き換え可能な回路領域70に設定された回路によって実行される複数の処理について、処理間の負荷の不均衡を検出した場合、予め設定された条件を満たす第1テンプレートを論理プール40から読み出す。第1テンプレートは、例えば、負荷の高い(一例として、滞留している)処理を実行する回路のテンプレート5であってよい。
【0049】
最適化装置4は、1以上の回路領域70のうちの条件を満たす第1回路領域70に、読み出した第1テンプレート5を書き込むことで、第1テンプレート5の回路ロジックが実現する第1処理を第1回路領域70に設定する。
【0050】
近年のFPGA7は、専用機能の他に、IO,ネットワーク等の様々な機能が統合されている。FPGA7に搭載された機能のうちの専用機能部分のみの書き換えは、書き込む論理回路が準備されていれば、数ミリ秒で書き換えることができ、応用の幅が広い。
【0051】
一実施形態では、この点に着目し、FPGA7に設定可能な回路のテンプレート5を予め用意しておくことで、最適化装置4は、処理間の負荷の不均衡を解消するための回路領域70への論理回路の設定を、リアルタイム又は略リアルタイムに行なうことができる。これにより、FPGA7に実行させる処理を最適化することができ、FPGA7の処理効率を向上させることができる。
【0052】
〔C〕ハードウェア構成例
図4は、一実施形態に係るシステム1のハードウェア構成例を示すブロック図である。図4では、図3に示すシステム1の装置間の接続構成、及び、最適化装置4の構成に着目する。
【0053】
図4に示すように、カメラ2とホストPC3との間,ホストPC3と最適化装置4との間は、それぞれ、例えば、LAN(Local Area Network),インターネット等のネットワークを介して相互に通信可能に接続されてよい。
【0054】
インターフェイス6としては、例えば、PCIe(Peripheral Component Interconnect-express)又はCXL(Compute Express Link)等の規格に準拠したインターコネクトが挙げられる。例えば、インターフェイス6は、PCIe又はCXLに対応したアダプタ(コネクタ)であってよい。また、インターフェイス6は、当該アダプタに加えて、ホストPC3と1以上のFPGA7の各々との間の通信(接続)のスイッチングを行なうPCIeスイッチ又はCXLスイッチを備えてもよい。
【0055】
また、図4に示すように、ホストPC3とFPGA7との間,最適化装置4とFPGA7との間は、それぞれ、FPGA7のIOポートの規格に準拠した高速な通信路1aを介して、相互に通信可能に接続されてよい。
【0056】
一実施形態に係るホストPC3及び最適化装置4の少なくとも一方は、物理サーバであってもよいし、仮想サーバ(VM:Virtual Machine)であってもよい。また、ホストPC3の機能及び最適化装置4の機能の少なくとも一方は、1台のコンピュータにより実現されてもよいし、2台以上のコンピュータにより実現されてもよい。
【0057】
一実施形態に係るホストPC3の機能及び最適化装置4の機能は、いずれも同様のハードウェア(HW)構成を備えるコンピュータにより実現されてよい。以下、ホストPC3及び最適化装置4のHW構成を、代表して最適化装置4を例に挙げて説明する。
【0058】
図4には、最適化装置4の機能を実現するHWリソースとして、1台のコンピュータが用いられる場合を例に挙げるが、複数のコンピュータが用いられる場合は、各コンピュータが図4に例示するHW構成を備えてよい。
【0059】
図4に示すように、最適化装置4は、HW構成として、例示的に、プロセッサ4a,グラフィック処理装置4b,メモリ4c,記憶部4d,IF(Interface)部4e,IO部4f,読取部4gを備えてよい。
【0060】
プロセッサ4aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ4aは、最適化装置4内の各ブロックとバス4jで相互に通信可能に接続されてよい。なお、プロセッサ4aは、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
【0061】
プロセッサ4aとしては、例えば、CPU,MPU,APU,DSP,ASIC,FPGA等の集積回路(IC)が挙げられる。なお、プロセッサ4aとして、これらの集積回路の2以上の組み合わせが用いられてもよい。MPUはMicro Processing Unitの略称である。APUはAccelerated Processing Unitの略称である。DSPはDigital Signal Processorの略称である。
【0062】
グラフィック処理装置4bは、IO部4fのうちのモニタ等の出力装置に対する画面表示制御を行なう。また、グラフィック処理装置4bは、機械学習モデルを利用した機械学習処理及び推論処理を実行するアクセラレータとしての構成を有してもよい。グラフィック処理装置4bとしては、種々の演算処理装置、例えば、GPU(Graphics Processing Unit),APU,DSP,ASIC又はFPGA等の集積回路(IC)が挙げられる。
【0063】
メモリ4cは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。メモリ4cとしては、例えばDRAM(Dynamic Random Access Memory)等の揮発性メモリ,PM(Persistent Memory)等の不揮発性メモリ、の一方又は双方が挙げられる。
【0064】
記憶部4dは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。記憶部4dとしては、HDD(Hard Disk Drive)等の磁気ディスク装置,SSD等の半導体ドライブ装置,不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ,SCM(Storage Class Memory),ROM(Read Only Memory)等が挙げられる。
【0065】
記憶部4dは、最適化装置4の各種機能の全部若しくは一部を実現するプログラム4h(制御プログラム)を格納してよい。
【0066】
例えば、最適化装置4のプロセッサ4aは、記憶部4dに格納されたプログラム4hをメモリ4cに展開して実行することにより、後述する最適化装置4(例えば、図5に示す制御部48)としての機能を実現できる。
【0067】
IF部4eは、ホストPC3と最適化装置4との間,最適化装置4とFPGA7との間等の接続及び通信の制御等を行なう通信IFの一例である。例えば、IF部4eは、イーサネット(登録商標),インフィニバンド,ミリネット,PCIe,CXL,FPGA7のIOポート等の種々の通信規格に準拠したアダプタを含んでよい。当該アダプタは、無線及び有線の一方又は双方の通信方式に対応してよい。また、当該アダプタは、例えば、FC(Fibre Channel)等の光通信に準拠してもよい。
【0068】
なお、プログラム4hは、当該通信IFを介して、図示しないネットワークから最適化装置4にダウンロードされ、記憶部4dに格納されてもよい。
【0069】
IO部4fは、入力装置及び出力装置の一方又は双方を含んでよい。入力装置としては、例えば、キーボード,マウス,タッチパネル等が挙げられる。出力装置としては、例えば、モニタ,プロジェクタ,プリンタ等の表示装置が挙げられる。また、IO部4fは、入力装置及び出力装置が一体となったタッチパネル等を含んでもよい。出力装置は、グラフィック処理装置4bに接続されてもよい。
【0070】
読取部4gは、記録媒体4iに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部4gは、記録媒体4iを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部4gとしては、例えば、USB(Universal Serial Bus)等に準拠したアダプタ,記録ディスクへのアクセスを行なうドライブ装置,SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体4iにはプログラム4hが格納されてもよく、読取部4gが記録媒体4iからプログラム4hを読み出して記憶部4dに格納してもよい。
【0071】
記録媒体4iとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク,CD(Compact Disc),DVD(Digital Versatile Disc),ブルーレイディスク,HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等の半導体メモリが挙げられる。
【0072】
上述した最適化装置4のハードウェア構成は例示である。従って、最適化装置4内でのハードウェアの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。例えば、最適化装置4は、IO部4f及び読取部4g等を省略してもよい。
【0073】
また、ホストPC3は、最適化装置4と同様のHW構成を備えてよい。例えば、ホストPC3のプロセッサ4aは、記憶部4dに格納されたプログラム4hをメモリ4cに展開して実行することにより、ホストPC3としての機能を実現できる。
【0074】
〔D〕ソフトウェア構成例
図5は、一実施形態に係る最適化装置4のソフトウェア構成例を示すブロック図である。図5に示すように、最適化装置4は、例示的に、メモリ部41,通信部42,情報収集部43,判定部44,読出部45,書込部46及び更新部47を備えてよい。通信部42,情報収集部43,判定部44,読出部45,書込部46及び更新部47は、制御部48の一例である。
【0075】
メモリ部41は、記憶領域の一例であり、最適化装置4が利用する種々のデータを記憶する。メモリ部41は、例えば、最適化装置4のメモリ4c及び記憶部4d(図4参照)のうちの一方又は双方が有する記憶領域により実現されてもよい。
【0076】
図5に示すように、メモリ部41は、例示的に、論理プール領域41a,判定条件管理情報41b,FPGA管理情報41c及びテンプレート管理情報41dを記憶可能であってよい。判定条件管理情報41b,FPGA管理情報41c及びテンプレート管理情報41dは、それぞれ、判定条件,FPGA7,テンプレート5を管理する情報の一例である。
【0077】
論理プール領域41aは、論理プール40(図3参照)として確保された記憶領域である。なお、論理プール領域41aのうち、論理プール40として複数のテンプレート5を格納する記憶領域は、記憶部4dの記憶領域により実現されてもよい。また、論理プール領域41aのうち、FPGA7に書き込むために論理プール40から選択された(記憶部4dから読み出された)テンプレート5を格納する記憶領域は、メモリ4cの記憶領域により実現されてもよい。
【0078】
以下、論理プール40に格納されるテンプレート5について説明する。例えば、ホストPC3(AI処理エンジン30)が、自動運転等に用いられるカメラ2からの撮像画像を収集してAI処理を行なう場合を想定する。
【0079】
複数のカメラ2の性能差,昼夜等の撮像環境による撮像画像の差異等を吸収するために、撮像画像には、前処理が実行される。前処理は、間引き,輝度補正,射影変換,歪補正,エッジ抽出等、AI処理の内容によって様々である。
【0080】
これらの処理は、最大解像度に合わせて実行される。このため、解像度ごとに処理パイプラインが形成され、処理パイプラインごとにFPGA7の処理が行なわれる。処理パイプラインに含まれる処理、換言すれば、FPGA7が実行する処理としては、例えば、以下の一連の処理が挙げられる。
処理パイプライン:間引き→輝度補正→歪処理→エッジ抽出
【0081】
1つの処理パイプラインで処理できる入力映像数(チャンネル数)は、解像度が高くなるにつれて少なくなる。前処理に入力される撮像画像の解像度としては、例えば、降順に、8K(7680×4320),4K(3840×2160),WQHD(2560×1440),FHD(1920×1080),WXGA++(1600×900),HD(1280×720)等のバリエーションがある。各解像度の括弧内の数字は、横×縦のピクセル数を示す。
【0082】
このように、解像度が高いほど処理パイプライン数が増加するため、FPGA7の回路領域70に書き込まれる論理回路の回路規模は、解像度が高いほど大きくなる。以下の説明では、図4に示すFPGA#0~#2のそれぞれにより実行される処理パイプライン(処理A~処理C)のうち、処理Aは4K用,処理BはWQHD用,処理CはFHD用であるものとする。
【0083】
論理プール40は、これらの処理A~処理Cを含む複数の処理の各々について、合成(図2の工程P2)及び配置配線(図2の工程P42)が完了して生成されたビットストリーム(図2の工程P43)を、予め格納してよい。図3には、処理A~処理Gの各々を実行する論理回路のテンプレート5が論理プール40に格納されている。
【0084】
通信部42は、IF部4e(図4参照)を用いて、ホストPC3及びFPGA7の各々との間で種々の通信を行なう。
【0085】
情報収集部43は、通信部42を介して、ホストPC3及びFPGA7の各々から情報を収集する。
【0086】
例えば、情報収集部43は、システム監視ツールを利用して、通信路1aを介してFPGA7の稼働状況を監視してよい。一例として、情報収集部43は、システム監視ツールにより各FPGA7のネットワーク転送量を取得してよい。システム監視ツールによる各FPGA7のネットワーク転送量の取得は、例えば、情報収集部43(及び後述する判定部44)が各FPGA7に送信する情報(データ)量を計測することにより行なわれてもよい。そして、情報収集部43は、取得したネットワーク転送量と、各FPGA7が最大の入力映像数(チャンネル数)で動作するときの最大ネットワーク転送量とを比較することで、各FPGA7の処理量を算出してよい。
【0087】
情報収集部43により算出される処理量は、負荷の一例であり、稼働状況の監視結果の一例である。例えば、処理量は、最大ネットワーク転送量に対する現在のネットワーク転送量の割合であってよい。最大ネットワーク転送量は、例えば、事前に計測されてよい。なお、各FPGA7のネットワーク転送量は、例えば、システム監視ツールにより、所定時間(例えば5秒)ごとに取得されてよい。
【0088】
なお、ここまで、各FPGA7には、単一の種類の処理(処理A~処理Cのいずれか:図3参照)を実行する論理回路が設定されている場合を前提として、FPGA7の処理量を算出する例を説明した。
【0089】
一実施形態に係る手法によれば、各FPGA7には、2種類以上の処理を実行する論理回路が設定され得る。このような場合、情報収集部43は、FPGA7で動作する処理(テンプレート5)の種類ごとのネットワーク転送量を取得してもよい。処理の種類ごとのネットワーク転送量とは、例えば、当該処理を実行する論理回路のネットワーク転送量であってよい。
【0090】
例えば、情報収集部43は、各処理が最大の入力映像数(チャンネル数)で動作するときの最大ネットワーク転送量に対する、取得した処理の種類ごとのネットワーク転送量の割合を、各処理の処理量として算出してよい。このように、情報収集部43は、処理量の算出にネットワーク転送量を用いることで、論理回路の実際の稼働状況に基づく正確な負荷を推定することができる。
【0091】
また、例えば、情報収集部43は、ホストPC3から前処理の実行要求を取得(受信)してよい。一例として、情報収集部43は、ホストPC3から通信路1aを介して送信された実行要求をIF部4e(通信IF)により取得してもよい。なお、ホストPC3は、実行要求の送信態様を変更できる場合、LAN等のネットワーク経由で最適化装置4に実行要求を送信してもよい。この場合、情報収集部43は、当該ネットワーク経由でIF部4e(通信IF)により実行要求を取得してもよい。
【0092】
なお、情報収集部43は、FPGA7の処理量の算出に、ホストPC3から受信する実行要求の数を用いてもよい。一例として、情報収集部43は、所定期間内にFPGA7が処理可能な実行要求の最大数に対する、所定期間にホストPC3から当該FPGA7に発行された実行要求の数の割合を、FPGA7の処理量として算出してもよい。
【0093】
判定部44は、FPGA7の稼働状況の監視結果に基づき、FPGA群における複数の処理間の不均衡の発生を判定し、複数の処理間の不均衡を検出した場合、所定の条件に合致するテンプレート5を、所定の条件に合致する回路領域70に設定すると判定する。
【0094】
所定の条件とは、複数のポリシーのうちの、稼働状況の監視結果が示す状態が合致するポリシーに従った条件である。
【0095】
図6は、判定条件管理情報41bの一例を示す図である。図6に示すように、判定条件管理情報41bは、「条件名」,「判定条件(ポリシー)」,「詳細」の項目を含んでよい。
【0096】
「条件名」は、判定条件のエントリの識別情報の一例である。「判定条件(ポリシー)」は、処理の不均衡を解消するための種々のアプローチであり、例えば、「効率化」や「省電力」等の手法(観点)である。「詳細」は、判定条件のアプローチを達成するための具体的な条件であり、例えば、不均衡の状態(検出条件),書込対象のテンプレート5の情報(読み出す処理の条件),テンプレート5の書込先のFPGA7の情報(書き込み先の条件)のうちの少なくとも1種類を定義してよい。
【0097】
判定部44は、監視結果と判定条件管理情報41bとを比較し、監視結果が検出条件と一致する場合に、当該エントリの読み出す処理の条件と一致するテンプレート5を、書き込み先の条件と一致するFPGA7に書き込むと判定してよい。そして、判定部44は、判定結果を読出部45及び書込部46に通知する。
【0098】
図7は、判定部44による判定処理の一例を説明するための図である。図7の符号A1に示すように、FPGA#0~#2のうちの、処理Aを実行するFPGA#0の処理量が50%以下、且つ、FPGA#1及び#2の処理量が増加傾向にある場合を想定する。FPGA#1又は#2が実行する処理B又は処理Cは、第1処理の一例であり、FPGA#0が実行する処理Aは、第2処理の一例である。
【0099】
なお、上記判定条件において、50%は、第1閾値の一例である。増加傾向とは、例えば、情報収集部43が今回算出した処理量が、過去m回(mは1以上の整数)に算出した処理量(例えば平均又は加重平均)から第2閾値以上増加していることを意味してよい。第2閾値は、数%~数十%等の割合であってもよいし、所定の値であってもよい。
【0100】
この場合、判定部44は、判定条件管理情報41bのエントリ(条件名)R1又はR2に従い、FPGA#1の処理B又はFPGA#2の処理Cを、FPGA#0の回路領域70の第2論理パーティションに書き込むと判定する。FPGA#0の回路領域70(第2論理パーティション)は、第1回路領域の一例である。このような判定により、処理量が増加傾向にある(処理が滞っている)処理B又は処理Cのテンプレート5を、処理リソースに空きのあるFPGA#0の回路領域70に設定することができる(図7の符号A2から符号A3への変化参照)。
【0101】
なお、監視結果が検出条件と一致するエントリが判定条件管理情報41bに複数存在する場合、判定部44は、ポリシーの優先度に従い、優先度が最も高いポリシーを選択してもよい。ポリシーの優先度(降順)としては、例えば、エントリ(条件名)の降順,検出条件の厳しさ(条件数が多い,処理量の割合が低い等)の降順,或いは管理者による事前の指定等が挙げられる。
【0102】
判定部44としては、例えば、最適化ソルバー等のアプリケーションの機能によって実現されてもよいし、Deep Learning等の手法により訓練された機械学習モデルによって実現されてよい。機械学習モデルは、例えば、監視結果を入力された場合に、検出条件に応じて、読み出す処理の条件及び書き込み先の条件を出力するように訓練されてよい。
【0103】
なお、判定部44は、システム1(又はFPGA7)の起動時に、FPGA7の各々に初回に書き込むテンプレート5を特定し、読出部45及び書込部46に通知してもよい。初回に書き込むテンプレート5は、システム1の管理者又はユーザから指定されてもよいし、初回に書き込むテンプレート5を選択するための判定条件が判定条件管理情報41bに設定されていてもよい。
【0104】
また、判定部44は、FPGA管理情報41c及びテンプレート管理情報41dを参照して、ホストPC3から送信された実行要求の転送先のFPGA7を、当該実行要求を処理する適切なFPGA7に振り分ける。
【0105】
図8は、FPGA管理情報41cの一例を示す図である。図8に示すように、FPGA管理情報41cは、「FPGA番号」,「論理パーティション数」,「論理パーティションサイズ」,「動作しているテンプレート番号」の項目を含んでよい。
【0106】
「FPGA番号」は、FPGA7の識別情報の一例である。「論理パーティション数」は、FPGA7の回路領域70に設定される論理パーティションの数である。論理パーティションは、FPGA7の起動時等のタイミングで回路領域70を論理的に区分けすることで得られてもよいし、回路領域70に設定される処理(書き込まれるテンプレート5)の数及びサイズに合わせて動的に設定されてもよい。
【0107】
「論理パーティションサイズ」は、論理パーティション部分の領域サイズである。領域サイズの単位は任意である。例えば、論理パーティションサイズとしては、回路領域70の領域サイズに対する論理パーティション部分の領域サイズの割合に関する指標,論理パーティション部分の実際の面積(例えば論理パーティションに含まれるLB(Logical Block)の数)に関する指標等が用いられてもよい。図8の例では、1つのFPGA7あたりの論理パーティションサイズの最大値(すなわち回路領域70の領域サイズ)が200であるものとする。
【0108】
「動作しているテンプレート番号」は、回路領域70の論理パーティションに設定されているテンプレート5の識別情報の一例であり、FPGA7で動作する処理に対応するテンプレート5を示す。
【0109】
図9は、テンプレート管理情報41dの一例を示す図である。図9に示すように、テンプレート管理情報41dは、「テンプレート番号」,「論理パーティションサイズ」,「論理パーティションサイズ」,「動作しているテンプレート番号」の項目を含んでよい。
【0110】
「テンプレート番号」は、テンプレート5の識別情報の一例である。「論理パーティションサイズ」は、テンプレート5により実現される論理回路が回路領域70(論理パーティション)上で占める領域サイズであり、回路規模71の一例である。当該領域サイズの単位は、FPGA管理情報41cの論理パーティションサイズと同一であってよい。
【0111】
「処理内容」は、テンプレート5の回路ロジックが論理回路として実現する処理の内容である。例えば、図9に示すテンプレート#0は、4K処理を実現する論理回路(サイズ:100)のテンプレート5である。
【0112】
例えば、判定部44は、ホストPC3から送信された実行要求で要求される処理を実現するテンプレート5をテンプレート管理情報41dから特定し、特定したテンプレート5が動作するFPGA7をFPGA管理情報41cから特定してよい。そして、判定部44は、ホストPC3から送信された実行要求を、特定したFPGA7に通信路1aを介して発行(送信)してよい。これにより、テンプレート5(論理回路)の種類ごとに負荷を分散させることができ、分散処理システムとしてのシステム1の処理効率を向上させることができる。
【0113】
同じテンプレート5が、1つのFPGA7内又は複数のFPGA7間で複数の論理パーティションに設定される場合、これらの複数の論理パーティションのそれぞれにおいて、当該テンプレート5の処理が実行可能である。判定部44は、取得した実行要求の発行先の候補として複数のFPGA7(論理パーティション)を特定した場合、実行要求の発行先を、FPGA7(論理パーティション)の処理の負荷に応じて決定してもよい。
【0114】
例えば、判定部44は、最適化装置4のメモリ4cの記憶領域の一部を、実行要求を格納するキュー(バッファ)として管理してもよい。キューは、全ての実行要求で共通に用いられてもよいし、テンプレート5ごと又はFPGA7ごとに設けられてもよい。例えば、判定部44は、キューに格納された実行要求をFIFO(First-In First-Out)等のロジックにより読み出し、発行先の候補となるFPGA7(論理パーティション)のうちから選択したFPGA7(論理パーティション)に、実行要求を発行してよい。FPGA7による処理の実行結果は、インターフェイス6を介してホストPC3に送信される。
【0115】
さらに、判定部44は、後述する書込部46による回路領域70へのテンプレート5の書き込み後、並びに、後述する更新部47による論理プール40内のテンプレート5の更新後に、メモリ部41に格納された情報を41b~41dを更新してよい。
【0116】
例えば、判定部44は、回路領域70へのテンプレート5の書き込み後、FPGA管理情報41cの当該FPGA7のエントリの「動作しているテンプレート番号」を更新してよい。なお、テンプレート5に応じて論理パーティションが変化する場合、判定部44は、当該エントリの「論理パーティション数」及び「論理パーティションサイズ」を更新してよい。
【0117】
また、例えば、判定部44は、論理プール40内にテンプレート5が追加されると、テンプレート管理情報41dに追加されたテンプレート5のエントリを追加してよい。さらに、判定部44は、論理プール40からテンプレート5が変更又は削除されると、テンプレート管理情報41dの該当エントリを更新又は削除してよい。
【0118】
さらに、例えば、テンプレート5の追加,変更又は削除により、判定条件管理情報41bの「詳細」が変化する場合、判定部44は、当該変化に適合するように、判定条件管理情報41bの各エントリを更新してよい。判定条件管理情報41bの更新は、例えば、後述する判定条件更新要求に基づき行なわれてもよい。
【0119】
読出部45は、判定部44により特定されたテンプレート5を論理プール40から読み出す。例えば、読出部45は、記憶部4dの一部の記憶領域により実現される論理プール40から判定部44により特定されたテンプレート5を読み出し、メモリ4cに書き込む。
【0120】
書込部46は、読出部45がメモリ4cに書き込んだテンプレート5を、判定部44により特定されたFPGA7の回路領域70に通信路1aを介して書き込む。書込部46による回路領域70へのテンプレート5の書き込みの手法としては、例えば、回路領域70へのビットストリームのダウンロード(図2の工程P8)と同様の手法が採用されてよい。書込部46は、テンプレート5の書き込みが完了すると、判定部44に完了を通知する。
【0121】
更新部47は、テンプレート更新要求に基づき、論理プール40に格納されたテンプレート5を更新する。テンプレート更新要求は、テンプレート5の登録要求の一例であり、テンプレート5を新たに追加する格納要求,既存のテンプレート5を変更する変更要求,既存のテンプレート5を削除する削除要求等が含まれてよい。
【0122】
例えば、更新部47は、新たなテンプレート5の情報を含む格納要求を受信すると、論理プール40に当該テンプレート5を格納してよい。また、例えば、更新部47は、変更後のテンプレート5の情報と、変更元のテンプレート5を特定する情報とを含む変更要求を受信すると、論理プール40の変更元のテンプレート5を変更後のテンプレート5に更新してよい。さらに、例えば、更新部47は、論理プール40に格納されているテンプレート5を特定する情報を含む削除要求を受信すると、論理プール40から当該テンプレート5を削除してよい。更新部47は、テンプレート更新要求に応じた処理が完了すると、判定部44に完了を通知する。
【0123】
例えば、更新部47は、LAN等のネットワークを介して、ホストPC3又は図示しないコンピュータからテンプレート更新要求を受信してもよい。或いは、更新部47は、システム1の管理者又はユーザによりIO部4f又は読取部4gを介して入力されたテンプレート更新要求を取得してもよい。
【0124】
また、テンプレート更新要求には、テンプレート5の更新に伴い変化する判定条件を更新するための判定条件更新要求が含まれてもよい。判定条件更新要求は、条件の登録要求の一例である。判定条件更新要求には、判定条件管理情報41bに含まれる既存の条件の変更又は削除に関する情報、或いは、判定条件管理情報41bに新たに追加する条件に関する情報が含まれてよい。判定条件更新要求は、テンプレート更新要求とは独立して、ホストPC3又は図示しないコンピュータから送信されてもよいし、IO部4f又は読取部4gを介して入力されてもよい。
【0125】
このように、更新部47により、テンプレート5又は判定条件を適宜更新することができるため、例えば、カメラ2の変更等の、システム1の環境の変更に対して、FPGA7が実行する処理を柔軟に変更する(対応させる)ことができる。これにより、FPGA7の稼働効率を向上させることができるため、システム1のユーザに対して、低価格又は高性能なサービスを提供することが可能となる。
【0126】
〔E〕動作例
次に、一実施形態に係るシステム1の動作例を説明する。図10は、一実施形態に係るシステム1の動作例を説明するシーケンス図である。
【0127】
図10に例示するように、最適化装置4の情報収集部43及び判定部44は、各FPGA7のネットワーク転送量に基づくFPGA7の処理量が判定条件管理情報41bの検出条件に合致するか否かを判定する(処理S1b)。なお、情報収集部43は、ホストPC3から受信する実行要求の数(例えばFPGA7別の実行要求の数)に基づき、処理量を算出してもよい(処理S1a)。処理S1a及び/又は処理S1bは、定期的に、一例として5秒ごとに実行されてよい。
【0128】
情報収集部43及び判定部44は、ホストPC3から前処理の実行要求を受信すると(処理S2,S5,S8)、テンプレート管理情報41dに基づき、各実行要求が示す処理A~処理Cに対応するテンプレート#0~#2を特定する。情報収集部43及び判定部44は、FPGA管理情報41cに基づき、特定したテンプレート#0~#2が設定されたFPGA#0~#2を特定し、通信路1aを介して、特定したFPGA#0~#2にそれぞれの実行要求を送信する(処理S3,S6,S9)。
【0129】
FPGA#0~#2は、実行要求に応じた処理A~処理Cの実行結果を、インターフェイス6又は通信路1aを介してホストPC3に送信(応答)する(処理S4,S7,S10)。これにより、ホストPC3から前処理の実行要求が発行された場合の処理が終了する。
【0130】
次に、処理S11a及び/又はS11bで示すように、情報収集部43及び判定部44による判定において、FPGA7の処理量が判定条件管理情報41bの条件R1に合致した場合を想定する。この場合、判定部44は、読出部45及び書込部46に条件R1を通知する。
【0131】
読出部45は、条件R1に従い、論理プール40(例えば記憶部4d)からテンプレート#1を読み出し(処理S12)、読み出したテンプレート#1をメモリ4cに格納する(処理S13)。
【0132】
書込部46は、条件R1に従い、通信路1a経由で、メモリ4cに格納されたテンプレート#1をFPGA#0の回路領域70における第2論理パーティションに書き込み(処理S14)、書き込みの完了を判定部44に通知する。なお、FPGA#0の回路領域70の第1論理パーティションでは、第2論理パーティションにおけるテンプレート#1の書き込みの影響を受けずに、テンプレート#0(4K処理)が継続して動作する。
【0133】
判定部44は、書込部46によるFPGA#0へのテンプレート#1の書き込み結果結果に基づき、FPGA管理情報41cを更新する(処理S15)。
【0134】
図11は、FPGA管理情報41cの更新例を示す図である。図11に例示するように、判定部44は、FPGA#0の第2論理パーティションの論理パーティションサイズを100から70に更新し、動作しているテンプレート番号をテンプレート#0からテンプレート#1に更新する。
【0135】
以上により、FPGA7へのテンプレート5の書込処理(判定条件が満たされた場合の処理)が終了する。
【0136】
次に、ユーザによりIO部4f又は読取部4gを介して最適化装置4にテンプレート更新要求が入力された場合を想定する。
【0137】
更新部47は、テンプレート更新要求を受信すると(処理S16)、論理プール40に対して、受信したテンプレート更新要求に応じたテンプレート5の追加,変更又は削除を行ない(処理S17)、テンプレート5の更新の完了を判定部44に通知する。
【0138】
判定部44は、更新部47による論理プール40に対するテンプレート5の更新結果に基づき、判定条件管理情報41bを更新する(処理S18)。
【0139】
図12は、テンプレート管理情報41dの更新例を示す図である。例えば、テンプレート更新要求により新たなテンプレート#xが論理プール40に格納された場合を想定する。テンプレート#xは、解像度がHDである撮像画像に対する前処理(HD処理)を実行する論理回路のテンプレート5であり、論理パーティションサイズは25である。判定部44は、これらの情報に基づき、テンプレート#xのエントリをテンプレート管理情報41dに登録する。
【0140】
以上により、テンプレート5の更新処理が終了する。なお、テンプレート更新要求とともに、判定条件更新要求が最適化装置4に入力された場合、判定部44は、処理S18において、さらにテンプレート管理情報41dを更新する。
【0141】
図13は、判定条件管理情報41bの更新例を示す図である。例えば、テンプレート更新要求とともに、FPGA#0の処理量が75%以下である場合に、テンプレート#xの処理をFPGA#0の第3論理パーティションに書き込むという条件Ryを含む判定条件更新要求が最適化装置4に入力された場合を想定する。判定部44は、これらの情報に基づき、条件名Ryのエントリを判定条件管理情報41bに登録する。
【0142】
〔F〕その他
上述した実施形態に係る技術は、以下のように変形、変更して実施することができる。
【0143】
例えば、図5に示す最適化装置4が備える機能ブロック42~47は、任意の組み合わせで併合してもよく、それぞれ分割してもよい。図5に示すメモリ部41が格納する情報41b~41dは、任意の組み合わせで併合してもよく、それぞれ分割してもよい。
【0144】
また、一実施形態では、ホストPC3と最適化装置4とが別のコンピュータであるものとして説明したが、これに限定されるものではない。例えば、ホストPC3と最適化装置4とは、1つのコンピュータであってもよいし、最適化装置4が備える少なくとも一部の機能又は情報が、ホストPC3に備えられてもよい。
【0145】
さらに、論理プール40は、最適化装置4に備えられるものとしたが、これに限定されるものではなく、最適化装置4とは異なるコンピュータ又はストレージ装置に備えられてもよい。この場合、読出部45は、IF部4eを介して論理プール40からテンプレート5を読み出してよく、更新部47は、IF部4eを介して論理プール40のテンプレート5を更新してよい。
【0146】
また、一実施形態では、プログラマブルロジック回路として、FPGA7を例に挙げたが、これに限定されるものではなく、CPLD(Complex PLD)が用いられる場合も、一実施形態に係る手法を適用可能である。なお、CPLDのテンプレート5は、FPGA7のテンプレート5と同様に、回路ロジックの配置配線(フィットと称されてもよい)が完了したビットストリームデータであってよい。
【0147】
さらに、一実施形態では、1つのFPGA7に2種類の解像度の処理のテンプレート5を設定する例(図7図11参照)を説明したが、これに限定されるものではない。例えば、処理ごとに、より細分化したテンプレート5を用意して回路領域70に配置することで、回路領域70の未使用領域を削減でき、回路領域70を効率的に使用できる。
【0148】
また、一実施形態では、判定条件管理情報41bに含まれる判定条件として、FPGA7を特定した具体的な判定条件が用いられるものとしたが、これに限定されるものではない。例えば、判定条件としては、「処理量が所定値以下のFPGA7に、処理量が最大のFPGA7が実行する処理を書き込む」等の条件が用いられてもよい。
【0149】
さらに、一実施形態では、判定条件として、FPGA7単位の処理量を用いる例を挙げたが、これに限定されるものではない。例えば、判定条件としては、FPGA7で動作するテンプレート5の種類ごとの処理量が用いられてもよい。一例として、FPGA7で複数種類のテンプレート5が動作している場合において、第1の種類のテンプレート5の数をNとし、第1の種類のテンプレート5が実行する処理の処理量(%)をZとした場合、判定条件管理情報41bは、以下のような判定条件を含んでもよい。
【0150】
Z ≦ 100*(N-1)/Nの場合(検出条件)、第1の種類のテンプレート5のZ*N/100個の論理パーティションに(書き込み先の条件)、処理量が増加傾向にある種類のテンプレート5(読み出す処理の条件)を書き込む。
【0151】
このような判定条件により、テンプレート5の種類ごとに、処理負荷の不均衡を解消することができ、FPGA7の処理効率を向上させることができる。
【0152】
なお、上記の例では、判定条件として、1つのFPGA7内における同種のテンプレート5の処理量を用いたが、これに限定されるものではなく、システム1に備えられるFPGA群全体の中で、テンプレート5の種類ごとの処理量が用いられてもよい。
【0153】
また、一実施形態では、FPGA7の回路領域70に処理A(4K処理)を実行する論理回路を最大で2つ書き込み可能な例を説明した。FPGA7の更なる高集積化に伴い回路領域70の領域サイズが増大すると、回路領域70には多数の論理回路が設定されることになる。この場合において、一実施形態に係る手法によって回路領域70に対するテンプレート5の書き込みが繰り返されると、回路領域70に大小様々な論理回路が、テンプレート5単位で離散的に配置されることがある。この結果、回路領域70に十分な未使用領域(空き領域)があるにもかかわらず、論理回路を設定するためのまとまった領域が不足する虞がある。
【0154】
そこで、判定部44は、例えば、処理量が減少したFPGA7の論理パーティションに、当該FPGA7又は他のFPGA7に設定されたテンプレート5を配置し直す処理を繰り返すことで、テンプレート5単位の離散的な配置を解消してもよい。
【0155】
或いは、複数のシステム1(或いはFPGA群)が存在する場合には、一方のシステム1(或いはFPGA群)におけるテンプレート5単位の離散的な配置を解消するために、他方のシステム1(或いはFPGA群)の未使用の回路領域70が利用されてもよい。
【0156】
〔G〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【0157】
(付記1)
1以上のプログラマブルロジック回路の各々が備える書き換え可能な回路領域に設定された回路によって実行される複数の処理について、処理間の負荷の不均衡を検出した場合、回路デザインの合成が完了済み且つ配置配線が決定済みである回路ロジックのテンプレートを複数記憶する記憶領域から、予め設定された条件を満たす第1テンプレートを読み出し、
1以上の前記回路領域のうちの前記条件を満たす第1回路領域に、読み出した前記第1テンプレートを書き込むことで、前記第1テンプレートの回路ロジックが実現する第1処理を前記第1回路領域に設定する、
制御部を備える、制御装置。
【0158】
(付記2)
前記条件は、負荷が増加傾向にある第1処理を、負荷が第1閾値以下である第2処理を実行する前記第1回路領域に書き込むことを示す条件である、
付記1に記載の制御装置。
【0159】
(付記3)
前記制御部は、前記複数の処理を実行する複数の論理回路の各々のネットワーク転送量に基づき、前記複数の処理の各々の負荷を算出する、
付記1又は付記2に記載の制御装置。
【0160】
(付記4)
前記制御部は、新たなテンプレートの登録要求の受信に応じて、前記新たなテンプレートを前記記憶領域に登録する、
付記1~付記3のいずれか1項に記載の制御装置。
【0161】
(付記5)
前記制御部は、
情報処理装置から発行された、前記1以上のプログラマブルロジック回路に対する処理要求を取得し、
前記複数のテンプレートの回路ロジックが実現する処理と、前記1以上のプログラマブルロジック回路の各々で動作する処理に対応するテンプレートとを管理する情報に基づき、前記処理要求で要求される処理を実現するテンプレートが動作するプログラマブルロジック回路に、前記処理要求を送信する、
付記1~付記4のいずれか1項に記載の制御装置。
【0162】
(付記6)
前記条件は、前記不均衡の検出条件と、書込対象のテンプレートと、前記書込対象のテンプレートの書込先の回路領域と、の少なくとも1つを定義し、
前記制御部は、
複数の前記条件を管理する情報から、前記複数の処理の各々の負荷が前記検出条件に合致する前記条件を特定し、
特定した前記条件を満たす前記第1テンプレート及び前記第1回路領域を特定する、
付記1~付記5のいずれか1項に記載の制御装置。
【0163】
(付記7)
1以上のプログラマブルロジック回路の各々が備える書き換え可能な回路領域に設定された回路によって実行される複数の処理について、処理間の負荷の不均衡を検出した場合、回路デザインの合成が完了済み且つ配置配線が決定済みである回路ロジックのテンプレートを複数記憶する記憶領域から、予め設定された条件を満たす第1テンプレートを読み出し、
1以上の前記回路領域のうちの前記条件を満たす第1回路領域に、読み出した前記第1テンプレートを書き込むことで、前記第1テンプレートの回路ロジックが実現する第1処理を前記第1回路領域に設定する、
処理をコンピュータが実行する、制御方法。
【0164】
(付記8)
前記条件は、負荷が増加傾向にある第1処理を、負荷が第1閾値以下である第2処理を実行する前記第1回路領域に書き込むことを示す条件である、
付記7に記載の制御方法。
【0165】
(付記9)
前記コンピュータが、
前記複数の処理を実行する複数の論理回路の各々のネットワーク転送量に基づき、前記複数の処理の各々の負荷を算出する、
処理を実行する、付記7又は付記8に記載の制御方法。
【0166】
(付記10)
前記コンピュータが、
新たなテンプレートの登録要求の受信に応じて、前記新たなテンプレートを前記記憶領域に登録する、
処理を実行する、付記7~付記9のいずれか1項に記載の制御方法。
【0167】
(付記11)
前記コンピュータが、
情報処理装置から発行された、前記1以上のプログラマブルロジック回路に対する処理要求を取得し、
前記複数のテンプレートの回路ロジックが実現する処理と、前記1以上のプログラマブルロジック回路の各々で動作する処理に対応するテンプレートとを管理する情報に基づき、前記処理要求で要求される処理を実現するテンプレートが動作するプログラマブルロジック回路に、前記処理要求を送信する、
処理を実行する、付記7~付記10のいずれか1項に記載の制御方法。
【0168】
(付記12)
前記条件は、前記不均衡の検出条件と、書込対象のテンプレートと、前記書込対象のテンプレートの書込先の回路領域と、の少なくとも1つを定義し、
前記コンピュータが、
複数の前記条件を管理する情報から、前記複数の処理の各々の負荷が前記検出条件に合致する前記条件を特定し、
特定した前記条件を満たす前記第1テンプレート及び前記第1回路領域を特定する、
処理を実行する、付記7~付記11のいずれか1項に記載の制御方法。
【0169】
(付記13)
1以上のプログラマブルロジック回路と、
制御装置と、を備え、
前記制御装置は、
前記1以上のプログラマブルロジック回路の各々が備える書き換え可能な回路領域に設定された回路によって実行される複数の処理について、処理間の負荷の不均衡を検出した場合、回路デザインの合成が完了済み且つ配置配線が決定済みである回路ロジックのテンプレートを複数記憶する記憶領域から、予め設定された条件を満たす第1テンプレートを読み出し、
1以上の前記回路領域のうちの前記条件を満たす第1回路領域に、読み出した前記第1テンプレートを書き込むことで、前記第1テンプレートの回路ロジックが実現する第1処理を前記第1回路領域に設定する、制御部を備える、
分散処理システム。
【0170】
(付記14)
前記条件は、負荷が増加傾向にある第1処理を、負荷が第1閾値以下である第2処理を実行する前記第1回路領域に書き込むことを示す条件である、
付記13に記載の分散処理システム。
【0171】
(付記15)
前記制御部は、前記複数の処理を実行する複数の論理回路の各々のネットワーク転送量に基づき、前記複数の処理の各々の負荷を算出する、
付記13又は付記14に記載の分散処理システム。
【0172】
(付記16)
前記制御部は、新たなテンプレートの登録要求の受信に応じて、前記新たなテンプレートを前記記憶領域に登録する、
付記13~付記15のいずれか1項に記載の分散処理システム。
【0173】
(付記17)
前記制御部は、
情報処理装置から発行された、前記1以上のプログラマブルロジック回路に対する処理要求を取得し、
前記複数のテンプレートの回路ロジックが実現する処理と、前記1以上のプログラマブルロジック回路の各々で動作する処理に対応するテンプレートとを管理する情報に基づき、前記処理要求で要求される処理を実現するテンプレートが動作するプログラマブルロジック回路に、前記処理要求を送信する、
付記13~付記16のいずれか1項に記載の分散処理システム。
【0174】
(付記18)
前記条件は、前記不均衡の検出条件と、書込対象のテンプレートと、前記書込対象のテンプレートの書込先の回路領域と、の少なくとも1つを定義し、
前記制御部は、
複数の前記条件を管理する情報から、前記複数の処理の各々の負荷が前記検出条件に合致する前記条件を特定し、
特定した前記条件を満たす前記第1テンプレート及び前記第1回路領域を特定する、
付記13~付記17のいずれか1項に記載の分散処理システム。
【符号の説明】
【0175】
1 システム
1a 通信路
2 カメラ
3 ホストPC
30 AI処理エンジン
4 最適化装置
40 論理プール
41 メモリ部
41a 論理プール領域
41b 判定条件管理情報
41c FPGA管理情報
41d テンプレート管理情報
42 通信部
43 情報収集部
44 判定部
45 読出部
46 書込部
47 更新部
48 制御部
5 テンプレート
6 インターフェイス
7 FPGA
70 回路領域
71 回路規模
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13