JP6815563B1 - データ処理実行装置、データ処理実行方法及びデータ処理実行プログラム - Google Patents
データ処理実行装置、データ処理実行方法及びデータ処理実行プログラム Download PDFInfo
- Publication number
- JP6815563B1 JP6815563B1 JP2020526344A JP2020526344A JP6815563B1 JP 6815563 B1 JP6815563 B1 JP 6815563B1 JP 2020526344 A JP2020526344 A JP 2020526344A JP 2020526344 A JP2020526344 A JP 2020526344A JP 6815563 B1 JP6815563 B1 JP 6815563B1
- Authority
- JP
- Japan
- Prior art keywords
- data processing
- engine
- execution
- new
- allocated
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 968
- 238000000034 method Methods 0.000 title claims description 94
- 230000008569 process Effects 0.000 claims description 79
- 238000006243 chemical reaction Methods 0.000 claims description 45
- 238000004364 calculation method Methods 0.000 claims description 34
- 238000000605 extraction Methods 0.000 description 27
- 230000006870 function Effects 0.000 description 26
- 238000004891 communication Methods 0.000 description 14
- 230000008859 change Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
- G06F9/4862—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4818—Priority circuits therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
Abstract
Description
特許文献1では、データ処理を実行する複数のエンジンの中から、データ処理をデッドライン内に完了させることができるエンジンを選択する技術が開示されている。例えば、特許文献1の技術では、演算精度は低いが処理時間の短いエンジン又は演算精度は高いが処理時間が長いエンジンが選択される。
つまり、データ処理Aの実行開始後に優先度の高いデータ処理Bが発生すると、データ処理Bを優先して実行するためにデータ処理Aの実行が中断される。そして、データ処理Bの完了後にデータ処理Aの実行が再開する。特許文献1では、データ処理Aに適用するエンジンはデータ処理Aの開始時に固定されており、後から変更することができない。このため、特許文献1の技術では、突発イベントが発生した場合に、データ処理Aをデッドライン内に完了させることができない。
各々がデータ処理を実行する複数のエンジンと、
前記複数のエンジンのうちのいずれかのエンジンが実行エンジンとしてデータ処理を実行している際に、前記実行エンジンが実行しているデータ処理である実行データ処理の実行を引き継ぐ引き継ぎエンジンを、前記複数のエンジンから選択するエンジン選択部と、
前記実行エンジンに前記実行データ処理の実行を停止させ、前記引き継ぎエンジンに前記実行データ処理の実行を引き継がせる制御部とを有する。
***構成の説明***
図1は、本実施の形態に係るデータ処理実行装置100のハードウェア構成例を示す。
本実施の形態に係るデータ処理実行装置100は、コンピュータである。なお、データ処理実行装置100の動作手順は、データ処理実行方法に相当する。また、データ処理実行装置100の動作を実現するプログラムは、データ処理実行プログラムに相当する。
データ処理実行装置100は、データ処理を実行する。データ処理とは、デジタル信号に算術演算及び論理演算の少なくともいずれかを行ってデジタル信号の解析、加工、分類、変換等を行うデジタル信号処理である。
ハードウェアアクセラレータ904には、FPGA(Field−Programmable Gate Array)905、GPU(Graphics Processing Unit)906、DSP(Digital Signal Processor)907及びASIC(Application Specific Integrated Circuit)908が含まれる。
以下では、処理回路900がCPU901とは異なるCPUである例を説明する。
データ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104及び通信処理部105は、プログラムにより実現される。つまり、処理回路900が、データ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104及び通信処理部105の機能を実現するプログラムを実行して、後述するデータ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104及び通信処理部105の機能が達成される。
データ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104及び通信処理部105の機能を実現するプログラムは、ROM903で記憶されている。データ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104及び通信処理部105の機能を実現するプログラムはRAM902にロードされて、処理回路900により実行される。
また、データ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104及び通信処理部105の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記録媒体に格納されていてもよい。そして、データ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104及び通信処理部105の機能を実現するプログラムが格納された可搬記録媒体を流通させてもよい。
エンジンとは、データ処理を実行するためのハードウェアリソースとソフトウェアとが統合された概念である。
例えば、CPU901がデータ処理のためのアルゴリズムが記述されたプログラムを実行することでエンジンが実現される。
エンジンの一例として、CNN(畳み込みニューラルネットワーク)が挙げられる。
図1では、エンジンを実現するハードウェアリソースとして、CPU901、FPGA905、GPU906、DSP907、ASIC908が示される。しかし、エンジンを実現するハードウェアリソースとして、これらのうちの1つ以上が存在していればよい。つまり、エンジンを実現するハードウェアリソースはCPU901のみであってもよいし、CPU901とFPGA905、GPU906とDSP907のような組合せであってもよい。
データ処理とエンジンとの関係については後述する。
エンジン実行部104は、更に、CPU実行部1041、FPGA実行部1042で構成される。
エンジン実行管理データ120は、更に、実行データ処理リスト121と実行待ちデータ処理リスト122で構成される。
エンジンソフトウェア130は、更に、ブロック関数リスト131及びエンジン実装コード132で構成される。
図3の例では、5種類のデータ処理が存在することを前提としている。各データ処理には、データ処理ID(Identifier)が設けられている。データ処理IDは、データ処理を一意に識別可能な識別子である。なお、以下では、データ処理ID:1のデータ処理をデータ処理1ともいう。他のデータ処理も同様に、データ処理2、データ処理3、データ処理4、データ処理5ともいう。
また、5種類のデータ処理には、優先度が設定されている。優先度は数値で示される。数値が大きいほど優先度が高いものとする。
本実施の形態では、図3に示すように、データ処理1のデータ処理の優先度が最も高く、データ処理5のデータ処理の優先度が最も低いものとする。
本実施の形態では、データ処理実行装置100は、高優先度のデータ処理を低優先度のデータ処理よりも優先して実行する。低優先度のデータ処理の実行中に後発的に高優先度のデータ処理が発生した場合に、低優先度のデータ処理と高優先度のデータ処理データとの間でハードウェアリソースの競合があれば、データ処理実行装置100は、低優先度のデータ処理の実行を中断して、高優先度のデータ処理を当該ハードウェアリソース上で先に実行する。
1A及び1Bは、データ処理1を実行するエンジンである。
2A、2B及び2Cは、データ処理2を実行するエンジンである。
3A、3B及び3Cは、データ処理3を実行するエンジンである。
4A及び4Bは、データ処理4を実行するエンジンである。
5A、5B及び5Cは、データ処理5を実行するエンジンである。
各エンジンのアルファベット部分が精度に対応する。「A」が最も精度が高いエンジンを表し、「C」が最も精度が低いエンジンを表す。このように、本実施の形態では、同じデータ処理を実行可能な2以上のエンジンが存在し、同じデータ処理を実行可能な2以上のエンジンは、各々、精度が異なっている。
同じデータ処理を実行する2以上のエンジンが同じハードウェアリソースで実現されるとは限らない。例えば、エンジン1AはFPGA905で実現され、エンジン1BはCPU901で実現されることがある。
また、精度と処理時間とはトレードオフの関係にある。つまり、同じデータ処理を実行する場合でも、精度の高いエンジンでは処理時間が長く、精度の低いエンジンでは処理時間が短い。このため、突発イベントにより高優先度のデータ処理が新たに発生した場合に、低優先度のデータ処理のエンジンを精度の低いエンジンに切り替えて、低優先度のデータ処理の処理時間を短縮することがある。
デッドラインはデータ処理の完了期限である。
データ処理登録部101は、データ処理命令をエンジン選択部102に転送する。
なお、エンジン選択部102により選択され、データ処理を実行しているエンジンを実行エンジンともいう。また、実行エンジンが実行しているデータ処理を実行データ処理ともいう。更に、エンジン選択部102によりエンジンが選択され、エンジンが割り当てられているが未実行のデータ処理を割当て済みデータ処理ともいう。
より具体的には、エンジン選択部102は、実行エンジンによる実行データ処理の実行では実行データ処理、新たなデータ処理及び割当て済みデータ処理の少なくともいずれかが各々のデッドラインまでに完了しない場合に、実行データ処理、新たなデータ処理及び割当て済みデータ処理を各々のデッドラインまでに完了させることができるエンジンを、引き継ぎエンジンとして選択する。例えば、エンジン選択部102は、実行エンジンよりも演算精度が低く、実行データ処理、新たなデータ処理及び割当て済みデータ処理を各々のデッドラインまでに完了させることができるエンジンを、引き継ぎエンジンとして選択する。また、このようなエンジンが2以上ある場合は、エンジン選択部102は、最も演算精度が高いエンジンを、引き継ぎエンジンとして選択する。
エンジン選択部102は、割当て済みデータ処理に割り当てられているエンジンの他のエンジンへの切替えも検討する。このため、エンジン選択部102は、割当て済みデータ処理に割り当てられているエンジンの他のエンジンへの切替えとの組合せにより、実行データ処理、新たなデータ処理及び割当て済みデータ処理を各々の完了期限までに完了させることができるエンジンを、引き継ぎエンジンとして選択する。
エンジン選択部102は、実行データ処理ごとに他のエンジンへの切替えを検討する。このため、エンジン選択部102は、他の実行データ処理の他のエンジンへの切替え、割当て済みデータ処理に割り当てられているエンジンの他のエンジンへの切替えとの組合せにより、実行データ処理、新たなデータ処理、割当て済みデータ処理及び他の実行データ処理を各々の完了期限までに完了させることができるエンジンを、引き継ぎエンジンとして選択する。
また、エンジン実行管理部103は、実行データ処理の中断が必要な場合は中断指令を該当するハードウェアリソースに出力する。エンジン実行管理部103は、中断指令を出力することで、実行エンジンに実行データ処理の実行を停止させる。また、実行データ処理の実行を引き継ぎエンジンに引き継がせる場合は、エンジン実行管理部103は、該当するハードウェアリソースに実行要求を出力して、引き継ぎエンジンに実行データ処理の実行を引き継がせる。
更に、中断状態にあるデータ処理の再開が可能になった際に、エンジン実行管理部103は再開要求を該当するハードウェアリソースに出力する。
また、エンジン実行管理部103は、ハードウェアリソースから、完了通知及びステップ完了通知を受信する。
図2では、簡明化のために、CPU実行部1041及びFPGA実行部1042のみを示している。
CPU実行部1041はCPU901内でエンジンを実行する機能である。
また、FPGA実行部1042は、FPGA905内でエンジンを実行する機能である。
一方、引き継ぎエンジンが選択された場合は、エンジン実行部104は、共通プログラムコードを変換して引き継ぎエンジン向けの個別のプログラムコードを生成する。そして、エンジン実行部104は、生成した引き継ぎエンジン向けの個別のプログラムコードを用いて引き継ぎエンジンに実行データ処理を引き継がせる。
通信処理部105は、例えば、アクチュエータ又はデータ処理実行装置100と同等のデータ処理実行装置にデータ処理の結果を送信する。
実行データ処理リスト121は、実行中のデータ処理が示されるリストである。
実行待ちデータ処理リスト122は、実行待ちのデータリストが示されるリストである。
実行データ処理リスト121と実行待ちデータ処理リスト122の詳細は後述する。
エンジン実装コード132は、各エンジンを実装するためのコード(プログラム)である。エンジン実装コード132は、複数のコードブロック(以下、単にブロックともいう)で構成される。
ブロック関数リスト131には、エンジン実装コード132のブロックごとに、各ブロックの処理を実現する関数が示される。
ブロック関数リスト131及びエンジン実装コード132の詳細は後述する。
演算結果格納メモリ140の詳細は後述する。
エンジンリスト110では、データ処理IDごとに、選択可能なエンジンのエンジンIDが示される。また、エンジンIDごとに、精度、実行ハードウェアリソース、各ステップの処理時間が示される。
精度は、0〜100の数値で表現される。数値が大きいほど精度が高い。
実行ハードウェアリソースは、エンジンの実行に必要なハードウェアリソースである。
処理時間は、各ステップの実行に要する時間である。なお、「−」は該当するステップが存在しないことを意味する。ステップとは、データ処理を構成する部分データ処理である。なお、エンジンに応じてステップの実行数が変化する。例えば、データ処理3は、エンジン3Aでは、2つのステップが実行されるが、エンジン3Bでは、3つのステップが実行される。
実行データ処理リスト121では、実行データ処理が管理される。つまり、実行データ処理リスト121では、エンジンにより実行中のデータ処理が管理される。
ハードウェアリソース種別は、ハードウェアリソースの種別である。なお、図5では、図2に対応させて、FPGA905とCPU901のみを示している。
データ処理IDは、ハードウェアリソースで現在実行中のデータ処理の識別子である。データ処理IDの値が0であれば、当該ハードウェアリソースではデータ処理が実行されていないことを意味する。
優先度は、現在実行中のデータ処理の優先度である。データ処理が実行されていない場合は、優先度の値は0である。
エンジンIDは、データ処理を実行しているエンジンの識別子である。データ処理が実行されていない場合は、エンジンIDの値は0である。
ステップ番号は、現在実行中のステップの識別子である。データ処理が実行されていない場合は、ステップ番号の値は0である。
ステップ開始時刻は、現在実行中のステップの実行を開始した時刻である。本実施の形態では、ステップ開始時刻はカウント値(例えば、1μ秒ごとにインクリメントされるカウント値)で示される。
デッドラインは、現在実行中のデータ処理の完了期限の時刻である。デッドラインもカウント値で示される。
切替えフラグは、現在実行中のデータ処理に対するエンジンの切替え要求がある場合にTRUEになる。切替えフラグがTRUEになると、現在実行中のステップの完了後にエンジンの切替え処理が行われる。
ステップ完了通知フラグは、ステップ完了通知が発行された場合にTRUEになる。ステップ完了通知はステップの実行が完了したことをエンジン実行管理部103に通知するメッセージである。ステップ完了通知フラグがTRUEになると、エンジンの切替え処理が行われる。
中断可否フラグは、ハードウェアリソースがステップの実行途中での中断を許容するか否かを示す。ハードウェアリソースがステップの実行途中での中断を許容する場合は中断可否フラグにTRUEが示される。FPGA905ではステップの実行途中での中断は許容されないが、CPU901ではステップの実行途中での中断は許容される。ステップの実行途中での中断は、リアルタイムOS(Operating System)等のタスクのプリエンプト機能を利用して実現される。
実行待ちデータ処理リスト122では、実行待ちのデータ処理が管理される。
状態は、「ステップ完了待ち」と「実行可能状態」のいずれかをとる。「ステップ完了待ち」は、他のデータ処理(図6の例ではデータ処理ID2)のステップの実行完了を待っている状態である。他のデータ処理の完了後に違うエンジンに切り替える場合の状態は「ステップ完了待ち」である。「実行可能状態」は、優先度の高い他のデータ処理の実行完了を待っている状態である。
データ処理IDは、実行待ちのデータ処理の識別子である。
優先度は、実行待ちのデータ処理の優先度である。
エンジンIDは、実行待ちのデータ処理を実行する予定のエンジンの識別子である。
ステップ番号は、実行待ちのデータ処理のステップの識別子である。つまり、ステップ番号は、実行待ちのステップの識別子である。
デッドラインは、実行待ちのステップの完了期限の時刻である。デッドラインもカウント値で示される。
ステップ残処理時間は、実行待ちのステップの残りの処理時間である。ステップの実行途中に実行が中断した場合に、実行待ちのステップの残りの処理時間を得るために用いられる。ステップ残処理時間もカウント値で示される。
切替えフラグは、実行待ちのデータ処理に対するエンジンの切替え要求がある場合にTRUEになる。切替えフラグがTRUEになると、実行待ちのステップの完了後にエンジンの切替え処理が行われる。
ステップ完了通知フラグは、ステップ完了通知が発行された場合にTRUEになる。ステップ完了通知フラグがTRUEになると、エンジンの切替え処理が行われる。
エンジン実装コード132は、エンジンを実装するためのコード(プログラム)である。エンジン実装コード132は複数のコードブロックで構成される。エンジン実装コード132は、同じデータ処理を実行する2以上のエンジン(例えば、エンジン1A及びエンジン1B)に共通に設けられているプログラムコード(共通プログラムコード)である。エンジン実行管理部103は、エンジン実装コード132をエンジンごと(例えば、エンジン1Aごと、エンジン1Bごと)の個別のプログラムコードに変換する。
ブロック関数リスト131は、エンジン実装コード132の各ブロックの処理を実現する関数のリストである。
ブロック関数リスト131において、エンジンIDは、エンジンの識別子である。
ブロック番号は、エンジン実装コード132に含まれるブロックの識別子である。
関数のアドレスは、ブロックに含まれる関数のアドレスである。
演算結果格納メモリ140では、データ処理ごとに演算結果を格納するための専用のメモリ領域が確保されている。
データ処理を実行するエンジンが途中で切り替わっても、切替え後のエンジンが該当するデータ処理のメモリ領域にアクセスすることで、切替え前のエンジンの演算結果を利用することができる。
以下にて、本実施の形態に係るデータ処理実行装置100の動作例を説明する。
データ処理2はエンジン2Aで実行されるものとする。また、データ処理3はエンジン3Aで実行されるものとする。
データ処理2及びデータ処理3は、それぞれのデッドラインまでに完了可能である。
なお、エンジン2A、エンジン3A及び後述のエンジン1A及びエンジン2Bは、すべてCPU901により実現されるものとする。つまり、エンジン2A、エンジン3A、エンジン1A及びエンジン2Bは並列には処理されない。
データ処理2は実行途中であるが、データ処理1を優先するためにデータ処理2の実行は中断する。データ処理1はエンジン1Aで実行されるものとする。データ処理1の実行が完了するとデータ処理2の実行が再開する。ここで、データ処理1が実行されたため、データ処理2の残りをエンジン2Aで実行すると、データ処理2のデッドライン内にデータ処理2が完了しない。また、データ処理3のデッドライン内にデータ処理3も完了しない。
このため、本実施の形態に係るデータ処理実行装置100は、データ処理2及びデータ処理3の少なくともいずれかのエンジンを低精度のエンジンに切り替えて処理時間を短縮する。
低精度のエンジンへ切替えたため処理時間の短縮が図られ、データ処理2及びデータ処理3はそれぞれデッドライン内に完了することになった。
以下では、エンジン1Aとエンジン2AはFPGA905で動作するものとする。また、エンジン2Bとエンジン2Cとエンジン3BはCPU901で動作するものとする。
データ処理1及びデータ処理2のデッドラインはともに時刻500である。また、データ処理3のデッドラインは時刻1025である。データ処理1をデッドラインまでに完了するためには、FPGA905で動作するエンジン1Aでデータ処理1を実行することが必要である。このため、FPGA905上でデータ処理1とデータ処理2が競合する。データ処理1の方が優先度が高いので、FPGA905上でデータ処理2の実行を継続することはできない。FPGA905上でデータ処理1の実行が完了した後にFPGA905でデータ処理2の実行を再開するとデータ処理2はデッドライン内に完了しない。
例えば、図13に示すように、データ処理実行装置100は、データ処理2をエンジン2Cに実行させ、データ処理3をエンジン3Bに実行させるとデータ処理2とデータ処理3がデッドライン内に完了するものとする。本例では、エンジン2Cが引き継ぎエンジンに相当する。
この場合に、データ処理実行装置100は、FPGA905でのデータ処理2の実行を停止させ、FPGA905でエンジン1Aにデータ処理1を実行させる。CPU901ではエンジン3Bがデータ処理3を実行しているが、データ処理2の方がデータ処理3よりも優先度が高い。このため、データ処理実行装置100はCPU901でのデータ処理3の実行を停止させ、エンジン2Cにデータ処理2の実行を引き継がせる。そして、データ処理実行装置100は、データ処理2の完了後にエンジン3Bにデータ処理3の残りを実行させる。
このようにスケジューリングすることで、図8に示すように、データ処理1、データ処理2及びデータ処理3をそれぞれのデッドライン内に完了させることができる。
エンジン2AはFPGA905で動作するため、エンジン実行管理部103はFPGA実行部1042にエンジン2Aによるデータ処理2の実行を要求する(実行指令を出力する)。FPGA実行部1042は、FPGA905でエンジンを実行する機能である。
エンジン3BはCPU901で動作するため、エンジン実行管理部103はCPU実行部1041にエンジン3Bによるデータ処理3の実行を要求する(実行指令を出力する)。CPU実行部1041は、CPU901でエンジンを実行する機能である。
このため、エンジン選択部102は、データ処理1を実行してもデータ処理2とデータ処理3がデッドライン内に完了可能なエンジンの組合せを探索する。
データ処理2に対して選択可能なエンジンはエンジン2Bとエンジン2Cであり、データ処理3に対して選択可能なエンジンはエンジン3Bとエンジン3Cである。
このため、エンジン選択部102は、データ処理2のエンジンをエンジン2Cに切替えることを決定する。
各データ処理は複数のステップで構成される。時刻=150の時点では、FPGA905においてデータ処理2のステップ2を実行中である。FPGA905はステップが完了しないとデータ処理を停止させることができない。このため、エンジン1Aによるデータ処理1の実行はデータ処理2のステップ2の完了を待つ必要がある。
FPGA実行部1042は、データ処理2のステップ2の実行が完了した際に、エンジン実行管理部103にステップ2の完了を通知する(ステップ完了通知を出力する)。
ステップ2が完了したので、エンジン実行管理部103は、FPGA実行部1042にエンジン1Aによるデータ処理1の実行を要求する(実行指令を出力する)。
また、データ処理2をエンジン2Cで実行させるために、エンジン実行管理部103は、CPU実行部1041にエンジン3Bの実行の中断を要求する(中断指令を出力する)。なお、CPU901ではステップの完了を待たずにエンジンを停止させることができる。
更に、エンジン実行管理部103は、データ処理2をステップ3からエンジン2Cで実行するようCPU実行部1041に要求する(実行指令を出力する)。
エンジン実行管理部103は、データ処理2が完了したので、CPU実行部1041にデータ処理3をエンジン3Bで再開するよう要求する(再開要求を出力する)。
なお、図29の「H/WリソースID:2」の「ステップ開始時刻」には、疑似のステップ開始時刻が設定されている。つまり、現在時刻から残時間を算出できるように疑似のステップ開始時刻が設定されている(現在時刻(350)−ステップ1処理時間(200)+ステップ残処理時間(25)=175)。
エンジン選択部102は、以下の選択基準にて、適切なエンジンの組合せを選択する。
1)新たなデータ処理と既存のデータ処理(実行データ処理及び割当て済みデータ処理)が全て、各々のデッドライン内に完了する。
2)高い優先度のデータ処理ほど高い演算精度のエンジンを割り当てる。
図15において、二重枠で囲まれているエンジンがデータ処理に割り当てられているエンジンである。すなわち、データ処理1にはエンジン1Aが割り当てられている。データ処理2はエンジン2Bが割り当てられている。データ処理4はエンジン4Bが割り当てられている。データ処理5はエンジン5Aが割り当てられている。
図15の破線で囲んでいる部分は、後述する第1の組合せ抽出処理の範囲である。なお、データ処理4が発生した際にエンジン4Aを用いてもデータ処理4がデッドライン内に完了しないことが判明しているので、エンジン4Aは第1の組合せ抽出処理の範囲に含まれない。
具体的には、エンジン選択部102は、エンジン3A、エンジン4B及びエンジン5Aの組合せでデータ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択する。
データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択し、データ処理5を実行するエンジンをエンジン5Bに切り替えることを決定する。
データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択し、データ処理5を実行するエンジンをエンジン5Cに切り替えることを決定する。
データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Bを選択する。
データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Cを選択する。
つまり、エンジン選択部102は、エンジン2C、エンジン3A、エンジン4A及びエンジン5Aの組合せでデータ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。
データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択し、データ処理2を実行するエンジンをエンジン2Cに切替え、データ処理4を実行するエンジンをエンジン4Aに切り替えることを決定する。
データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択し、データ処理2を実行するエンジンをエンジン2Cに切替え、データ処理4を実行するエンジンをエンジン4Aに切替え、データ処理5を実行するエンジンをエンジン5Bに切り替えることを決定する。
データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択し、データ処理2を実行するエンジンをエンジン2Cに切替え、データ処理4を実行するエンジンをエンジン4Aに切替え、データ処理5を実行するエンジンをエンジン5Cに切り替えることを決定する。
以降、エンジン選択部102は、順次、以下の組合せを検討する。
エンジン2C、エンジン3A、エンジン4B、エンジン5B
エンジン2C、エンジン3A、エンジン4B、エンジン5C
エンジン2C、エンジン3B、エンジン4A、エンジン5A
エンジン2C、エンジン3B、エンジン4A、エンジン5B
エンジン2C、エンジン3B、エンジン4A、エンジン5C
エンジン2C、エンジン3B、エンジン4B、エンジン5A
エンジン2C、エンジン3B、エンジン4B、エンジン5B
エンジン2C、エンジン3B、エンジン4B、エンジン5C
エンジン2C、エンジン3C、エンジン4A、エンジン5A
エンジン2C、エンジン3C、エンジン4A、エンジン5B
エンジン2C、エンジン3C、エンジン4A、エンジン5C
エンジン2C、エンジン3C、エンジン4B、エンジン5A
エンジン2C、エンジン3C、エンジン4B、エンジン5B
エンジン2C、エンジン3C、エンジン4B、エンジン5C
つまり、エンジン選択部102は、エンジン1B、エンジン2A、エンジン3A、エンジン4A及びエンジン5Aの組合せでデータ処理1、データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。
データ処理1、データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択し、データ処理1を実行するエンジンをエンジン1Bに切替え、データ処理4を実行するエンジンをエンジン4Aに切り替えることを決定する。
データ処理1、データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択し、データ処理1を実行するエンジンをエンジン1Bに切替え、データ処理4を実行するエンジンをエンジン4Aに切替え、データ処理5を実行するエンジンをエンジン5Bに切り替えることを決定する。
データ処理1、データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択し、データ処理1を実行するエンジンをエンジン1Bに切替え、データ処理4を実行するエンジンをエンジン4Aに切替え、データ処理5を実行するエンジンをエンジン5Cに切り替えることを決定する。
以降、エンジン選択部102は、順次、以下の組合せを検討する。
エンジン1B、エンジン2A、エンジン3A、エンジン4B、エンジン5A
エンジン1B、エンジン2A、エンジン3A、エンジン4B、エンジン5B
エンジン1B、エンジン2A、エンジン3A、エンジン4B、エンジン5C
エンジン1B、エンジン2A、エンジン3B、エンジン4A、エンジン5A
エンジン1B、エンジン2A、エンジン3B、エンジン4A、エンジン5B
エンジン1B、エンジン2A、エンジン3B、エンジン4A、エンジン5C
エンジン1B、エンジン2A、エンジン3B、エンジン4B、エンジン5A
エンジン1B、エンジン2A、エンジン3B、エンジン4B、エンジン5B
エンジン1B、エンジン2A、エンジン3B、エンジン4B、エンジン5C
エンジン1B、エンジン2A、エンジン3C、エンジン4A、エンジン5A
エンジン1B、エンジン2A、エンジン3C、エンジン4A、エンジン5B
エンジン1B、エンジン2A、エンジン3C、エンジン4A、エンジン5C
エンジン1B、エンジン2A、エンジン3C、エンジン4B、エンジン5A
エンジン1B、エンジン2A、エンジン3C、エンジン4B、エンジン5B
エンジン1B、エンジン2A、エンジン3C、エンジン4B、エンジン5C
エンジン1B、エンジン2B、エンジン3A、エンジン4A、エンジン5A
エンジン1B、エンジン2B、エンジン3A、エンジン4A、エンジン5B
エンジン1B、エンジン2B、エンジン3A、エンジン4A、エンジン5C
エンジン1B、エンジン2B、エンジン3A、エンジン4B、エンジン5A
エンジン1B、エンジン2B、エンジン3A、エンジン4B、エンジン5B
エンジン1B、エンジン2B、エンジン3A、エンジン4B、エンジン5C
エンジン1B、エンジン2B、エンジン3B、エンジン4A、エンジン5A
エンジン1B、エンジン2B、エンジン3B、エンジン4A、エンジン5B
エンジン1B、エンジン2B、エンジン3B、エンジン4A、エンジン5C
エンジン1B、エンジン2B、エンジン3B、エンジン4B、エンジン5A
エンジン1B、エンジン2B、エンジン3B、エンジン4B、エンジン5B
エンジン1B、エンジン2B、エンジン3B、エンジン4B、エンジン5C
エンジン1B、エンジン2B、エンジン3C、エンジン4A、エンジン5A
エンジン1B、エンジン2B、エンジン3C、エンジン4A、エンジン5B
エンジン1B、エンジン2B、エンジン3C、エンジン4A、エンジン5C
エンジン1B、エンジン2B、エンジン3C、エンジン4B、エンジン5A
エンジン1B、エンジン2B、エンジン3C、エンジン4B、エンジン5B
エンジン1B、エンジン2B、エンジン3C、エンジン4B、エンジン5C
エンジン1B、エンジン2C、エンジン3A、エンジン4A、エンジン5A
エンジン1B、エンジン2C、エンジン3A、エンジン4A、エンジン5B
エンジン1B、エンジン2C、エンジン3A、エンジン4A、エンジン5C
エンジン1B、エンジン2C、エンジン3A、エンジン4B、エンジン5A
エンジン1B、エンジン2C、エンジン3A、エンジン4B、エンジン5B
エンジン1B、エンジン2C、エンジン3A、エンジン4B、エンジン5C
エンジン1B、エンジン2C、エンジン3B、エンジン4A、エンジン5A
エンジン1B、エンジン2C、エンジン3B、エンジン4A、エンジン5B
エンジン1B、エンジン2C、エンジン3B、エンジン4A、エンジン5C
エンジン1B、エンジン2C、エンジン3B、エンジン4B、エンジン5A
エンジン1B、エンジン2C、エンジン3B、エンジン4B、エンジン5B
エンジン1B、エンジン2C、エンジン3B、エンジン4B、エンジン5C
エンジン1B、エンジン2C、エンジン3C、エンジン4A、エンジン5A
エンジン1B、エンジン2C、エンジン3C、エンジン4A、エンジン5B
エンジン1B、エンジン2C、エンジン3C、エンジン4A、エンジン5C
エンジン1B、エンジン2C、エンジン3C、エンジン4B、エンジン5A
エンジン1B、エンジン2C、エンジン3C、エンジン4B、エンジン5B
エンジン1B、エンジン2C、エンジン3C、エンジン4B、エンジン5C
図18は、エンジン選択部102の全体の動作フローを示す。
図19は、図18に示す「第1の組合せ抽出処理」(ステップS11)の詳細を示す。
図20は、図18に示す「第2の組合せ抽出処理」(ステップS14)の詳細を示す。
第1の組合せ処理の詳細は、図19を参照して後述する。
組合せが抽出できた場合(ステップS12でYES)は、処理がステップS17に進む。
第2の組合せ処理の詳細は、図20を参照して後述する。
組合せが抽出できた場合(ステップS15でYES)は、処理がステップS17に進む。
一方、組合せを抽出できなかった場合(ステップS15でNO)は、処理がステップS16に進む。
例えば、エンジン選択部102は、エラー処理として、エラーを報知して、データ処理実行装置100を安全に停止させる。
図14に示すように、エンジン選択部102は、状況によって実行要求のみを出力することもあるし、実行要求と切替え要求とを出力することもある。
エンジン選択部102は、エンジンリスト110を参照して、新たなデータ処理に対応する最も精度の高いエンジンを選択する。
なお、ステップS1101で選択されたエンジンを選択エンジンという。
一方、新たなデータ処理が新たなデータ処理のデッドライン内に完了しない場合(ステップS1102でNO)は、処理がステップS1107に進む。
そして、エンジン選択部102は、次に優先度が低いデータ処理についてステップS1102以降の処理を行う。
この結果、エンジン選択部102は、図18のステップS17において、ステップS1103で記録した抽出結果に基づき、実行要求(及び切替え要求)を出力する。
その後、エンジン選択部102は、新たな選択エンジンを用いてステップS1102以降の処理を行う。
選択エンジンの次に精度が低いエンジンが存在するのであれば、処理がステップS1306に進み、選択エンジンの次に精度が低いエンジンが存在しないのであれば、処理がステップS1303に進む。
新たなデータ処理の優先度が最も高い場合は、処理がステップS1304に進む。
一方、新たなデータ処理の優先度が最も高い優先度ではない場合は、処理がステップS1305に進む。
なお、抽出結果の記録がない場合は、エンジン選択部102は、現在の選択エンジンを再度、選択エンジンとして指定する。
その後、エンジン選択部102は、新たな選択エンジンを用いてステップS1307以降の処理を行う。
新たなデータ処理がそのデッドライン内に完了する場合は、処理がステップS1308に進む。一方、新たなデータ処理がそのデッドライン内に完了しない場合は、処理がステップS1302に進む。
新たなデータ処理よりも優先度が低いデータ処理があれば、処理がステップS1310に進む。一方。新たなデータ処理よりも優先度が低いデータ処理がない場合は、処理がステップS1311に進む。
実行要求を受信した場合は、処理がステップS23に進む。ステップ完了通知を受信した場合は、処理が図22のステップS33に進む。実行完了通知を受信した場合は、処理が図22のステップS37に進む。切替え要求を受信した場合は、処理が図23のステップS41に進む。
ハードウェアリソースが現在動作中であれば、処理がステップS26に進む。一方、ハードウェアリソースが現在動作中でなければ、処理がステップS24に進む。
実行要求に記載されているデータ処理の優先度の方が高ければ、処理がステップS27に進む。一方、実行要求に記載されているデータ処理の優先度の方が低ければ、処理がステップS32に進む。
中断可否フラグがTRUEである場合は、処理がステップS28に進む。
一方、中断可否フラグがFALSEである場合は、処理がステップS30に進む。
切替えフラグがTRUEである場合は、処理がステップS37に進む。
切替えフラグがFALSEである場合は、処理がステップS36に進む。
実行可能状態のデータ処理がある場合は、処理がステップS38に進む。一方、実行可能状態のデータ処理がない場合は、処理がステップS39に進む。
その後、処理は図21のステップS25に進む。
その後、処理は図21のステップS21に進む。
切替え要求の対象のデータ処理が実行中であれば、処理がステップS42に進む。
一方、切替え要求の対象のデータ処理が実行中でなければ、処理がステップS44に進む。
その後、処理は図21のステップS21に進む。
切替え要求の対象のデータ処理がステップ実行の途中で中断している状態である場合は、処理がステップS46に進む。
一方、切替え要求の対象のデータ処理がステップ実行の途中で中断している状態ではない場合は、処理がステップS45に進む。
ステップS46では、エンジン実行管理部103は、実行データ処理リスト122において、ステップ実行の途中で中断しているデータ処理の切替えフラグ及びステップ完了通知フラグをTRUEにする。
その後、処理は図21のステップS21に進む。
当該ステップが最終ステップであれば、処理がステップS53に進む。
当該ステップが最終ステップでなければ、処理がステップS54に進む。
ステップ完了通知フラグがTRUEである場合は、処理がステップS55に進む。
一方、ステップ完了通知フラグがFALSEである場合は、処理がステップS56に進む。
その後、処理はステップS51に進む。
以上のように、本実施の形態によれば、突発イベントにより新たなデータ処理が発生しても、新たなデータ処理及び既存のデータ処理のそれぞれをデッドライン内に完了することができる。このため、本実施の形態によれば、データ処理のスケジューリングを状況の変化に応じて柔軟に行うことができる。
本実施の形態では、主に実施の形態1との差異を説明する。
なお、以下で説明していない事項は、実施の形態1と同様である。
図2と比較して、図32では、変換処理部106、変換処理時間リスト150及びエンジンインタフェースリスト160が追加されている。エンジンインタフェースリスト160は、エンジンI/Fリスト160とも表記する。
他の要素は、図2に示したものと同じである。
また、図34は、変換処理部106による変換処理の例を示す。
また、図34に示すように、エンジン5A、エンジン5B及びエンジン5Cでは、演算に用いる変数値の数、変数の型が異なる。このようなエンジンごとの変数値の数及び変数の型は、エンジンインタフェースリスト160に定義されている。
データ処理5の全てのステップが同一のエンジンで実行される場合は、変換処理部106による変換処理は必要ない。しかし、ステップ1がエンジン5Aで実行され、ステップ2がエンジン5Bで実行されるというような、前後のステップが異なるエンジンで実行される場合は変換処理部106による変換処理が必要である。つまり、変換処理部106が、先行するステップでの演算結果を後続のステップを実行するエンジンで用いる変数値の数及び変数の型に変換する必要がある。
この場合は、エンジン5Aの演算結果として、図34に示すように、演算結果格納メモリ140に、浮動小数点型のval1の4つの値が格納され、浮動小数点型のval2の4つの値が格納される。
エンジンインタフェースリスト160に示すように、エンジン5Bが用いるval1の値は4つであり、val2の値は3つであり、変数の型は32ビット固定小数点である。
エンジン実行管理部103は、エンジン5Bが実行するステップの実装関数(エンジンB向けの固有のプログラムコード)を呼び出す前に、変換処理部106を呼び出す。変換処理部106は、演算結果格納メモリ140に格納されているエンジン5Aの演算結果をエンジン5Bのインタフェース仕様に合致するように変換する。
具体的には、変換処理部106は、図34に示すように、val1とval2の型を32ビット固定小数点に変換し、また、val2の値を1つ減らす。この結果、エンジン5Bは、演算結果格納メモリ140に格納されている演算結果を用いることができる。
つまり、本実施の形態では、エンジン選択部102は、変換処理に要する時間を含めて実行データ処理、新たなデータ処理及び割当て済みデータ処理を各々のデッドラインまでに完了させることができるエンジンを、引き継ぎエンジンとして選択する。
図35は、変換処理時間リスト150の例を示す。各数値は、変換処理に要する時間を示す。また、各数値は、図5のステップ開始時刻と同様にカウント値で表される。
図35の例では、エンジン5Aからエンジン5Bへの切替えの場合は、変換処理部106の変換処理に要する時間は3である。
変換処理部106は、変換処理時間リスト150を参照することで、変換処理部106の変換処理に要する時間を得る。
あるいは、これら2つの実施の形態のうち、1つを部分的に実施しても構わない。
あるいは、これら2つの実施の形態を部分的に組み合わせて実施しても構わない。
なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
Claims (8)
- 各々がデータ処理を実行する、演算精度が異なる複数のエンジンと、
前記複数のエンジンのうちのいずれかのエンジンが実行しているデータ処理である実行データ処理と未実行であるが既にエンジンが割り当てられているデータ処理である割当て済みデータ処理とが存在する状況で新たなデータ処理が発生し、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理の各々に優先度が設けられている場合に、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理が各々の完了期限までに完了し、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理のうち優先度が高いデータ処理ほど演算精度が高いエンジンで実行されるように、前記複数のエンジンから、前記実行データ処理を実行させる新たなエンジンを選択し、前記割当て済みデータ処理を実行させる新たなエンジンを選択し、前記新たなデータ処理を実行させるエンジンを選択するエンジン選択部と、
前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理の各々を、前記エンジン選択部により選択されたエンジンに実行させる制御部とを有するデータ処理実行装置。 - 前記エンジン選択部は、
前記実行データ処理を実行している実行エンジンによる前記実行データ処理の実行を継続していると前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理の少なくともいずれかが各々の完了期限までに完了しない場合に、
前記実行データ処理を実行させるエンジンとして前記実行エンジン以外のエンジンを選択し、前記割当て済みデータ処理を実行させるエンジンとして前記割当て済みデータ処理に割当て済みのエンジン以外のエンジンを選択する請求項1に記載のデータ処理実行装置。 - 前記エンジン選択部は、
前記実行データ処理と、前記割当て済みデータ処理と、前記実行データ処理以外の実行中のデータ処理である他の実行データ処理が存在している状況で前記新たなデータ処理が発生し、前記実行データ処理、前記割当て済みデータ処理、前記他の実行データ処理及び前記新たなデータ処理の各々に優先度が設けられている場合に、前記実行データ処理、前記割当て済みデータ処理、前記他の実行データ処理及び前記新たなデータ処理が各々の完了期限までに完了し、前記実行データ処理、前記割当て済みデータ処理、前記他の実行データ処理及び前記新たなデータ処理のうち優先度が高いデータ処理ほど演算精度が高いエンジンで実行されるように、前記複数のエンジンから、前記実行データ処理を実行させる新たなエンジンを選択し、前記割当て済みデータ処理を実行させる新たなエンジンを選択し、前記他の実行データ処理を実行させる新たなエンジンを選択し、前記新たなデータ処理を実行させるエンジンを選択し、
前記制御部は、
前記実行データ処理、前記割当て済みデータ処理、前記他の実行データ処理及び前記新たなデータ処理の各々を、前記エンジン選択部により選択されたエンジンに実行させる請求項1に記載のデータ処理実行装置。 - 前記制御部は、
前記実行データ処理を実行させる前記新たなエンジンが選択される前は、前記実行データ処理を実行可能なエンジンに共通に設けられている共通プログラムコードを変換して前記新たなエンジンの選択前に前記実行データ処理を実行させる実行エンジン向けの個別のプログラムコードを生成し、生成した前記実行エンジン向けの個別のプログラムコードを用いて前記実行エンジンに前記実行データ処理を実行させ、
前記実行データ処理を実行させる前記新たなエンジンが選択された場合は、前記共通プログラムコードを変換して前記新たなエンジン向けの個別のプログラムコードを生成し、生成した前記新たなエンジン向けの個別のプログラムコードを用いて前記新たなエンジンに前記実行データ処理を引き継がせる請求項1に記載のデータ処理実行装置。 - 前記データ処理実行装置は、更に、
前記実行データ処理を実行している実行エンジンと前記新たなエンジンとの間でインタフェース仕様が異なる場合に、前記インタフェース仕様の違いを吸収する変換処理を行う変換処理部を有する請求項1に記載のデータ処理実行装置。 - 前記エンジン選択部は、
前記実行エンジンによる前記実行データ処理の実行を継続していると前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理の少なくともいずれかが各々の完了期限までに完了しない場合に、
前記変換処理に要する時間を含めて前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理が各々の完了期限までに完了するように、前記実行データ処理を実行させる新たなエンジンを選択し、前記割当て済みデータ処理を実行させる新たなエンジンを選択し、前記新たなデータ処理を実行させるエンジンを選択する請求項5に記載のデータ処理実行装置。 - 各々がデータ処理を実行する、演算精度が異なる複数のエンジンを有するコンピュータが、前記複数のエンジンのうちのいずれかのエンジンが実行しているデータ処理である実行データ処理と未実行であるが既にエンジンが割り当てられているデータ処理である割当て済みデータ処理とが存在する状況で新たなデータ処理が発生し、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理の各々に優先度が設けられている場合に、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理が各々の完了期限までに完了し、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理のうち優先度が高いデータ処理ほど演算精度が高いエンジンで実行されるように、前記複数のエンジンから、前記実行データ処理を実行させる新たなエンジンを選択し、前記割当て済みデータ処理を実行させる新たなエンジンを選択し、前記新たなデータ処理を実行させるエンジンを選択するエンジン選択処理と、
前記コンピュータが、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理の各々を、前記エンジン選択処理により選択されたエンジンに実行させる制御処理とを有するデータ処理実行方法。 - 各々がデータ処理を実行する、演算精度が異なる複数のエンジンを有するコンピュータに、
前記複数のエンジンのうちのいずれかのエンジンが実行しているデータ処理である実行データ処理と未実行であるが既にエンジンが割り当てられているデータ処理である割当て済みデータ処理とが存在する状況で新たなデータ処理が発生し、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理の各々に優先度が設けられている場合に、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理が各々の完了期限までに完了し、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理のうち優先度が高いデータ処理ほど演算精度が高いエンジンで実行されるように、前記複数のエンジンから、前記実行データ処理を実行させる新たなエンジンを選択し、前記割当て済みデータ処理を実行させる新たなエンジンを選択し、前記新たなデータ処理を実行させるエンジンを選択するエンジン選択処理と、
前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理の各々を、前記エンジン選択処理により選択されたエンジンに実行させる制御処理とを実行させるデータ処理実行プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2019/048681 WO2021117186A1 (ja) | 2019-12-12 | 2019-12-12 | データ処理実行装置、データ処理実行方法及びデータ処理実行プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6815563B1 true JP6815563B1 (ja) | 2021-01-20 |
JPWO2021117186A1 JPWO2021117186A1 (ja) | 2021-12-09 |
Family
ID=74164598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020526344A Active JP6815563B1 (ja) | 2019-12-12 | 2019-12-12 | データ処理実行装置、データ処理実行方法及びデータ処理実行プログラム |
Country Status (7)
Country | Link |
---|---|
US (1) | US20220229696A1 (ja) |
JP (1) | JP6815563B1 (ja) |
KR (1) | KR102467126B1 (ja) |
CN (1) | CN114761927A (ja) |
DE (1) | DE112019007851T5 (ja) |
TW (1) | TWI787605B (ja) |
WO (1) | WO2021117186A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115796925B (zh) * | 2023-02-08 | 2023-04-25 | 北京装库创意科技有限公司 | 一种基于云平台的销售数据统计方法及系统 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3660376B2 (ja) * | 1994-08-08 | 2005-06-15 | 株式会社日立製作所 | 分散処理システムおよび分散処理システムにおける負荷分散方法 |
JPH08212084A (ja) * | 1995-02-02 | 1996-08-20 | Hitachi Ltd | 情報処理装置 |
US8028292B2 (en) * | 2004-02-20 | 2011-09-27 | Sony Computer Entertainment Inc. | Processor task migration over a network in a multi-processor system |
JP4523921B2 (ja) * | 2006-02-24 | 2010-08-11 | 三菱電機株式会社 | 計算機リソース動的制御装置 |
JP2009048252A (ja) * | 2007-08-14 | 2009-03-05 | Oki Electric Ind Co Ltd | プログラム変換装置及びコンパイラプログラム |
JP5036523B2 (ja) * | 2007-12-21 | 2012-09-26 | 三菱電機株式会社 | プログラム並列化装置 |
KR101572879B1 (ko) * | 2009-04-29 | 2015-12-01 | 삼성전자주식회사 | 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 |
JP2010027062A (ja) * | 2009-08-21 | 2010-02-04 | Hitachi Ltd | 分散制御システム |
US8776066B2 (en) * | 2009-11-30 | 2014-07-08 | International Business Machines Corporation | Managing task execution on accelerators |
WO2012105174A1 (ja) * | 2011-01-31 | 2012-08-09 | パナソニック株式会社 | プログラム生成装置、プログラム生成方法、プロセッサ装置及びマルチプロセッサシステム |
US8683468B2 (en) * | 2011-05-16 | 2014-03-25 | Advanced Micro Devices, Inc. | Automatic kernel migration for heterogeneous cores |
US9218206B2 (en) * | 2011-06-20 | 2015-12-22 | Microsoft Technology Licensing, Llc | Memory management model and interface for new applications |
US8572614B2 (en) * | 2011-06-30 | 2013-10-29 | International Business Machines Corporation | Processing workloads using a processor hierarchy system |
US9875187B2 (en) * | 2014-12-10 | 2018-01-23 | Intel Corporation | Interruption of a page miss handler |
JP2018092311A (ja) * | 2016-12-01 | 2018-06-14 | キヤノン株式会社 | 情報処理装置、その制御方法、及びプログラム |
KR102463184B1 (ko) * | 2016-12-13 | 2022-11-03 | 현대자동차 주식회사 | 통합 원격 제어장치 및 이를 이용한 원격 제어방법이 구현된 컴퓨터로 판독 가능한 기록매체 |
JP6756661B2 (ja) | 2017-04-28 | 2020-09-16 | 日立オートモティブシステムズ株式会社 | 車両電子制御装置 |
WO2020040599A1 (en) * | 2018-08-23 | 2020-02-27 | Samsung Electronics Co., Ltd. | Electronic device and operating method thereof of processing neural network model by using plurality of processors |
-
2019
- 2019-12-12 DE DE112019007851.8T patent/DE112019007851T5/de active Pending
- 2019-12-12 CN CN201980102696.XA patent/CN114761927A/zh active Pending
- 2019-12-12 KR KR1020227017986A patent/KR102467126B1/ko active IP Right Grant
- 2019-12-12 JP JP2020526344A patent/JP6815563B1/ja active Active
- 2019-12-12 WO PCT/JP2019/048681 patent/WO2021117186A1/ja active Application Filing
-
2020
- 2020-05-07 TW TW109115177A patent/TWI787605B/zh active
-
2022
- 2022-04-08 US US17/716,780 patent/US20220229696A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR102467126B1 (ko) | 2022-11-14 |
US20220229696A1 (en) | 2022-07-21 |
KR20220079692A (ko) | 2022-06-13 |
JPWO2021117186A1 (ja) | 2021-12-09 |
CN114761927A (zh) | 2022-07-15 |
WO2021117186A1 (ja) | 2021-06-17 |
TW202123005A (zh) | 2021-06-16 |
TWI787605B (zh) | 2022-12-21 |
DE112019007851T5 (de) | 2022-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2518998B2 (ja) | 多重タスク処理オペレ―ティング・システム及びそのコンピュ―タの動作方法 | |
TWI416413B (zh) | Work processing device | |
JP5173714B2 (ja) | マルチスレッドプロセッサ及びその割り込み処理方法 | |
KR20050016170A (ko) | 실시간 동작 수행방법 및 시스템 | |
JP6815563B1 (ja) | データ処理実行装置、データ処理実行方法及びデータ処理実行プログラム | |
JP2008522277A (ja) | 優先度の付けられたタスク間の効率的な切り換え | |
CN112579162A (zh) | 异构isa平台上硬件和软件协调的对高级特征选入的方法 | |
JP2001117786A (ja) | プロセススケジューリング装置およびプロセススケジューリング方法 | |
JP2003122586A (ja) | タスク・スケジューリング装置 | |
JP6669705B2 (ja) | 数値制御装置 | |
JP5299869B2 (ja) | コンピュータマイクロジョブ | |
JP3840045B2 (ja) | データ処理方法及びデータ処理装置 | |
JPH05108380A (ja) | データ処理システム | |
JP5240200B2 (ja) | データ処理装置および方法 | |
JP5056346B2 (ja) | 情報処理装置、情報処理システム、仮想サーバの移動処理の制御方法、及び、プログラム | |
JP4962026B2 (ja) | プロセス管理機能をもつユーザレベルプロセス制御装置、その方法及びそのプログラム | |
JP6859755B2 (ja) | 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム | |
JP3763452B2 (ja) | 情報処理システム、オブジェクトの優先度管理方法、オペレーティングシステム、記録媒体 | |
JP2004234643A (ja) | プロセススケジューリング装置、プロセススケジューリング方法、プロセススケジューリングのためのプログラム、及びプロセススケジューリングのためのプログラムを記録した記録媒体 | |
JP2006244293A (ja) | タスク実行制御方法及び装置 | |
JPH0822396A (ja) | タスク実行管理装置とその方法 | |
JP3838880B2 (ja) | プロセス管理方法及びプロセス管理システム | |
JP2010186301A (ja) | プログラム変換方法、及び装置 | |
CN114443255A (zh) | 一种线程调用方法和装置 | |
JPH0721111A (ja) | 優先順位決定システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200512 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200512 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20200512 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20200821 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200901 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200929 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20201124 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20201222 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6815563 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |