JP7039365B2 - デッドロック回避方法、デッドロック回避装置 - Google Patents

デッドロック回避方法、デッドロック回避装置 Download PDF

Info

Publication number
JP7039365B2
JP7039365B2 JP2018068433A JP2018068433A JP7039365B2 JP 7039365 B2 JP7039365 B2 JP 7039365B2 JP 2018068433 A JP2018068433 A JP 2018068433A JP 2018068433 A JP2018068433 A JP 2018068433A JP 7039365 B2 JP7039365 B2 JP 7039365B2
Authority
JP
Japan
Prior art keywords
deadlock
graph structure
provisional
location
buffer
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
Application number
JP2018068433A
Other languages
English (en)
Other versions
JP2019179416A (ja
Inventor
祐次郎 谷
一嘉 石渡
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.)
Denso Corp
NSI Texe Inc
Original Assignee
Denso Corp
NSI Texe Inc
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 Denso Corp, NSI Texe Inc filed Critical Denso Corp
Priority to JP2018068433A priority Critical patent/JP7039365B2/ja
Priority to PCT/JP2019/009631 priority patent/WO2019188179A1/ja
Publication of JP2019179416A publication Critical patent/JP2019179416A/ja
Application granted granted Critical
Publication of JP7039365B2 publication Critical patent/JP7039365B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Description

