JP2023009354A - 演算処理装置および演算処理方法 - Google Patents

演算処理装置および演算処理方法 Download PDF

Info

Publication number
JP2023009354A
JP2023009354A JP2021112534A JP2021112534A JP2023009354A JP 2023009354 A JP2023009354 A JP 2023009354A JP 2021112534 A JP2021112534 A JP 2021112534A JP 2021112534 A JP2021112534 A JP 2021112534A JP 2023009354 A JP2023009354 A JP 2023009354A
Authority
JP
Japan
Prior art keywords
processing
unit
priority
stage
pipeline
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
Application number
JP2021112534A
Other languages
English (en)
Inventor
明彦 笠置
Akihiko Kasaoki
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2021112534A priority Critical patent/JP2023009354A/ja
Priority to US17/729,025 priority patent/US11782708B2/en
Publication of JP2023009354A publication Critical patent/JP2023009354A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Image Processing (AREA)

Abstract

【課題】複数のパイプラインステージに分割される複数のデータ処理を実行する演算処理装置のスループットを向上する。【解決手段】演算処理装置は、各々が複数のパイプラインステージに分割される複数のデータ処理を、タイミングをずらして処理部に並列に実行させるパイプライン制御部と、前記複数のパイプラインステージの各々の処理時間を計測する計測部と、前記複数のパイプラインステージの優先度を、計測した処理時間が長い順に高く設定する優先度設定部と、を有する。【選択図】図1

Description

本発明は、演算処理装置および演算処理方法に関する。
複数のステージに分割されるデータ処理を、タイミングをずらして並列に実行させることで、スループットを向上させるパイプライン並列システムが知られている。この種のパイプライン並列システムでは、実行可能なプロセッサ数の入力に基づいて、各ステージでの負荷が計算され、各ステージに割り当てるプロセッサ数が自動的に変更される(例えば、特許文献1参照)。
各ステージが共通バスを介して処理データをメモリに読み書きする場合、ステージ間のデータ転送の停止状況に応じてボトルネックとなっているステージが特定され、特定されたステージによるメモリアクセスの優先度が高く設定される(例えば、特許文献2参照)。処理要求に応じて処理を実行するデータ処理装置において、複数の処理要求に対する処理を実行するリソースが競合する場合、処理を順番に実行させることで、リソースの競合が回避される(例えば、特許文献3参照)。
特開2011-118589号公報 特開2016-91307号公報 特開2020-101921号公報
パイプライン並列システムにおいて、他のステージより処理時間が長いステージがある場合、処理時間の長いステージにデータを供給するバッファに処理待ちのデータが溜まっていき、パイプライン並列システムのスループットは低下する。
1つの側面では、本発明は、複数のパイプラインステージに分割される複数のデータ処理を順次実行する演算処理装置のスループットを向上することを目的とする。
一つの観点によれば、演算処理装置は、各々が複数のパイプラインステージに分割される複数のデータ処理を、タイミングをずらして処理部に並列に実行させるパイプライン制御部と、前記複数のパイプラインステージの各々の処理時間を計測する計測部と、前記複数のパイプラインステージの優先度を、計測した処理時間が長い順に高く設定する優先度設定部と、を有する。
複数のパイプラインステージに分割される複数のデータ処理を実行する演算処理装置のスループットを向上することができる。
一実施形態における演算処理装置の一例を示すブロック図である。 別の実施形態における演算処理装置を含む情報処理装置の一例を示すブロック図である。 図2の情報処理装置により実現されるパイプラインシステムの機能構成の一例を示すブロック図である。 図2の情報処理装置により実行される学習済みのニューラルネットワークを使用した画像認識処理の一例を示す説明図である。 演算ステージ毎の優先度にしたがって図2のアクセラレータに処理命令が投入される例を示す説明図である。 図4の処理優先度制御部の分配指示部がAPIのフックによりキューの優先度を付け替える一例を示す説明図である。 図4の処理優先度制御部の動作の一例を示すフロー図である。 図2の情報処理装置により実行されるパイプライン並列処理の一例を示す動作シーケンス図である。 図4の処理優先度制御部による優先度制御の前後での処理時間の変化の一例を示す説明図である。
以下、図面を参照して、実施形態が説明される。
図1は、一実施形態における演算処理装置の一例を示す。図1に示す演算処理装置1は、パイプライン制御部2、計測部3、優先度設定部4および処理部5を有する。例えば、演算処理装置1は、CPU(Central Processing Unit)等のプロセッサである。パイプライン制御部2、計測部3および優先度設定部4は、演算処理装置1が実行する制御プログラムにより実現されてもよく、ハードウェアにより実現されてもよい。さらに、パイプライン制御部2、計測部3および優先度設定部4は、ソフトウェアとハードウェアとを協働させることにより実現されてもよい。
例えば、処理部5は、演算処理装置1に搭載される複数の演算コアにより実現されてもよい。処理部5は、複数のデータ処理の各々を、タイミングをずらして並列に実行するパイプライン並列処理を実行する。複数のデータ処理の処理内容は、入力データがそれぞれ異なり、出力データがそれぞれ異なることを除き、互いに同じである。
なお、演算処理装置1は、CPU等のプロセッサとGPU(Graphics Processing Unit)等のアクセラレータとを含むサーバにより実現されてもよい。この場合、演算処理装置1は、プロセッサとアクセラレータとが搭載される制御基板を有するサーバ等の情報処理装置により実現されてもよい。パイプライン制御部2、計測部3および優先度設定部4は、プロセッサが実行する制御プログラムにより実現されてもよい。処理部5は、アクセラレータに搭載される複数の演算コアにより実現されてもよい。
処理部5がアクセラレータにより実現される場合、パイプライン制御部2は、アクセラレータの動作を制御するドライバを介して処理部5にデータ処理を実行させる。なお、ドライバは、アプリケーション・プログラマブル・インタフェース(API;Application Programming Interface)を有し、APIを介してパイプライン制御部2との間で通信を実行する。
図1に示す例では、各データ処理は、複数のステージA、B、C、...に分割して実行される。各ステージA、B、C、...は、処理部5に含まれる複数の演算コアのいずれかを使用して実行される。例えば、ステージA、B、C、...を実行する演算コアは、互いに異なる。各ステージA、B、C、...は、パイプラインステージの一例である。以下では、ステージA、B、C、...が区別なく説明される場合、単にステージと称される。
パイプライン制御部2は、複数のデータ処理を、タイミングをずらして処理部5に並列に実行させる。計測部3は、パイプライン制御部2が複数のデータ処理を処理部5に実行させる前の初期化期間(評価期間)に、複数のステージの各々を、入力データを変えながら処理部5に実行させ、各ステージの処理時間を計測する。そして、計測部3は、各ステージの処理時間の統計値を取得する。例えば、計測部3は、パイプライン制御部2を介して処理部5に各ステージを実行させ、処理時間を計測する。
優先度設定部4は、計測部3により計測されたステージ毎の処理時間に基づいて、初期化期間に各ステージの優先度を、処理時間が長い順に高く設定する。なお、優先度設定部4は、例えば、処理時間が長い上位の所定数のステージの優先度を、処理時間が長い順に高く設定し、他のステージの優先度を設定しなくてもよい。あるいは、優先度設定部4は、他のステージの優先度を最も低く設定してもよい。例えば、処理部5がアクセラレータにより実現される場合、優先度設定部4は、アクセラレータのドライバのAPIをフックすることで、複数のステージ毎に優先度を付け替える。
この実施形態では、優先度設定部4は、計測部3により計測されたステージ毎の処理時間に基づいて、処理時間が長い順にステージの優先度を高く設定する。このため、その後のデータ処理では、優先度の高いステージの処理は、他の処理により割り込まれることなく実行可能になる。
したがって、処理部5は、他の処理の割り込みにより処理時間が延びているステージがある場合にも、優先度の付け替えによりステージの処理時間を短縮することができる。これにより、演算処理装置1は、処理部5に順次実行させるデータ処理において、処理時間の長いステージの実行が待たされることを抑制できる。この結果、演算処理装置1は、図1に示すように、各ステージの処理時間をほぼ均等にすることが可能になり、パイプライン並列処理によるデータ処理の実行効率を向上できる。すなわち、この実施形態では、複数のパイプラインステージに分割される複数のデータ処理を実行する演算処理装置1のスループットを向上することができる。
処理部5がアクセラレータにより実現される場合、優先度設定部4は、アクセラレータのドライバのAPIをフックすることで、複数のステージ毎に優先度を付け替える。これにより、演算処理装置1は、パイプライン制御部2により各ステージの優先度が設定できない場合にも、優先度設定部4により、各ステージの実際の処理時間に応じて優先度を適切に設定できる。
計測部3による処理時間の計測および優先度設定部4による優先度の付け替えは、処理部5が複数のデータ処理を並列に順次実行する前の初期化期間に行われる。各ステージの優先度が予め付け替えられるため、演算処理装置1は、データ処理の実行時に処理効率が低下することを抑制できる。
図2は、別の実施形態における演算処理装置を含む情報処理装置の一例を示す。図2に示す情報処理装置100は、例えば、サーバ等であり、プロセッサ10、メモリ20、補助記憶装置30、アクセラレータ40、メモリ50、接続インタフェース部60、入力インタフェース部70、出力インタフェース部80およびネットワークインタフェース部90を有する。
プロセッサ10は、例えば、CPUであり、パイプライン制御部11、処理優先度制御部12およびSRAM(Static Random Access Memory)等の共有メモリ15を有する。パイプライン制御部11および処理優先度制御部12は、プロセッサ10がメモリ20に記憶された制御プログラムを実行することにより実現されてもよい。なお、プロセッサ10は、複数のコアを有してもよく、情報処理装置100に搭載されるプロセッサ10の数は、2以上でもよい。
処理優先度制御部12は、性能分析部13および分配指示部14を有する。性能分析部13は、計測部の一例であり、分配指示部14は、優先度設定部の一例である。性能分析部13は、図3で説明するパイプライン41の演算ステージ43a、43b毎の処理時間を計測する。分配指示部14は、性能分析部13により計測された演算ステージ43a、43b毎の処理時間に基づいて、各演算ステージ43a、43bの優先度を、処理時間が長い順に高く設定する。性能分析部13および分配指示部14の機能の例は、図5および図6で説明される。
メモリ20は、例えば、DRAM(Dynamic Random Access Memory)等の主記憶装置である。メモリ20は、プロセッサ10が実行する制御プログラムおよび各種データを保持する。補助記憶装置30は、HDD(Hard Disk Drive)またはSSD(Solid State Drive)等である。補助記憶装置30は、メモリ20に転送される制御プログラム、アクセラレータ40に実行させるデータ処理の入力データ、およびデータ処理を実行するニューラルネットワークの構成情報等を保持する。
アクセラレータ40は、例えば、GPUであり、特定の処理に対して演算を高速に実行可能である。この実施形態では、アクセラレータ40は、プロセッサ10からの指示に基づいて、学習済みのニューラルネットワークを使用した画像認識処理等のデータ処理を実行する。メモリ50は、例えば、DRAM等の主記憶装置である。メモリ50は、データ処理に使用する入力データおよびデータ処理の結果である出力データを保持する。なお、アクセラレータ40は、プロセッサ10の共有メモリ15に直接アクセスできない。このため、共有メモリ15に保持されたデータのうち、アクセラレータ40により使用されるデータは、共有メモリ15からメモリ50に転送される。
接続インタフェース部60は、例えば、PCIe(Peripheral Component Interconnect express)スイッチ等である。接続インタフェース部60は、プロセッサ10、アクセラレータ40、入力インタフェース部70、出力インタフェース部80およびネットワークインタフェース部90を相互に接続する。
入力インタフェース部70の1つは、動画像等を撮影する図示しないカメラに接続され、カメラにより取得された動画像データを入力する。また、入力インタフェース部70の別の1つは、図示しないマウスまたはキーボード等に接続されてもよい。出力インタフェース部80は、画像およびテキスト等を表示する図示しないディスプレイ等に接続される。ネットワークインタフェース部90は、例えば、NIC(Network Interface Card)であり、図示しないネットワークに接続される。
図3は、図2の情報処理装置100により実現されるパイプラインシステムの機能構成の一例を示す。図3において、太い矢印はデータの伝達経路を示し、細い矢印は、命令等の制御信号の伝達経路を示す。データ処理を複数のステージに分割して並列に実行するパイプライン41は、入力ステージ42、複数の演算ステージ43(43a、43b等)および出力ステージ44を含む。例えば、パイプライン41によるデータ処理は、プロセッサ10およびアクセラレータ40の少なくとも一方により実行される。
性能分析部13は、パイプライン41によるデータ処理を開始する前に、入力ステージ42から各演算ステージ43にデータを順次供給させる。性能分析部13は、出力ステージ44を介して、各演算ステージ43の処理結果を受信することで、処理時間を計測する。なお、性能分析部13は、着目する演算ステージ43毎にデータを順次与え、着目する演算ステージ43の演算の終了に基づいて、処理時間を計測してもよい。分配指示部14は、性能分析部13により計測された演算ステージ43毎の処理時間に基づいて、パイプライン41によるデータ処理を開始する前に、各演算ステージ43の優先度を、処理時間が長い順に高く設定する。
パイプライン制御部11は、パイプライン41によるデータ処理を開始する場合、データ処理毎に演算の実行を開始する命令を発行する。パイプライン制御部11は、命令の発行時、処理するデータに固有のID(Identification)を与えることで、実行するデータ処理を識別可能にする。例えば、パイプライン41により実行されるデータ処理が動画像の認識処理の場合、固有のIDは、画像のフレーム番号等である。パイプライン制御部11は、パイプライン41によるデータ処理の終了時に出力ステージ44から処理の完了通知を受信することで、パイプライン41で実行中のデータ処理の残存数を把握する。
入力ステージ42は、図2の入力インタフェース部70またはネットワークインタフェース部90を介して画像データ等の入力データを受信し、受信した入力データを共有メモリ15に書き込む。なお、共有メモリ15は、パイプライン41の各ステージからアクセス可能である。入力ステージ42は、入力データの書き込み先を固有のIDにしたがって決定することで、入力データが共有メモリ15に上書きされることを回避する。
複数の演算ステージ43a、43bによる処理は、例えば、アクセラレータ40またはプロセッサ10により実行される。各演算ステージ43a、43bは、前のステージから受信した固有のIDに基づいて共有メモリ15から処理対象のデータを取得する。そして、各演算ステージ43a、43bは、取得したデータを使用して演算を実行し、演算結果を示すデータを処理結果として固有のIDに応じて割り当てられた共有メモリ15の記憶領域に書き込む。
出力ステージ44は、固有のIDに対応する共有メモリ15の記憶領域から処理結果を取得する。出力ステージ44は、取得した処理結果を、図2の出力インタフェース部80を介して出力デバイスに送信し、あるいは図2のネットワークインタフェース部90を介してネットワーク先のリモートノードに送信する。出力ステージ44は、固有のIDのデータ処理に使用した共有メモリ15上のデータが再利用可能であることをパイプライン制御部11に通知する。
外部コマンド制御部18は、図3に示すパイプラインシステムに対して外部からのコマンドを受け付け、受け付けたコマンドをパイプライン制御部11に出力する。例えば、外部コマンド制御部18が受け付けるコマンドは、データ処理を要求するユーザプログラム等により発行されてもよい。なお、以下の説明では、演算ステージ43(43a、43b等)は、単にステージ43(43a、43b等)とも称される。
図4は、図2の情報処理装置100により実行される学習済みのニューラルネットワークを使用した画像認識処理の一例を示す。例えば、図4に示す画像認識処理では、情報処理装置100は、カメラ等からリアルタイムで受信する動画像の各フレームに写っている人物を認識し、前後のフレームに写っている人物の動きから人物の行動を推定する。
情報処理装置100は、画像認識処理において、動画像処理、人認識処理、姿勢認識処理、追跡処理および行動推定処理を順次実行する。図4に示す例では、動画像処理、人認識処理および姿勢認識処理は、プロセッサ10の指示に基づいて、アクセラレータ40により演算ステージ43の処理としてそれぞれ実行される。動画像処理、人認識処理および姿勢認識処理は、アクセラレータ40のリソースの競合が発生する場合がある。
追跡処理および行動推定処理は、プロセッサ10により演算ステージ43の処理としてそれぞれ実行される。なお、動画像処理、人認識処理、姿勢認識処理、追跡処理および行動推定処理は、アクセラレータ40のみで実行されてもよく、プロセッサ10のみで実行されてもよい。
アクセラレータ40は、動画像処理において、動画像データから1枚の画像に対応するフレームデータを順次取り出す。アクセラレータ40は、人認識処理において、各フレームデータから人物を抽出する。アクセラレータ40は、姿勢認識処理において、フレーム毎に、抽出した人物の姿勢を認識する。
プロセッサ10は、追跡処理において、前後のフレームでの姿勢認識処理により認識された人物の姿勢の変化を検出し、人物の動作を判定する。例えば、人物の動作は、止まっている、歩いている、走っている、座ろうとしている等である。プロセッサは、行動推定処理において、追跡処理の判定結果に基づいて、人物の行動を推定する。
動画像処理、人認識処理および姿勢認識処理のユーザスクリプトは、フレームワーク、ライブラリおよびアクセラレータ40のドライバを介して、アクセラレータ40により実行される。また、追跡処理および行動推定処理のユーザスクリプトは、フレームワークおよびライブラリを介して、プロセッサ10により実行される。処理優先度制御部12の分配指示部14は、上述したように、アクセラレータ40のドライバのAPIをフックすることで、複数のステージ毎に優先度を設定する。
図5は、演算ステージ43毎の優先度にしたがって処理命令がアクセラレータ40に投入される例を示す。例えば、深層学習または深層学習後の認識処理等に使用されるフレームワークは、ユーザスクリプトの記述に細かな制御を含めなくてもよいように、低レベルのAPIを隠蔽する。
また、アクセラレータ40等の外部デバイスが深層学習または認識処理等に使用される場合、フレームワークは、アクセラレータ40に関連するドライバのAPI等も隠蔽する。さらに、フレームワークは、数理演算等のライブラリも隠蔽する。これにより、ユーザスクリプトによる記述は、フレームワークが提供するAPIを意識することで作成可能になる。換言すれば、ユーザスクリプトによる記述は、計算処理がプロセッサ10またはアクセラレータ40のいずれにより実行されるのかを意識せずに生成可能になる。
さらに、この実施形態では、アクセラレータ40に対する処理命令を管理するための演算ステージ43毎の優先度付きのキューの作成APIが隠蔽される。例えば、処理命令は、アクセラレータ40のドライバにより管理されるソフトウェアレベルのキュー45(45a、45b)と、アクセラレータ40により管理されるハードウェアレベルのキュー46とを介してアクセラレータ40に投入される。
ソフトウェアレベルのキュー45は、ハードウェアレベルのキュー46に空きがある場合、ハードウェアレベルのキュー46に処理命令を投入する。アクセラレータ40は、ハードウェアレベルのキュー45から投入される処理命令を投入順に実行する。ソフトウェアレベルのキュー45からハードウェアレベルのキュー46への命令の投入は、優先度の高いキューが優先される。
図5では、演算ステージ43a、43bにそれぞれ対応するソフトウェアレベルのキュー45a、45bが示される。演算ステージ43aに対応するキュー45aは、演算ステージ43bに対応するキュー45bより優先度が高い。このため、キュー45aに保持される処理命令a1、a2は、キュー45bに保持される処理命令b1、b2より優先的にハードウェアレベルのキュー46に投入される。そして、キュー46は、処理命令a1、a2、b1、b2を保持した順にアクセラレータ40に投入する。これにより、演算ステージ43aによる処理は、演算ステージ43bによる処理より優先的に実行される。
図6は、図4の処理優先度制御部12の分配指示部14がAPIのフックによりキューの優先度を付け替える一例を示す。分配指示部14は、ドライバのAPIによる優先度なしキューを生成する関数と優先度付きキューを生成する関数の両方をフックする。そして、分配指示部14は、APIによるキューを生成する関数を、性能分析部13により計測された演算ステージ43の処理時間に基づいて優先度が設定された優先度付きキューを生成する関数に付け替える。
特に限定されないが、優先度なしのキューを生成する関数は、"cuStreamCreate"であり、優先度付きキューを生成する関数は、"cuStreamCreateWithPriority"である。
図7は、図4の処理優先度制御部12の動作の一例を示す。図7に示す処理フローは、プロセッサ10が制御プログラムを実行することで実現される。すなわち、図7は、プロセッサ10による演算処理方法の一例を示す。図7に示す処理フローは、パイプライン制御部11が複数のデータ処理をアクセラレータ40に実行させる前の初期化期間(評価期間)に実行される。
まず、ステップS10において、処理優先度制御部12の性能分析部13は、性能分析用のダミーデータをメモリ20または補助記憶装置30から取得し、共有メモリ15に書き込む。ダミーデータは、アクセラレータ40に各ステージ43の演算を実行させる入力データを含む。そして、性能分析部13は、ダミーデータを共有メモリ15からメモリ50に転送し、アクセラレータ40に各ステージ43の演算処理を実行させる。
次に、ステップS20において、性能分析部13は、各ステージ43の演算処理に掛かった処理時間を計測する。図7に示す例では、ステージ43cの処理時間が最も長く、ステージ43dの処理時間が最も短い。
次に、ステップS30において、処理優先度制御部12の分配指示部14は、性能分析部13が計測した処理時間に基づいて、各ステージ43の優先度を、処理時間が長い順に高く設定する。例えば、分配指示部14は、処理時間が最も長いステージ43cの優先度を最も高い"1"に設定し、処理時間が2番目に長いステージ43bの優先度を2番目に高い"2"に設定する。分配指示部14は、処理時間が3番目に長いステージ43aの優先度を"3"に設定し、処理時間が最も短いステージ43dの優先度を最も低い"4"に設定する。
次に、ステップS40において、分配指示部14は、各ステージ43の演算処理を実行するスレッドID(またはプロセスID)と優先度とを関連付ける。例えば、分配指示部14は、ステージ43aの優先度"1"を、ステージ43cの演算処理を実行するスレッドID(またはプロセスID)"1113"と関連付ける。分配指示部14は、ステージ43bの優先度"2"を、ステージ43bの演算処理を実行するスレッドID(またはプロセスID)"1112"と関連付ける。分配指示部14は、他のステージ43の優先度も、スレッドIDと対応付ける。
次に、ステップS50において、分配指示部14は、図6で説明したように、アクセラレータ40のドライバのAPIをフックすることで、ステップS30で決定した優先度をステージ43毎に付け替える。次に、ステップS60において、分配指示部14は、ステップS50で設定した優先度を有するキュー45を再生成し、図7に示す初期化動作を完了する。
図8は、図2の情報処理装置100により実行されるパイプライン並列処理の一例を示す。図8に示すパイプライン並列処理では、図4に示す学習済みのニューラルネットワークを使用した画像認識処理が実行される。図8の上側は、処理優先度制御部12を動作させず、優先度を処理時間の長さに対応させない場合のパイプライン並列処理の一例を示す。図8の下側は、処理優先度制御部12を動作させ、優先度を処理時間の長さに対応させた場合のパイプライン並列処理の一例を示す。
処理優先度制御部12を動作させない場合、図7に示したように、処理時間は、ステージ43c、43b、43a、43dの順で長くなる。各ステージ43の処理時間がばらつくため、隣接する2つのステージ43間において後ろのステージ43の演算を開始するまでの待ち時間が発生しやすくなる。待ち時間は、後ろのステージ43の処理時間が長いほど長くなり、パイプライン並列処理の進行とともに蓄積される。したがって、処理優先度制御部12を動作させない場合、パイプライン並列処理による演算処理の実行効率は低下する。
なお、パイプライン設計では、各ステージでの処理量は、ほぼ等しくなるように設定される。しかしながら、例えば、ステージ43cの演算処理中に他の演算処理が割り込むことで、ステージ43cの処理時間が延びる。演算処理の割り込みは、ステージ43cに設定された優先度が低いほど発生しやすい。なお、図8では、ステージ43cの演算処理中に他の演算処理がまとめて割り込んでいるが、他の演算処理の割り込みは、間隔を置いて複数回発生してもよい。
これに対して、処理優先度制御部12を動作させる場合、分配指示部14は、各ステージ43の優先度を、処理時間が長い順に高く設定する。これにより、割り込みの頻度が高く処理時間が延びていたステージ43ほど優先度が高く設定されるため、各ステージの処理時間をほぼ同等にすることが可能になる。
したがって、プロセッサ10は、隣接する2つのステージ43間において後ろのステージ43の演算を開始するまでの待ち時間を短縮することができる。この結果、プロセッサ10は、処理優先度制御部12を動作させない場合に比べて、無駄な待ち時間を少なくすることができ、パイプライン並列処理による演算処理の実行効率を向上することができる。すなわち、この実施形態においても、複数のパイプラインステージに分割される複数のデータ処理を実行する情報処理装置100のスループットを向上することができる。
図9は、図4の処理優先度制御部12による優先度制御の前後での処理時間の変化の一例を示す。図9では、図7による計測で処理時間が最も長いステージ43cにおいて、動画像のフレーム120からフレーム138をリアルタイムで処理した場合の処理時間の変化が示される。
優先度制御前の処理時間は、図8の処理優先度制御部12を動作させない場合に対応し、優先度制御後の処理時間は、図8の処理優先度制御部12を動作させる場合に対応する。各フレームの処理時間において、"images"は入力データの読み込みを示し、"CPN_prep"は前処理を示し、"CPN_resize"は画像データのリサイズを示す。"model"は画像処理を示し、"CPN_peak"は後処理を示す。
優先度制御前では、フレームによって処理時間のばらつきが大きい。ステージ43cにおいて各フレームの処理量は、ほぼ同じである。このため、処理時間の増加は、他の処理の割り込みによる処理の遅延により発生する。優先度制御前の最大の処理時間は、112msである。例えば、フレームを欠落することなく動画像を処理する場合、カメラからの動画像の入力は、毎秒8フレーム以下に抑えられる。
一方、優先度が高く設定された優先度制御後では、最大の処理時間は63msに改善する。フレームを欠落することなく動画像を処理する場合、カメラからの動画像の入力は、毎秒15フレームまで可能になる。したがって、プロセッサ10は、処理優先度制御部12により優先度制御を実行することで画像認識処理の性能を向上することができる。
以上、この実施形態においても上述した実施形態と同様の効果を得ることができる。例えば、優先度の設定前には他の処理の割り込みにより処理時間が延びていたステージ43の処理時間を短縮することができる。したがって、情報処理装置100は、各々が複数のステージ43に分割される複数のデータ処理を順次実行するパイプライン並列処理において、複数のステージ43の処理時間をほぼ均等にすることができる。この結果、情報処理装置100は、パイプライン並列処理によるデータ処理の実行効率を向上できる。
分配指示部14は、アクセラレータ40のドライバのAPIをフックすることで、複数のステージ43毎に優先度を付け替える。これにより、情報処理装置100は、パイプライン制御部11により各ステージ43の優先度が設定できない場合にも、分配指示部14により、各ステージ43の実際の処理時間に応じて優先度を設定できる。性能分析部13による処理時間の計測および分配指示部14による優先度の設定は、アクセラレータ40が複数のデータ処理を並列に順次実行する前の初期化期間に行われる。各ステージ43の優先度が予め設定されるため、情報処理装置100は、データ処理の実行時に処理効率が低下することを抑制できる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
1 演算処理装置
2 パイプライン制御部
3 計測部
4 優先度設定部
5 処理部
10 プロセッサ
11 パイプライン制御部
12 処理優先度制御部
13 性能分析部
14 分配指示部
15 共有メモリ
18 外部コマンド制御部
20メモリ
30 補助記憶装置
40 アクセラレータ
41 パイプライン
42 入力ステージ
43 演算ステージ
44 出力ステージ
45a、45b、46 キュー
50 メモリ
60 接続インタフェース部
70 入力インタフェース部
80 出力インタフェース部
90 ネットワークインタフェース部

