WO2019188175A1 - Deadlock avoidance method and deadlock avoidance device - Google Patents
Deadlock avoidance method and deadlock avoidance device Download PDFInfo
- Publication number
- WO2019188175A1 WO2019188175A1 PCT/JP2019/009627 JP2019009627W WO2019188175A1 WO 2019188175 A1 WO2019188175 A1 WO 2019188175A1 JP 2019009627 W JP2019009627 W JP 2019009627W WO 2019188175 A1 WO2019188175 A1 WO 2019188175A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- deadlock
- processing
- provisional
- graph structure
- start node
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Definitions
- the present disclosure relates to a deadlock avoidance method and a deadlock avoidance device that avoid a deadlock in a processor that executes a program described in a graph structure.
- Patent Document 1 discloses a method for avoiding a deadlock that occurs with interrupt processing.
- Patent Document 1 discloses that a deadlock is avoided in a processor system that performs processing on a coprocessor by interrupt processing during execution of a coprocessor instruction.
- Patent Document 1 it is not possible to avoid a deadlock unique to a processor that operates by dividing a program into data and processing into a graph structure and reading it.
- This disclosure is intended to provide a deadlock avoidance method and a deadlock avoidance device that avoid a deadlock in a processor that executes a program described in a graph structure.
- the present disclosure relates to a deadlock avoidance method for avoiding a deadlock in a processor that executes a program described in a graph structure.
- a program having a graph structure an input / output buffer loops in units of buffers and apparently becomes a deadlock.
- a process start node for starting the process at the provisional deadlock point is specified, and a start specifying process for specifying a series of processes to be started from the process start node is executed.
- the present disclosure also relates to a deadlock avoidance device that avoids deadlock in a processor that executes a program described in a graph structure.
- a program having a graph structure an input / output buffer is looped in units of buffers and apparently deadlocks.
- the deadlock elimination unit identifies a process start node that starts processing at the provisional deadlock location, and executes a start identification process that identifies a series of processes to be started from the process start node.
- FIG. 1 is a diagram for explaining parallel processing which is a premise of the present embodiment.
- FIG. 2 is a diagram showing a system configuration example for executing the parallel processing shown in FIG.
- FIG. 3 is a diagram illustrating a configuration example of the DFP used in FIG.
- FIG. 4 is a diagram for explaining a functional configuration example of the compiler.
- FIG. 5 is a diagram for explaining an example of deadlock avoidance.
- FIG. 6 is a diagram for explaining an example of deadlock avoidance.
- FIG. 7 is a diagram for explaining an example of deadlock avoidance.
- FIG. 8 is a diagram for explaining an example of deadlock avoidance.
- FIG. 1A shows program code described in a graph structure
- FIG. 1B shows the state of a thread
- FIG. 1C shows the state of parallel processing. .
- the program to be processed in this embodiment has a graph structure in which data and processing are divided. This graph structure maintains the task parallelism and graph parallelism of the program.
- Parallel execution as shown in FIG. 1C can be performed on a large number of threads shown in FIG. 1B by dynamic register placement and thread scheduling by hardware. By dynamically allocating register resources during execution, a plurality of threads can be executed in parallel for different instruction streams.
- a data processing system 2 which is a system configuration example including a DFP (Data Flow Processor) 10 as an accelerator for performing dynamic register placement and thread scheduling, will be described with reference to FIG.
- DFP Data Flow Processor
- the data processing system 2 includes a DFP 10, an event handler 20, a host CPU 21, a ROM 22, a RAM 23, an external interface 24, and a system bus 25.
- the host CPU 21 is an arithmetic unit that mainly performs data processing.
- the host CPU 21 supports the OS.
- the event handler 20 is a part that generates an interrupt process.
- ROM 22 is a read-only memory.
- the RAM 23 is a read / write memory.
- the external interface 24 is an interface for exchanging information with the outside of the data processing system 2.
- the system bus 25 is for transmitting and receiving information between the DFP 10, the host CPU 21, the ROM 22, the RAM 23, and the external interface 24.
- the DFP 10 is positioned as an individual master provided to cope with the heavy computation load of the host CPU 21.
- the DFP 10 is configured to support the interrupt generated by the event handler 20.
- the DFP 10 includes a command unit 12, a thread scheduler 14, an execution core 16, and a memory subsystem 18.
- the command unit 12 is configured to be able to communicate information with the config interface.
- the command unit 12 also functions as a command buffer.
- the thread scheduler 14 is a part that schedules processing of a large number of threads as exemplified in FIG.
- the thread scheduler 14 can perform scheduling across threads.
- the execution core 16 has four processing elements, PE # 0, PE # 1, PE # 2, and PE # 3.
- the execution core 16 has a number of pipelines that can be scheduled independently.
- the memory subsystem 18 includes an arbiter 181, an L1 cache 18a, and an L2 cache 18b.
- the memory subsystem 18 is configured to allow information communication between the system bus interface and the ROM interface.
- a compiler 50 as an example of the deadlock avoidance device of the present disclosure will be described with reference to FIG.
- the embodiment of the deadlock avoidance device according to the present disclosure is not limited to the compiler 50, and if the program described in the graph structure illustrated in FIG.
- the compiler 50 includes a graph structure analysis unit 501 and a deadlock elimination unit 502 as functional components.
- the graph structure analysis unit 501 is a part for extracting a provisional deadlock portion where an input / output buffer loops in buffer units and apparently becomes a deadlock in a program described in a graph structure.
- the graph structure analysis unit 501 extracts a location as shown in FIG. 5 as a temporary deadlock location where the input / output buffer loops in buffer units and apparently becomes a deadlock (graph structure analysis step).
- the deadlock elimination unit 502 is a part for eliminating deadlock at the provisional deadlock location.
- the deadlock elimination unit 502 identifies a process start node that starts processing at the provisional deadlock location, and executes a start identification process that identifies a series of processes to be started from the process start node (deadlock resolution step). .
- the deadlock canceling unit 502 executes the start specifying process, so that the deadlock state is canceled and the process illustrated in FIG. 6 can be performed.
- start instruction information for the function start node func1 is added so that the process starts from the process start node func1.
- a kick command is used as the start instruction information.
- process order information for instructing the order of the process is given so as to start the process from func1, which is the process start node.
- the present embodiment is a deadlock avoidance method for avoiding a deadlock in a processor that executes a program described in a graph structure.
- the input / output buffer is a buffer unit.
- a graph structure analysis step for extracting a provisional deadlock portion that loops and becomes an apparent deadlock, and a deadlock elimination step for eliminating a deadlock at the provisional deadlock portion are provided.
- a process start node for starting the process at the provisional deadlock point is specified, and a start specifying process for specifying a series of processes to be started from the process start node is executed.
- a device If considered as a device, it is a deadlock avoidance device that avoids deadlock in a processor that executes a program described in a graph structure.
- a graph structure analysis unit 501 that extracts a provisional deadlock location that becomes a deadlock, and a deadlock elimination unit 502 that eliminates a deadlock at the provisional deadlock location.
- the deadlock elimination unit 502 identifies a process start node that starts processing at the provisional deadlock location, and executes a start identification process that identifies a series of processes to be started from the process start node.
- start instruction information for the process start node can be given so as to start the process from the process start node.
- the deadlock elimination unit 502 can give start instruction information to the process start node so that the start specifying process starts the process from the process start node.
- the deadlock elimination unit 502 can add processing order information that instructs the processing order so that the processing is started from the processing start node in the start specifying processing. In this way, by adding the processing order information, the processing order can be specified, and parallel processing becomes possible.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
A processor for executing a program in a graph structure is provided with: a graph structure analysis unit (501) that extracts a provisional deadlock point where input/output buffers loop in buffer units and is seemingly in deadlock; and a deadlock elimination unit (502) that eliminates the deadlock in the provisional deadlock point. The deadlock elimination unit (502) identifies a processing start node at which processing is started in the provisional deadlock point, and carries out a start identification process for executing identification so as to start a series of processing from the processing start node.
Description
本出願は、2018年3月30日に出願された日本国特許出願2018-068429号に基づくものであって、その優先権の利益を主張するものであり、その特許出願の全ての内容が、参照により本明細書に組み込まれる。
This application is based on Japanese Patent Application No. 2018-068429 filed on March 30, 2018, and claims the benefit of its priority. Which is incorporated herein by reference.
本開示は、グラフ構造で記述されたプログラムを実行するプロセッサにおけるデッドロックを回避するデッドロック回避方法及びデッドロック回避装置に関する。
The present disclosure relates to a deadlock avoidance method and a deadlock avoidance device that avoid a deadlock in a processor that executes a program described in a graph structure.
プログラムにおいて、2つ以上の処理単位が互いの処理終了を待ち、結果としてどの処理も先に進めなくなってしまうデッドロックを回避するため、デッドロックが発生する場面に応じたデッドロック回避方法が提案されている。下記特許文献1では、割り込み処理に伴って発生するデッドロックを回避する方法が開示されている。
In a program, a deadlock avoidance method according to the situation where a deadlock occurs is proposed in order to avoid a deadlock in which two or more processing units wait for the end of each other's processing and as a result no processing can proceed further Has been. Patent Document 1 below discloses a method for avoiding a deadlock that occurs with interrupt processing.
特許文献1では、コプロセッサ命令の実行中に割り込み処理によってコプロセッサに対して処理を行うプロセッサシステムにおいて、デッドロックを回避することについては開示がある。
Patent Document 1 discloses that a deadlock is avoided in a processor system that performs processing on a coprocessor by interrupt processing during execution of a coprocessor instruction.
しかしながら、特許文献1に記載の発明では、プログラムをデータと処理とに分割してグラフ構造とし、それを読み込むことで動作するプロセッサ特有のデッドロックを回避することはできない。
However, in the invention described in Patent Document 1, it is not possible to avoid a deadlock unique to a processor that operates by dividing a program into data and processing into a graph structure and reading it.
本開示は、グラフ構造で記述されたプログラムを実行するプロセッサにおいてデッドロックを回避するデッドロック回避方法及びデッドロック回避装置を提供することを目的とする。
This disclosure is intended to provide a deadlock avoidance method and a deadlock avoidance device that avoid a deadlock in a processor that executes a program described in a graph structure.
本開示は、グラフ構造で記述されたプログラムを実行するプロセッサにおけるデッドロックを回避するデッドロック回避方法であって、グラフ構造のプログラムにおいて、入出力バッファがバッファ単位でループし見かけ上デッドロックとなる暫定デッドロック箇所を抽出するグラフ構造解析ステップと、暫定デッドロック箇所におけるデッドロックを解消するデッドロック解消ステップと、を備えている。デッドロック解消ステップにおいて、暫定デッドロック箇所において処理を開始する処理開始ノードを特定し、処理開始ノードから一連の処理が開始されるように特定する開始特定処理を実行する。
The present disclosure relates to a deadlock avoidance method for avoiding a deadlock in a processor that executes a program described in a graph structure. In a program having a graph structure, an input / output buffer loops in units of buffers and apparently becomes a deadlock. A graph structure analysis step for extracting a provisional deadlock location; and a deadlock elimination step for eliminating a deadlock at the provisional deadlock location. In the deadlock elimination step, a process start node for starting the process at the provisional deadlock point is specified, and a start specifying process for specifying a series of processes to be started from the process start node is executed.
また本開示は、グラフ構造で記述されたプログラムを実行するプロセッサにおけるデッドロックを回避するデッドロック回避装置であって、グラフ構造のプログラムにおいて、入出力バッファがバッファ単位でループし見かけ上デッドロックとなる暫定デッドロック箇所を抽出するグラフ構造解析部と、暫定デッドロック箇所におけるデッドロックを解消するデッドロック解消部と、を備えている。デッドロック解消部は、暫定デッドロック箇所において処理を開始する処理開始ノードを特定し、処理開始ノードから一連の処理が開始されるように特定する開始特定処理を実行する。
The present disclosure also relates to a deadlock avoidance device that avoids deadlock in a processor that executes a program described in a graph structure. In a program having a graph structure, an input / output buffer is looped in units of buffers and apparently deadlocks. A graph structure analysis unit for extracting a provisional deadlock location, and a deadlock elimination unit for eliminating a deadlock at the provisional deadlock location. The deadlock elimination unit identifies a process start node that starts processing at the provisional deadlock location, and executes a start identification process that identifies a series of processes to be started from the process start node.
処理開始ノードを特定し、その処理開始ノードから一連の処理が開始するように処理することで、入出力バッファがバッファ単位でループしている場合であっても、適切な処理準を定義することができ、見かけ上のデッドロックを回避して並列実行することができる。
By specifying a process start node and processing so that a series of processes start from that process start node, even if the input / output buffer is looped in units of buffers, define an appropriate process level Can be executed in parallel while avoiding apparent deadlocks.
以下、添付図面を参照しながら本実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
Hereinafter, the present embodiment will be described with reference to the accompanying drawings. In order to facilitate the understanding of the description, the same constituent elements in the drawings will be denoted by the same reference numerals as much as possible, and redundant description will be omitted.
図1(A)は、グラフ構造で記述されたプログラムコードを示しており、図1(B)は、スレッドの状態を示しており、図1(C)は、並列処理の状況を示している。
FIG. 1A shows program code described in a graph structure, FIG. 1B shows the state of a thread, and FIG. 1C shows the state of parallel processing. .
図1(A)に示されるように、本実施形態が処理対象とするプログラムは、データと処理とが分割されているグラフ構造を有している。このグラフ構造は、プログラムのタスク並列性、グラフ並列性を保持している。
As shown in FIG. 1A, the program to be processed in this embodiment has a graph structure in which data and processing are divided. This graph structure maintains the task parallelism and graph parallelism of the program.
図1(A)に示されるプログラムコードに対して、コンパイラによる自動ベクトル化とグラフ構造の抽出を行うと、図1(B)に示されるような大量のスレッドを生成することができる。
1) When automatic vectorization and graph structure extraction are performed on the program code shown in FIG. 1A by a compiler, a large number of threads as shown in FIG. 1B can be generated.
図1(B)に示される多量のスレッドに対して、ハードウェアによる動的レジスタ配置とスレッド・スケジューリングにより、図1(C)に示されるような並列実行を行うことができる。実行中にレジスタ資源を動的配置することで、異なる命令ストリームに対しても複数のスレッドを並列実行することができる。
1) Parallel execution as shown in FIG. 1C can be performed on a large number of threads shown in FIG. 1B by dynamic register placement and thread scheduling by hardware. By dynamically allocating register resources during execution, a plurality of threads can be executed in parallel for different instruction streams.
続いて図2を参照しながら、動的レジスタ配置及びスレッド・スケジューリングを行うアクセラレータとしてのDFP(Data Flow Processor)10を含むシステム構成例である、データ処理システム2を説明する。
Next, a data processing system 2, which is a system configuration example including a DFP (Data Flow Processor) 10 as an accelerator for performing dynamic register placement and thread scheduling, will be described with reference to FIG.
データ処理システム2は、DFP10と、イベントハンドラ20と、ホストCPU21と、ROM22と、RAM23と、外部インターフェイス24と、システムバス25と、を備えている。ホストCPU21は、データ処理を主として行う演算装置である。ホストCPU21は、OSをサポートしている。イベントハンドラ20は、割り込み処理を生成する部分である。
The data processing system 2 includes a DFP 10, an event handler 20, a host CPU 21, a ROM 22, a RAM 23, an external interface 24, and a system bus 25. The host CPU 21 is an arithmetic unit that mainly performs data processing. The host CPU 21 supports the OS. The event handler 20 is a part that generates an interrupt process.
ROM22は、読込専用のメモリである。RAM23は、読み書き用のメモリである。外部インターフェイス24は、データ処理システム2外と情報授受を行うためのインターフェイスである。システムバス25は、DFP10と、ホストCPU21と、ROM22と、RAM23と、外部インターフェイス24との間で情報の送受信を行うためのものである。
ROM 22 is a read-only memory. The RAM 23 is a read / write memory. The external interface 24 is an interface for exchanging information with the outside of the data processing system 2. The system bus 25 is for transmitting and receiving information between the DFP 10, the host CPU 21, the ROM 22, the RAM 23, and the external interface 24.
DFP10は、ホストCPU21の重い演算負荷に対処するために設けられている個別のマスタとして位置づけられている。DFP10は、イベントハンドラ20が生成した割り込みをサポートするように構成されている。
The DFP 10 is positioned as an individual master provided to cope with the heavy computation load of the host CPU 21. The DFP 10 is configured to support the interrupt generated by the event handler 20.
続いて図3を参照しながら、DFP10について説明する。図3に示されるように、DFP10は、コマンドユニット12と、スレッドスケジューラ14と、実行コア16と、メモリサブシステム18と、を備えている。
Next, the DFP 10 will be described with reference to FIG. As shown in FIG. 3, the DFP 10 includes a command unit 12, a thread scheduler 14, an execution core 16, and a memory subsystem 18.
コマンドユニット12は、コンフィグ・インターフェイスとの間で情報通信可能なように構成されている。コマンドユニット12は、コマンドバッファとしても機能している。
The command unit 12 is configured to be able to communicate information with the config interface. The command unit 12 also functions as a command buffer.
スレッドスケジューラ14は、図1(B)に例示されるような多量のスレッドの処理をスケジューリングする部分である。スレッドスケジューラ14は、スレッドを跨いだスケジューリングを行うことが可能である。
The thread scheduler 14 is a part that schedules processing of a large number of threads as exemplified in FIG. The thread scheduler 14 can perform scheduling across threads.
実行コア16は、4つのプロセッシングエレメントである、PE#0と、PE#1と、PE#2と、PE#3と、を有している。実行コア16は、独立してスケジューリング可能な多数のパイプラインを有している。
The execution core 16 has four processing elements, PE # 0, PE # 1, PE # 2, and PE # 3. The execution core 16 has a number of pipelines that can be scheduled independently.
メモリサブシステム18は、アービタ181と、L1キャッシュ18aと、L2キャッシュ18bと、を有している。メモリサブシステム18は、システム・バス・インターフェイス及びROMインターフェイスとの間で情報通信可能なように構成されている。
The memory subsystem 18 includes an arbiter 181, an L1 cache 18a, and an L2 cache 18b. The memory subsystem 18 is configured to allow information communication between the system bus interface and the ROM interface.
続いて、図4を参照しながら、本開示のデッドロック回避装置の一例としてのコンパイラ50について説明する。本開示のデッドロック回避装置の実施形態はコンパイラ50に限られるものではなく、図1(A)に例示されるグラフ構造で記述されたプログラムをスレッドに展開するものであれば、図2に示されるようなデータ処理システム2や、図3に示されるようなDFP10に実装されてもよい。
Subsequently, a compiler 50 as an example of the deadlock avoidance device of the present disclosure will be described with reference to FIG. The embodiment of the deadlock avoidance device according to the present disclosure is not limited to the compiler 50, and if the program described in the graph structure illustrated in FIG. The data processing system 2 as described above or the DFP 10 as shown in FIG.
コンパイラ50は、機能的な構成要素として、グラフ構造解析部501と、デッドロック解消部502と、を有している。
The compiler 50 includes a graph structure analysis unit 501 and a deadlock elimination unit 502 as functional components.
グラフ構造解析部501は、グラフ構造で記述されたプログラムにおいて、入出力バッファがバッファ単位でループし見かけ上デッドロックとなる暫定デッドロック箇所を抽出する部分である。
The graph structure analysis unit 501 is a part for extracting a provisional deadlock portion where an input / output buffer loops in buffer units and apparently becomes a deadlock in a program described in a graph structure.
図5に示されるような処理を参照しながら説明する。図5に示される処理では、buf0のデータを用いてfunc1[0]の処理が実行され、その実行結果がbuf1[0]に保持される。続いて、buf1[0]のデータを用いてfunc2[0]の処理が実行され、その実行結果がbuf2[0]に保持される。続いて、buf2[0]のデータを用いてfunc1[1]の処理が実行され、その実行結果がbuf1[1]に保持される。続いて、buf1[1]のデータを用いてfunc2[1]の処理が実行され、その実行結果がbuf2[1]に保持される。この処理をN回行い、最後の計算結果func2[N]を最終出力とする。
This will be described with reference to a process as shown in FIG. In the process shown in FIG. 5, the process of func1 [0] is executed using the data of buf0, and the execution result is held in buf1 [0]. Subsequently, the process of func2 [0] is executed using the data of buf1 [0], and the execution result is held in buf2 [0]. Subsequently, the process of func1 [1] is executed using the data of buf2 [0], and the execution result is held in buf1 [1]. Subsequently, the process of func2 [1] is executed using the data of buf1 [1], and the execution result is held in buf2 [1]. This process is performed N times, and the final calculation result func2 [N] is used as the final output.
並列実行可能なプロセッサ向けでこのような処理を実現しようとすると、図5のバッファ部分に着目することになり、buf2とbuf1との間でデッドロックが発生しているように見えるため、並列処理を実行するこができない。
If such processing is to be realized for a processor that can be executed in parallel, attention will be paid to the buffer portion of FIG. 5, and it seems that a deadlock has occurred between buf2 and buf1, so parallel processing Cannot be executed.
しかしながら、上記説明したように、処理の記述を適切に行い、バッファのインデックスを変更することで、図6に示されるようなデッドロックを回避した処理が可能となる。そこで、グラフ構造解析部501は、図5に示されるような箇所を、入出力バッファがバッファ単位でループし見かけ上デッドロックとなる暫定デッドロック箇所として抽出する(グラフ構造解析ステップ)。
However, as described above, by appropriately describing the process and changing the buffer index, a process avoiding deadlock as shown in FIG. 6 can be performed. Therefore, the graph structure analysis unit 501 extracts a location as shown in FIG. 5 as a temporary deadlock location where the input / output buffer loops in buffer units and apparently becomes a deadlock (graph structure analysis step).
デッドロック解消部502は、暫定デッドロック箇所におけるデッドロックを解消する部分である。デッドロック解消部502は、暫定デッドロック箇所において処理を開始する処理開始ノードを特定し、処理開始ノードから一連の処理が開始されるように特定する開始特定処理を実行する(デッドロック解消ステップ)。このようにデッドロック解消部502が開始特定処理を実行することで、デッドロック状態を解消し、図6に例示するような処理が可能となる。
The deadlock elimination unit 502 is a part for eliminating deadlock at the provisional deadlock location. The deadlock elimination unit 502 identifies a process start node that starts processing at the provisional deadlock location, and executes a start identification process that identifies a series of processes to be started from the process start node (deadlock resolution step). . In this way, the deadlock canceling unit 502 executes the start specifying process, so that the deadlock state is canceled and the process illustrated in FIG. 6 can be performed.
開始特定処理の一例としては、図7に示されるように、開始特定処理において、処理開始ノードであるfunc1から処理を開始するように、処理開始ノードであるfunc1に対する開始指示情報を付与する。開始指示情報としては、kickコマンドが用いられる。
As an example of the start specifying process, as shown in FIG. 7, in the start specifying process, start instruction information for the function start node func1 is added so that the process starts from the process start node func1. A kick command is used as the start instruction information.
開始特定処理の別例としては、図8に示されるように、開始特定処理において、処理開始ノードであるfunc1から処理を開始するように、処理の順番を指示する処理順番情報を付与する。
As another example of the start specifying process, as shown in FIG. 8, in the start specifying process, process order information for instructing the order of the process is given so as to start the process from func1, which is the process start node.
上記したように本実施形態は、グラフ構造で記述されたプログラムを実行するプロセッサにおけるデッドロックを回避するデッドロック回避方法であって、グラフ構造で記述されたプログラムにおいて、入出力バッファがバッファ単位でループし見かけ上デッドロックとなる暫定デッドロック箇所を抽出するグラフ構造解析ステップと、暫定デッドロック箇所におけるデッドロックを解消するデッドロック解消ステップと、を備えている。デッドロック解消ステップにおいて、暫定デッドロック箇所において処理を開始する処理開始ノードを特定し、処理開始ノードから一連の処理が開始されるように特定する開始特定処理を実行する。
As described above, the present embodiment is a deadlock avoidance method for avoiding a deadlock in a processor that executes a program described in a graph structure. In the program described in the graph structure, the input / output buffer is a buffer unit. A graph structure analysis step for extracting a provisional deadlock portion that loops and becomes an apparent deadlock, and a deadlock elimination step for eliminating a deadlock at the provisional deadlock portion are provided. In the deadlock elimination step, a process start node for starting the process at the provisional deadlock point is specified, and a start specifying process for specifying a series of processes to be started from the process start node is executed.
装置として捉えれば、グラフ構造で記述されたプログラムを実行するプロセッサにおけるデッドロックを回避するデッドロック回避装置であって、グラフ構造で記述されたプログラムにおいて、入出力バッファがバッファ単位でループし見かけ上デッドロックとなる暫定デッドロック箇所を抽出するグラフ構造解析部501と、暫定デッドロック箇所におけるデッドロックを解消するデッドロック解消部502と、を備えている。デッドロック解消部502は、暫定デッドロック箇所において処理を開始する処理開始ノードを特定し、処理開始ノードから一連の処理が開始されるように特定する開始特定処理を実行する。
If considered as a device, it is a deadlock avoidance device that avoids deadlock in a processor that executes a program described in a graph structure. A graph structure analysis unit 501 that extracts a provisional deadlock location that becomes a deadlock, and a deadlock elimination unit 502 that eliminates a deadlock at the provisional deadlock location. The deadlock elimination unit 502 identifies a process start node that starts processing at the provisional deadlock location, and executes a start identification process that identifies a series of processes to be started from the process start node.
処理開始ノードを特定し、その処理開始ノードから一連の処理が開始するように処理することで、入出力バッファがバッファ単位でループしている場合であっても、適切な処理準を定義することができ、見かけ上のデッドロックを回避して並列実行することができる。
By specifying a process start node and processing so that a series of processes start from that process start node, even if the input / output buffer is looped in units of buffers, define an appropriate process level Can be executed in parallel while avoiding apparent deadlocks.
図7を参照しながら説明したように、デッドロック回避方法では、開始特定処理において、処理開始ノードから処理を開始するように、処理開始ノードに対する開始指示情報を付与することができる。同様に、デッドロック回避装置では、デッドロック解消部502が、前記開始特定処理において、前記処理開始ノードから処理を開始するように、前記処理開始ノードに対する開始指示情報を付与することができる。このように、開始指示情報を付与することで、処理開始ノードを特定することができ、並列処理が可能となる。
As described with reference to FIG. 7, in the deadlock avoidance method, in the start specifying process, start instruction information for the process start node can be given so as to start the process from the process start node. Similarly, in the deadlock avoidance device, the deadlock elimination unit 502 can give start instruction information to the process start node so that the start specifying process starts the process from the process start node. Thus, by giving start instruction information, a process start node can be specified, and parallel processing becomes possible.
図8を参照しながら説明したように、デッドロック回避方法では、開始特定処理において、処理開始ノードから処理を開始するように、処理の順番を指示する処理順番情報を付与することができる。同様に、デッドロック回避装置では、デッドロック解消部502は、開始特定処理において、処理開始ノードから処理を開始するように、処理の順番を指示する処理順番情報を付与することができる。このように、処理順番情報を付与することで、処理順番を特定することができ、並列処理が可能となる。
As described with reference to FIG. 8, in the deadlock avoidance method, in the start specifying process, it is possible to add process order information for instructing the process order so that the process is started from the process start node. Similarly, in the deadlock avoidance apparatus, the deadlock elimination unit 502 can add processing order information that instructs the processing order so that the processing is started from the processing start node in the start specifying processing. In this way, by adding the processing order information, the processing order can be specified, and parallel processing becomes possible.
以上、具体例を参照しつつ本実施形態について説明した。しかし、本開示はこれらの具体例に限定されるものではない。これら具体例に、当業者が適宜設計変更を加えたものも、本開示の特徴を備えている限り、本開示の範囲に包含される。前述した各具体例が備える各要素およびその配置、条件、形状などは、例示したものに限定されるわけではなく適宜変更することができる。前述した各具体例が備える各要素は、技術的な矛盾が生じない限り、適宜組み合わせを変えることができる。
The embodiment has been described above with reference to specific examples. However, the present disclosure is not limited to these specific examples. Those in which those skilled in the art appropriately modify the design of these specific examples are also included in the scope of the present disclosure as long as they have the features of the present disclosure. Each element included in each of the specific examples described above and their arrangement, conditions, shape, and the like are not limited to those illustrated, and can be changed as appropriate. Each element included in each of the specific examples described above can be appropriately combined as long as no technical contradiction occurs.
Claims (6)
- グラフ構造で記述されたプログラムを実行するプロセッサにおけるデッドロックを回避するデッドロック回避方法であって、
グラフ構造で記述されたプログラムにおいて、入出力バッファがバッファ単位でループし見かけ上デッドロックとなる暫定デッドロック箇所を抽出するグラフ構造解析ステップと、
前記暫定デッドロック箇所におけるデッドロックを解消するデッドロック解消ステップと、を備え、
前記デッドロック解消ステップにおいて、
前記暫定デッドロック箇所において処理を開始する処理開始ノードを特定し、
前記処理開始ノードから一連の処理が開始されるように特定する開始特定処理を実行する、デッドロック回避方法。 A deadlock avoidance method for avoiding a deadlock in a processor that executes a program described in a graph structure,
In a program described in a graph structure, a graph structure analysis step for extracting a provisional deadlock portion where an input / output buffer loops in buffer units and apparently becomes a deadlock;
A deadlock elimination step for eliminating a deadlock at the provisional deadlock location, and
In the deadlock elimination step,
Identify the process start node to start processing at the provisional deadlock location,
A deadlock avoidance method for executing a start specifying process for specifying a series of processes to be started from the process start node. - 請求項1に記載のデッドロック回避方法であって、
前記開始特定処理において、前記処理開始ノードから処理を開始するように、前記処理開始ノードに対する開始指示情報を付与する、デッドロック回避方法。 The deadlock avoidance method according to claim 1,
A deadlock avoidance method of providing start instruction information for the process start node so that the process is started from the process start node in the start specifying process. - 請求項1に記載のデッドロック回避方法であって、
前記開始特定処理において、前記処理開始ノードから処理を開始するように、処理の順番を指示する処理順番情報を付与する、デッドロック回避方法。 The deadlock avoidance method according to claim 1,
In the start specifying process, a deadlock avoidance method of giving processing order information for instructing a processing order so as to start processing from the processing start node. - グラフ構造で記述されたプログラムを実行するプロセッサにおけるデッドロックを回避するデッドロック回避装置であって、
グラフ構造で記述されたプログラムにおいて、入出力バッファがバッファ単位でループし見かけ上デッドロックとなる暫定デッドロック箇所を抽出するグラフ構造解析部(501)と、
前記暫定デッドロック箇所におけるデッドロックを解消するデッドロック解消部(502)と、を備え、
前記デッドロック解消部は、
前記暫定デッドロック箇所において処理を開始する処理開始ノードを特定し、
前記処理開始ノードから一連の処理が開始されるように特定する開始特定処理を実行する、デッドロック回避装置。 A deadlock avoidance device for avoiding deadlock in a processor that executes a program described in a graph structure,
In a program described in a graph structure, a graph structure analysis unit (501) for extracting a provisional deadlock portion where an input / output buffer loops in buffer units and apparently becomes a deadlock;
A deadlock elimination unit (502) for eliminating a deadlock at the provisional deadlock location,
The deadlock elimination unit is
Identify the process start node to start processing at the provisional deadlock location,
A deadlock avoidance device that executes a start specifying process for specifying a series of processes to be started from the process start node. - 請求項4に記載のデッドロック回避装置であって、
前記デッドロック解消部は、前記開始特定処理において、前記処理開始ノードから処理を開始するように、前記処理開始ノードに対する開始指示情報を付与する、デッドロック回避装置。 The deadlock avoidance device according to claim 4,
The deadlock avoiding apparatus, wherein the deadlock elimination unit provides start instruction information for the process start node so that the process is started from the process start node in the start specifying process. - 請求項4に記載のデッドロック回避装置であって、
前記デッドロック解消部は、前記開始特定処理において、前記処理開始ノードから処理を開始するように、処理の順番を指示する処理順番情報を付与する、デッドロック回避装置。 The deadlock avoidance device according to claim 4,
The deadlock elimination unit is a deadlock avoidance device that assigns processing order information indicating a processing order so that processing is started from the processing start node in the start specifying processing.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018068429A JP7064367B2 (en) | 2018-03-30 | 2018-03-30 | Deadlock avoidance method, deadlock avoidance device |
JP2018-068429 | 2018-03-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2019188175A1 true WO2019188175A1 (en) | 2019-10-03 |
Family
ID=68061541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2019/009627 WO2019188175A1 (en) | 2018-03-30 | 2019-03-11 | Deadlock avoidance method and deadlock avoidance device |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP7064367B2 (en) |
WO (1) | WO2019188175A1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102531567B1 (en) * | 2020-04-03 | 2023-05-15 | 서울대학교산학협력단 | Method and system for avoding deadlock |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001500656A (en) * | 1997-04-28 | 2001-01-16 | エービー イニティオ ソフトウェア コーポレーション | Prevention of buffer deadlock in data flow calculation |
JP2009512089A (en) * | 2005-10-18 | 2009-03-19 | マイトリオニクス エービー | How to avoid deadlocks in data flow machines |
WO2016151710A1 (en) * | 2015-03-20 | 2016-09-29 | 株式会社日立製作所 | Specification configuration device and method |
-
2018
- 2018-03-30 JP JP2018068429A patent/JP7064367B2/en active Active
-
2019
- 2019-03-11 WO PCT/JP2019/009627 patent/WO2019188175A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001500656A (en) * | 1997-04-28 | 2001-01-16 | エービー イニティオ ソフトウェア コーポレーション | Prevention of buffer deadlock in data flow calculation |
JP2009512089A (en) * | 2005-10-18 | 2009-03-19 | マイトリオニクス エービー | How to avoid deadlocks in data flow machines |
WO2016151710A1 (en) * | 2015-03-20 | 2016-09-29 | 株式会社日立製作所 | Specification configuration device and method |
Also Published As
Publication number | Publication date |
---|---|
JP7064367B2 (en) | 2022-05-10 |
JP2019179412A (en) | 2019-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9891949B2 (en) | System and method for runtime scheduling of GPU tasks | |
JP4756553B2 (en) | Distributed processing method, operating system, and multiprocessor system | |
JP2010140290A (en) | Multiprocessor system and arbitration method for exclusive control thereof | |
JP2009151645A (en) | Parallel processor and program parallelizing device | |
WO2020121840A1 (en) | Arithmetic control device | |
WO2019188175A1 (en) | Deadlock avoidance method and deadlock avoidance device | |
US20100169889A1 (en) | Multi-core system | |
US11301304B2 (en) | Method and apparatus for managing kernel services in multi-core system | |
US11481250B2 (en) | Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values | |
EP2750045A1 (en) | Method and apparatus for allocating interrupts in a multi-core system | |
US20220300322A1 (en) | Cascading of Graph Streaming Processors | |
WO2019188179A1 (en) | Deadlock avoidance method and deadlock avoidance device | |
JP6817827B2 (en) | Accelerator processing management device, host device, accelerator processing execution system, method and program | |
WO2019188177A1 (en) | Information processing device | |
US10261817B2 (en) | System on a chip and method for a controller supported virtual machine monitor | |
JP4017005B2 (en) | Arithmetic unit | |
US10360652B2 (en) | Wavefront resource virtualization | |
JP7112058B2 (en) | REAL-TIME PROCESSING APPARATUS AND MANUFACTURING METHOD THEREOF | |
WO2019188171A1 (en) | Code generation method and code generation device | |
WO2019188181A1 (en) | Scheduling method, scheduling device | |
WO2019188172A1 (en) | Information processing device | |
JP2019204387A (en) | Program execution control method and program converter | |
JP7456437B2 (en) | processor and program | |
WO2019188182A1 (en) | Pre-fetch controller | |
JP6255721B2 (en) | Process allocation apparatus, process allocation method, and process allocation program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 19775798 Country of ref document: EP Kind code of ref document: A1 |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 19775798 Country of ref document: EP Kind code of ref document: A1 |