本開示は、グラフ構造で記述されたプログラムを実行するプロセッサにおけるデッドロックを回避するデッドロック回避方法及びデッドロック回避装置に関する。
プログラムにおいて、2つ以上の処理単位が互いの処理終了を待ち、結果としてどの処理も先に進めなくなってしまうデッドロックを回避するため、デッドロックが発生する場面に応じたデッドロック回避方法が提案されている。下記特許文献1では、割り込み処理に伴って発生するデッドロックを回避する方法が開示されている。
国際公開第2012/120573号
特許文献1では、コプロセッサ命令の実行中に割り込み処理によってコプロセッサに対して処理を行うプロセッサシステムにおいて、デッドロックを回避することについては開示がある。
しかしながら、特許文献1に記載の発明では、プログラムをデータと処理とに分割してグラフ構造とし、それを読み込むことで動作するプロセッサ特有のデッドロックを回避することはできない。
本開示は、グラフ構造で記述されたプログラムを実行するプロセッサにおいてデッドロックを回避するデッドロック回避方法及びデッドロック回避装置を提供することを目的とする。
本開示は、グラフ構造で記述されたプログラムを実行するプロセッサにおけるデッドロックを回避するデッドロック回避方法であって、グラフ構造で記述されたプログラムにおいて、入出力バッファがバッファ単位でループし見かけ上デッドロックとなる暫定デッドロック箇所を抽出するグラフ構造解析ステップと、暫定デッドロック箇所におけるデッドロックを解消するデッドロック解消ステップと、を備えている。デッドロック解消ステップにおいて、暫定デッドロック箇所を構成するバッファに対して遅延指示をするための遅延ノードを追加する。
また本開示は、グラフ構造で記述されたプログラムを実行するプロセッサにおけるデッドロックを回避するデッドロック回避装置であって、グラフ構造で記述されたプログラムにおいて、入出力バッファがバッファ単位でループし見かけ上デッドロックとなる暫定デッドロック箇所を抽出するグラフ構造解析部(501)と、暫定デッドロック箇所におけるデッドロックを解消するデッドロック解消部(502)と、を備えている。デッドロック解消部は、暫定デッドロック箇所を構成するバッファに対して遅延指示をするための遅延ノードを追加する。
遅延ノードを追加することで時間遅延があることが明示され、入出力バッファがバッファ単位でループしている場合であっても、適切な処理順を定義することができ、見かけ上のデッドロックを回避して並列実行することができる。
本開示によれば、グラフ構造で記述されたプログラムを実行するプロセッサにおいてデッドロックを回避するデッドロック回避方法及びデッドロック回避装置を提供することができる。
図1は、本実施形態の前提となる並列処理について説明するための図である。 図2は、図1に示される並列処理を実行するためのシステム構成例を示す図である。 図3は、図2に用いられるDFPの構成例を示す図である。 図4は、コンパイラの機能的な構成例を説明するための図である。 図5は、デッドロック回避の一例を説明するための図である。 図6は、デッドロック回避の一例を説明するための図である。 図7は、デッドロック回避の一例を説明するための図である。
以下、添付図面を参照しながら本実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
図1(A)は、グラフ構造のプログラムコードを示しており、図1(B)は、スレッドの状態を示しており、図1(C)は、並列処理の状況を示している。
図1(A)に示されるように、本実施形態が処理対象とするプログラムは、データと処理とが分割されているグラフ構造を有している。このグラフ構造は、プログラムのタスク並列性、グラフ並列性を保持している。
図1(A)に示されるプログラムコードに対して、コンパイラによる自動ベクトル化とグラフ構造の抽出を行うと、図1(B)に示されるような大量のスレッドを生成することができる。
図1(B)に示される多量のスレッドに対して、ハードウェアによる動的レジスタ配置とスレッド・スケジューリングにより、図1(C)に示されるような並列実行を行うことができる。実行中にレジスタ資源を動的配置することで、異なる命令ストリームに対しても複数のスレッドを並列実行することができる。
続いて図2を参照しながら、動的レジスタ配置及びスレッド・スケジューリングを行うアクセラレータとしてのDFP(Data Flow Processor)10を含むシステム構成例である、データ処理システム2を説明する。
データ処理システム2は、DFP10と、イベントハンドラ20と、ホストCPU21と、ROM22と、RAM23と、外部インターフェイス24と、システムバス25と、を備えている。ホストCPU21は、データ処理を主として行う演算装置である。ホストCPU21は、OSをサポートしている。イベントハンドラ20は、割り込み処理を生成する部分である。
ROM22は、読込専用のメモリである。RAM23は、読み書き用のメモリである。外部インターフェイス24は、データ処理システム2外と情報授受を行うためのインターフェイスである。システムバス25は、DFP10と、ホストCPU21と、ROM22と、RAM23と、外部インターフェイス24との間で情報の送受信を行うためのものである。
DFP10は、ホストCPU21の重い演算負荷に対処するために設けられている個別のマスタとして位置づけられている。DFP10は、イベントハンドラ20が生成した割り込みをサポートするように構成されている。
続いて図3を参照しながら、DFP10について説明する。図3に示されるように、DFP10は、コマンドユニット12と、スレッドスケジューラ14と、実行コア16と、メモリサブシステム18と、を備えている。
コマンドユニット12は、コンフィグ・インターフェイスとの間で情報通信可能なように構成されている。コマンドユニット12は、コマンドバッファとしても機能している。
スレッドスケジューラ14は、図1(B)に例示されるような多量のスレッドの処理をスケジューリングする部分である。スレッドスケジューラ14は、スレッドを跨いだスケジューリングを行うことが可能である。
実行コア16は、4つのプロセッシングエレメントである、PE#0と、PE#1と、PE#2と、PE#3と、を有している。実行コア16は、独立してスケジューリング可能な多数のパイプラインを有している。
メモリサブシステム18は、アービタ181と、L1キャッシュ18aと、L2キャッシュ18bと、を有している。メモリサブシステム18は、システム・バス・インターフェイス及びROMインターフェイスとの間で情報通信可能なように構成されている。
続いて、図4を参照しながら、本開示のデッドロック回避装置の一例としてのコンパイラ50について説明する。本開示のデッドロック回避装置の実施形態はコンパイラ50に限られるものではなく、図1(A)に例示されるグラフ構造のプログラムをスレッドに展開するものであれば、図2に示されるようなデータ処理システム2や、図3に示されるようなDFP10に実装されてもよい。
コンパイラ50は、機能的な構成要素として、グラフ構造解析部501と、デッドロック解消部502と、を有している。
グラフ構造解析部501は、グラフ構造のプログラムにおいて、入出力バッファがバッファ単位でループし見かけ上デッドロックとなる暫定デッドロック箇所を抽出する部分である。
図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]を最終出力とする。
並列実行可能なプロセッサ向けでこのような処理を実現しようとすると、図5のバッファ部分に着目することになり、buf2とbuf1との間でデッドロックが発生しているように見えるため、並列処理を実行するこができない。
しかしながら、上記説明したように、処理の記述を適切に行い、バッファのインデックスを変更することで、図6に示されるようなデッドロックを回避した処理が可能となる。そこで、グラフ構造解析部501は、図5に示されるような箇所を、入出力バッファがバッファ単位でループし見かけ上デッドロックとなる暫定デッドロック箇所として抽出する(グラフ構造解析ステップ)。
デッドロック解消部502は、暫定デッドロック箇所におけるデッドロックを解消する部分である。デッドロック解消部502は、暫定デッドロック箇所を構成するバッファに対して遅延指示をするための遅延ノードを追加する(デッドロック解消ステップ)。このようにデッドロック解消部502が遅延ノード追加処理を実行することで、デッドロック状態を解消し、図6に例示するような処理が可能となる。
遅延ノード追加処理の一例としては、図7に示されるように、buf1の後に遅延ノードであるdelay命令を追加する。delay命令はバッファを入力にし、別の仮想バッファに出力して時間遅延を定義する。時間遅延があることが明示されることで、デッドロックが発生しないことを示すことができ、func1とfunc2とを並行動作させることができる。
上記したように本実施形態は、グラフ構造のプログラムにおけるデッドロックを回避するデッドロック回避方法であって、グラフ構造のプログラムにおいて、入出力バッファがバッファ単位でループし見かけ上デッドロックとなる暫定デッドロック箇所を抽出するグラフ構造解析ステップと、暫定デッドロック箇所におけるデッドロックを解消するデッドロック解消ステップと、を備えている。デッドロック解消ステップにおいて、暫定デッドロック箇所を構成するバッファに対して遅延指示をするための遅延ノードを追加する。
装置として捉えれば、グラフ構造のプログラムにおけるデッドロックを回避するデッドロック回避装置であって、グラフ構造のプログラムにおいて、入出力バッファがバッファ単位でループし見かけ上デッドロックとなる暫定デッドロック箇所を抽出するグラフ構造解析部501と、暫定デッドロック箇所におけるデッドロックを解消するデッドロック解消部502と、を備えている。デッドロック解消部502は、暫定デッドロック箇所を構成するバッファに対して遅延指示をするための遅延ノードを追加する。
遅延ノードを追加することで時間遅延があることが明示され、入出力バッファがバッファ単位でループしている場合であっても、適切な処理順を定義することができ、見かけ上のデッドロックを回避して並列実行することができる。
以上、具体例を参照しつつ本実施形態について説明した。しかし、本開示はこれらの具体例に限定されるものではない。これら具体例に、当業者が適宜設計変更を加えたものも、本開示の特徴を備えている限り、本開示の範囲に包含される。前述した各具体例が備える各要素およびその配置、条件、形状などは、例示したものに限定されるわけではなく適宜変更することができる。前述した各具体例が備える各要素は、技術的な矛盾が生じない限り、適宜組み合わせを変えることができる。
501:グラフ構造解析部
502:デッドロック解消部