Claims (4)

  1. 各々が複数のパイプラインステージに分割される複数のデータ処理を、タイミングをずらして処理部に並列に実行させるパイプライン制御部と、
    前記複数のパイプラインステージの各々の処理時間を計測する計測部と、
    前記複数のパイプラインステージの優先度を、計測した処理時間が長い順に高く設定する優先度設定部と、
    を有する演算処理装置。
  2. 前記優先度設定部は、前記処理部の動作を制御するドライバのアプリケーション・プログラマブル・インタフェースをフックすることで、前記複数のパイプラインステージ毎に前記優先度を付け替える
    請求項1に記載の演算処理装置。
  3. 前記計測部による処理時間の計測および優先度設定部による優先度の設定は、前記パイプライン制御部が前記複数のデータ処理を前記処理部に実行させる前に行われる
    請求項1または請求項2に記載の演算処理装置。
  4. 各々が複数のパイプラインステージに分割される複数のデータ処理を、タイミングをずらして処理部に並列に実行させる前に、
    前記複数のパイプラインステージの各々の処理時間を計測し、
    前記複数のパイプラインステージの優先度を、計測した処理時間が長い順に高く設定する
    演算処理方法。
JP2021112534A 2021-07-07 2021-07-07 演算処理装置および演算処理方法 Pending JP2023009354A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021112534A JP2023009354A (ja) 2021-07-07 2021-07-07 演算処理装置および演算処理方法
US17/729,025 US11782708B2 (en) 2021-07-07 2022-04-26 Arithmetic processing device and arithmetic processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021112534A JP2023009354A (ja) 2021-07-07 2021-07-07 演算処理装置および演算処理方法

Publications (1)

Publication Number Publication Date
JP2023009354A true JP2023009354A (ja) 2023-01-20

Family

ID=84799028

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021112534A Pending JP2023009354A (ja) 2021-07-07 2021-07-07 演算処理装置および演算処理方法

Country Status (2)

Country Link
US (1) US11782708B2 (ja)
JP (1) JP2023009354A (ja)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5928389A (en) * 1996-10-21 1999-07-27 Applied Materials, Inc. Method and apparatus for priority based scheduling of wafer processing within a multiple chamber semiconductor wafer processing tool
US7690003B2 (en) * 2003-08-29 2010-03-30 Fuller Jeffrey C System and method for increasing data throughput using thread scheduling
DE102005060902A1 (de) * 2005-12-20 2007-06-28 Robert Bosch Gmbh Steuergerät für eine Maschine
US7551176B2 (en) * 2006-08-24 2009-06-23 Via Technologies, Inc. Systems and methods for providing shared attribute evaluation circuits in a graphics processing unit
US9223629B2 (en) * 2007-01-31 2015-12-29 Hewlett-Packard Development Company, L.P. Data processing system and method
JP2011118589A (ja) 2009-12-02 2011-06-16 Hitachi Ltd 情報処理装置
JP5552855B2 (ja) * 2010-03-19 2014-07-16 富士ゼロックス株式会社 画像処理装置、画像形成システム及び画像処理プログラム
JP2016091307A (ja) 2014-11-05 2016-05-23 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
US10635446B2 (en) * 2015-09-24 2020-04-28 Qualcomm Incorporated Reconfiguring execution pipelines of out-of-order (OOO) computer processors based on phase training and prediction
US11216764B2 (en) * 2017-07-11 2022-01-04 Jpmorgan Chase Bank, N.A. Systems and methods for distributed business process management
JP7278067B2 (ja) 2018-12-20 2023-05-19 キヤノン株式会社 データ処理装置及びその制御方法及びプログラム