Claims (2)

  1. グラフ構造で記述されたプログラムを実行するプロセッサにおけるデッドロックを回避するデッドロック回避方法であって、
    グラフ構造で記述されたプログラムにおいて、入出力バッファがバッファ単位でループし見かけ上デッドロックとなる暫定デッドロック箇所を抽出するグラフ構造解析ステップと、
    前記暫定デッドロック箇所におけるデッドロックを解消するデッドロック解消ステップと、を備え、
    前記デッドロック解消ステップにおいて、
    前記暫定デッドロック箇所を構成するバッファに対して遅延指示をするための遅延ノードを追加する、デッドロック回避方法。
  2. グラフ構造で記述されたプログラムを実行するプロセッサにおけるデッドロックを回避するデッドロック回避装置であって、
    グラフ構造で記述されたプログラムにおいて、入出力バッファがバッファ単位でループし見かけ上デッドロックとなる暫定デッドロック箇所を抽出するグラフ構造解析部(501)と、
    前記暫定デッドロック箇所におけるデッドロックを解消するデッドロック解消部(502)と、を備え、
    前記デッドロック解消部は、
    前記暫定デッドロック箇所を構成するバッファに対して遅延指示をするための遅延ノードを追加する、デッドロック回避装置。
JP2018068433A 2018-03-30 2018-03-30 デッドロック回避方法、デッドロック回避装置 Active JP7039365B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018068433A JP7039365B2 (ja) 2018-03-30 2018-03-30 デッドロック回避方法、デッドロック回避装置
PCT/JP2019/009631 WO2019188179A1 (ja) 2018-03-30 2019-03-11 デッドロック回避方法、デッドロック回避装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018068433A JP7039365B2 (ja) 2018-03-30 2018-03-30 デッドロック回避方法、デッドロック回避装置