Also Published As

Publication number Publication date
US20230010536A1 (en) 2023-01-12
US11782708B2 (en) 2023-10-10

Similar Documents

Publication Publication Date Title
JP5722327B2 (ja) Gpuワークのハードウエアベースでのスケジューリング
JP6437579B2 (ja) 仮想化環境におけるインテリジェントgpuスケジューリング
Huang et al. ShuffleDog: characterizing and adapting user-perceived latency of android apps
CN110678847A (zh) 用于gpu任务调度的连续分析任务
JP2008506187A (ja) 複数のカーネルの並列実行のための方法およびシステム
JP7461947B2 (ja) プロセッサにおける余裕認識(laxity-aware)型動的優先度変更
JP4836903B2 (ja) マイクロプロセッサ制御装置並びにその方法およびプログラム
US20130125131A1 (en) Multi-core processor system, thread control method, and computer product
CN109766168B (zh) 任务调度方法和装置、存储介质以及计算设备
CN114968567A (zh) 用于分配计算节点的计算资源的方法、装置和介质
JP2023009354A (ja) 演算処理装置および演算処理方法
CN110825502B (zh) 神经网络处理器和用于神经网络处理器的任务调度方法
US11481250B2 (en) Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values
Lázaro-Muñoz et al. A tasks reordering model to reduce transfers overhead on GPUs
WO2019187719A1 (ja) 情報処理装置、および情報処理方法、並びにプログラム
CN116795503A (zh) 任务调度方法、任务调度装置、图形处理器及电子设备
CN112114967B (zh) 一种基于服务优先级的gpu资源预留方法
CN115269131A (zh) 一种任务调度方法及装置
US9632834B2 (en) Assigning priorities to computational work streams by mapping desired execution priorities to device priorities
JP5480322B2 (ja) 性能制御方法、そのシステムおよびプログラム
JP5376042B2 (ja) マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム
CN108140363B (zh) 基于翻转队列管理的图形上下文调度
JP5713973B2 (ja) 情報処理装置および並列処理方法
WO2021245758A1 (ja) 情報処理装置、情報処理方法およびプログラム
KR102443894B1 (ko) 가상화 환경에서 가상머신의 i/o 성능을 높이기 위한 스케줄링 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240404