Publications (2)

Publication Number Publication Date
JP2019179416A JP2019179416A (ja) 2019-10-17
JP7039365B2 true JP7039365B2 (ja) 2022-03-22

Family

ID=68058862

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018068433A Active JP7039365B2 (ja) 2018-03-30 2018-03-30 デッドロック回避方法、デッドロック回避装置

Country Status (2)

Country Link
JP (1) JP7039365B2 (ja)
WO (1) WO2019188179A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001500656A (ja) 1997-04-28 2001-01-16 エービー イニティオ ソフトウェア コーポレーション データフロー計算におけるバッファデッドロックの防止方法
JP2009512089A (ja) 2005-10-18 2009-03-19 マイトリオニクス エービー データフローマシンにおけるデッドロックを回避するための方法
WO2016151710A1 (ja) 2015-03-20 2016-09-29 株式会社日立製作所 仕様構成装置および方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001500656A (ja) 1997-04-28 2001-01-16 エービー イニティオ ソフトウェア コーポレーション データフロー計算におけるバッファデッドロックの防止方法
JP2009512089A (ja) 2005-10-18 2009-03-19 マイトリオニクス エービー データフローマシンにおけるデッドロックを回避するための方法
WO2016151710A1 (ja) 2015-03-20 2016-09-29 株式会社日立製作所 仕様構成装置および方法

Also Published As

Publication number Publication date
WO2019188179A1 (ja) 2019-10-03
JP2019179416A (ja) 2019-10-17

Similar Documents

Publication Publication Date Title
US11550627B2 (en) Hardware accelerated dynamic work creation on a graphics processing unit
US9424038B2 (en) Compiler-controlled region scheduling for SIMD execution of threads
US9891949B2 (en) System and method for runtime scheduling of GPU tasks
US20130179662A1 (en) Method and System for Resolving Thread Divergences
KR20070108329A (ko) 하드웨어 공유 시스템 및 방법
JP7064367B2 (ja) デッドロック回避方法、デッドロック回避装置
JP7039365B2 (ja) デッドロック回避方法、デッドロック回避装置
US11481250B2 (en) Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values
WO2023077875A1 (zh) 用于并行执行核心程序的方法和装置
WO2019188177A1 (ja) 情報処理装置
US10261817B2 (en) System on a chip and method for a controller supported virtual machine monitor
JP5238876B2 (ja) 情報処理装置及び情報処理方法
JP7112058B2 (ja) リアルタイム処理装置及びその作製方法
WO2019188171A1 (ja) コード生成方法、コード生成装置
US20140223419A1 (en) Compiler, object code generation method, information processing apparatus, and information processing method
JP7456437B2 (ja) プロセッサおよびプログラム
WO2019188181A1 (ja) スケジューリング方法、スケジューリング装置
WO2019188182A1 (ja) プリフェッチコントローラ
JP7080698B2 (ja) 情報処理装置
WO2019188172A1 (ja) 情報処理装置
WO2019188180A1 (ja) スケジューリング方法、スケジューリング装置
Kloda et al. Latency analysis of self-suspending task chains
Zagan et al. Improving the Performances of the nMPRA Architecture by Implementing Specific Functions in Hardware
JP2020181407A (ja) 並列化方法、半導体制御装置、及び車載制御装置
JP2010198512A (ja) リアルタイムosのイベント拡張方法及びシステム

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20190326

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20190327

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210215

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: 20220208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220309

R150 Certificate of patent or registration of utility model

Ref document number: 7039365

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313115

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350