JP5810316B2 - コンパイル装置、コンパイルプログラム及びループ並列化方法 - Google Patents
コンパイル装置、コンパイルプログラム及びループ並列化方法 Download PDFInfo
- Publication number
- JP5810316B2 JP5810316B2 JP2012549616A JP2012549616A JP5810316B2 JP 5810316 B2 JP5810316 B2 JP 5810316B2 JP 2012549616 A JP2012549616 A JP 2012549616A JP 2012549616 A JP2012549616 A JP 2012549616A JP 5810316 B2 JP5810316 B2 JP 5810316B2
- Authority
- JP
- Japan
- Prior art keywords
- loop
- variable
- initial value
- calculation code
- value calculation
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- 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
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- 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
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
- G06F8/452—Loops
-
- 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
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- 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
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
- G06F8/4452—Software pipelining
Description
<構成>
図1は本発明の実施の形態におけるループ並列化方法を実行するコンパイル装置200を示す構成図である。コンパイル装置200は、C言語などの逐次型のソースプログラム100を入力し、OpenMP C言語などの並列型の目的プログラム300を出力とする。コンパイル装置200は、データ依存解析部210、ループ並列化変換部220を備える。
<動作>
以上の構成をもとに、本発明の実施の形態に係るコンパイル装置200の動作について説明する。
(1)ループ並列化変換の概要
図2は本発明の実施の形態におけるループ並列化変換部220のフローを示す図である。図2に示すフローを参照してループ並列化変換部220における処理動作を説明する。
(2)ループ並列化判定
図3は本発明の実施の形態におけるステップS20におけるループ並列化変換部220のフローを示す図である。図3に示すフローを参照してS20における初期値算出コード追加型変換の適用の判定の処理動作を説明する。
(3)初期値算出コード追加型変換
図4は本発明の実施の形態における初期値算出コード追加部222の動作S21のフローを示す図である。図4に示すフローを参照してS21における初期値算出コード追加型の変換の処理動作を説明する。
<プログラムの変換例>
図5は本発明の実施の形態における初期値算出コード追加型変換を行う前後のプログラム例を表す図である。図5に示すプログラムを参照して、本発明に係るコンパイル装置200の動作を説明する。
(1)ループ並列化判定
図6はプログラム400に対するループ並列化判定の実行例を表す図である。
(2)初期値算出コード追加型変換
図7はプログラム400のループの初期値算出コード追加型変換の実行例を表す図である。
<初期値算出コード追加型変換ができないと判断されるプログラムの例>
以下に初期値算出コード追加型変換が適用できないと判定される場合について、図8を用いて説明する。
(1)本実施の形態においては、ソースプログラム100がC言語、目的プログラム300がOpenMP C言語で記述されている場合について説明したが、本発明は必ずしもこの場合に限定されない。例えば、ソースプログラム100がFORTRANなど他の言語で記述されていてもよいし、目的プログラム300は並列化を行える言語であれば他の言語であってもよい。あるいは、目的プログラム300はマルチプロセッサで実行できるオブジェクトファイルであってもよい。
210 データ依存解析部
220 ループ並列化部
221 ループ並列化判定部
230 ループ変換部
231 DOALL型変換部
232 初期値算出コード追加型変換部
233 DOACROSS型変換部
300 目的プログラム
Claims (8)
- 逐次型のソースプログラムから並列型の目的プログラムを生成するコンパイル装置であって、
前記ソースプログラムに含まれるループについて、値を代入するイタレーションの後に実行される別のイタレーションにおいて前記代入された値が参照されるループ運搬依存変数が存在するか否かを解析するデータ依存解析部と、
前記ループ運搬依存変数を含むループについて、ループを逐次実行することなく全てのイタレーションにおける前記ループ運搬依存変数の値を算出することができる並列化可能ループであるか否かを判定するループ並列化判定部と、
前記ループ並列化判定部が並列化可能ループと判定するループについて、複数のサブループに分割するために前記サブループの開始位置を決定し、前記開始位置のそれぞれにおける前記ループ運搬依存変数の値をループ内で実行される一つ以上の処理を一回以上実行することにより算出する初期値算出コードを生成し、前記ループを前記開始位置に従って前記サブループに分割し、前記初期値算出コードがそれぞれ対応する前記サブループより前に実行されるように目的プログラムを生成する初期値算出コード追加部と
を含むことを特徴とするコンパイル装置。 - 前記ループ並列化判定部は、
前記ループ運搬依存変数を含むループに含まれる変数について、前記ループ運搬依存変数でない変数を、ループを逐次実行することなく全てのイタレーションにおける値を算出することができる算出可能変数として判別し、
前記ループ運搬依存変数の値を算出するために必要な変数が全て算出可能変数である場合に前記ループ運搬依存変数を算出可能変数として判別する処理を、算出可能変数であると判別される変数が増加するたびに前記ループ運搬依存変数を含むループに含まれ算出可能変数と判別されないループ運搬依存変数に対して繰り返し、
前記ループ運搬依存変数を含むループに含まれる変数が全て算出可能変数であれば、前記ループ運搬依存変数を含むループを並列化可能ループであると判定する
ことを特徴とする請求項1に記載のコンパイル装置。 - 前記ループ並列化判定部は、
前記ループ運搬依存変数を含むループに含まれる変数であって、ループ運搬依存変数ではない前記算出可能変数のリストを作成し、
前記ループ運搬依存変数を含むループに含まれるループ運搬依存変数について、前記ループ運搬依存変数が左辺値となる式において右辺値の変数が全て前記リストに含まれていれば前記左辺値のループ運搬依存変数を前記算出可能変数として前記リストに追加することを、前記リストに追加する変数がなくなるまで繰り返し行い、
前記ループ運搬依存変数を含むループに含まれる変数が全て前記リストに含まれていれば、前記ループ運搬依存変数を含むループを並列化可能ループであると判定する
ことを特徴とする請求項2に記載のコンパイル装置。 - 前記初期値算出コード追加部は、
前記ループにおいて、前記サブループの最初のイタレーションとなるイタレーションを特定し、
前記ループ運搬依存変数を前記サブループごとに異なる局所変数に置き換え、
前記特定したイタレーションにおける前記ループ運搬依存変数の値をループ運搬依存変数でない変数を用いて算出して前記局所変数に代入する初期値算出コードを生成し、
前記生成した初期値算出コードを前記サブループの前に追加する
ことを特徴とする請求項2に記載のコンパイル装置。 - 前記初期値算出コード追加部は、
ループ運搬依存変数のリストである初期値追加リストを作成し、
前記初期値追加リストの変数について、前記サブループの最初のイタレーションで参照される値を左辺値とする導出式を前記ループから生成し初期値算出コードとして前記サブループの前に追加し、
直前に追加した初期値算出コードについて、右辺値に含まれるループ運搬依存変数のリストである第2追加リストを生成し、前記第2追加リストの変数について、前記変数を左辺値とする導出式を前記ループから生成し初期値算出コードとして既に追加されている初期値算出コードの前に追加する処理を前記第2追加リストに変数があれば繰り返し行う
ことを特徴とする請求項4に記載のコンパイル装置。 - コンピュータを、逐次型のソースプログラムから並列型の目的プログラムを生成するコンパイル装置として機能させるためのプログラムであって、
前記コンピュータに、
前記ソースプログラムに含まれるループについて、値を代入するイタレーションの後に実行される別のイタレーションにおいて前記代入された値が参照されるループ運搬依存変数が存在するか否かを解析するデータ依存解析ステップと、
前記ループ運搬依存変数を含むループについて、ループを逐次実行することなく全てのイタレーションにおける前記ループ運搬依存変数の値を算出することができる並列化可能ループであるか否かを判定するループ並列化判定ステップと、
前記ループ並列化判定ステップが並列化可能ループと判定するループについて、複数のサブループに分割するために前記サブループの開始位置を決定し、前記開始位置のそれぞれにおける前記ループ運搬依存変数の値をループ内で実行される一つ以上の処理を一回以上実行することにより算出する初期値算出コードを生成し、前記ループを前記開始位置に従って前記サブループに分割し、前記初期値算出コードがそれぞれ対応する前記サブループより前に実行されるように目的プログラムを生成する初期値算出コード追加ステップと
を実行させることを特徴とするプログラム。 - コンピュータを、逐次型のソースプログラムから並列型の目的プログラムを生成するコンパイル装置として機能させるためのコンパイルプログラムが記録されているコンピュータ読み取り可能な記録媒体であって、
前記コンピュータに、
前記ソースプログラムに含まれるループについて、値を代入するイタレーションの後に実行される別のイタレーションにおいて前記代入された値が参照されるループ運搬依存変数が存在するか否かを解析するデータ依存解析ステップと、
前記ループ運搬依存変数を含むループについて、ループを逐次実行することなく全てのイタレーションにおける前記ループ運搬依存変数の値を算出することができる並列化可能ループであるか否かを判定するループ並列化判定ステップと、
前記ループ並列化判定ステップが並列化可能ループと判定するループについて、複数のサブループに分割するために前記サブループの開始位置を決定し、前記開始位置のそれぞれにおける前記ループ運搬依存変数の値をループ内で実行される一つ以上の処理を一回以上実行することにより算出する初期値算出コードを生成し、前記ループを前記開始位置に従って前記サブループに分割し、前記初期値算出コードがそれぞれ対応する前記サブループより前に実行されるように目的プログラムを生成する初期値算出コード追加ステップと
を実行させるためのプログラムが記録されているコンピュータ読み取り可能な記録媒体。 - 逐次型のソースプログラムから並列型の目的プログラムを生成するコンパイル装置におけるループ並列化方法であって、
前記ソースプログラムに含まれるループについて、値を代入するイタレーションの後に実行される別のイタレーションにおいて前記代入された値が参照されるループ運搬依存変数が存在するか否かを解析するデータ依存解析ステップと、
前記ループ運搬依存変数を含むループについて、ループを逐次実行することなく全てのイタレーションにおける前記ループ運搬依存変数の値を算出することができる並列化可能ループであるか否かを判定するループ並列化判定ステップと、
前記ループ並列化判定ステップが並列化可能ループと判定するループについて、複数のサブループに分割するために前記サブループの開始位置を決定し、前記開始位置のそれぞれにおける前記ループ運搬依存変数の値をループ内で実行される一つ以上の処理を一回以上実行することにより算出する初期値算出コードを生成し、前記ループを前記開始位置に従って前記サブループに分割し、前記初期値算出コードがそれぞれ対応する前記サブループより前に実行されるように目的プログラムを生成する初期値算出コード追加ステップと
を含むことを特徴とするループ並列化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012549616A JP5810316B2 (ja) | 2010-12-21 | 2011-12-13 | コンパイル装置、コンパイルプログラム及びループ並列化方法 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010284402 | 2010-12-21 | ||
JP2010284402 | 2010-12-21 | ||
JP2012549616A JP5810316B2 (ja) | 2010-12-21 | 2011-12-13 | コンパイル装置、コンパイルプログラム及びループ並列化方法 |
PCT/JP2011/006941 WO2012086148A1 (ja) | 2010-12-21 | 2011-12-13 | コンパイル装置、コンパイルプログラム及びループ並列化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2012086148A1 JPWO2012086148A1 (ja) | 2014-05-22 |
JP5810316B2 true JP5810316B2 (ja) | 2015-11-11 |
Family
ID=46313440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012549616A Expired - Fee Related JP5810316B2 (ja) | 2010-12-21 | 2011-12-13 | コンパイル装置、コンパイルプログラム及びループ並列化方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8881124B2 (ja) |
JP (1) | JP5810316B2 (ja) |
CN (1) | CN103250135A (ja) |
WO (1) | WO2012086148A1 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10013242B2 (en) | 2014-05-27 | 2018-07-03 | Entit Software Llc | Distributed compilation of statically typed languages |
US20160019060A1 (en) * | 2014-07-21 | 2016-01-21 | Qualcomm Incorporated | ENFORCING LOOP-CARRIED DEPENDENCY (LCD) DURING DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA |
JP2016224812A (ja) * | 2015-06-02 | 2016-12-28 | 富士通株式会社 | 並列計算装置、並列処理方法、並列処理プログラムおよびコンパイルプログラム |
JP2017107448A (ja) * | 2015-12-10 | 2017-06-15 | 株式会社デンソー | 並列化方法、並列化ツール、車載装置 |
US10671361B2 (en) * | 2016-10-25 | 2020-06-02 | Paypal, Inc. | Automatically determining data dependencies to facilitate code execution |
WO2020174581A1 (ja) * | 2019-02-26 | 2020-09-03 | 三菱電機株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
US11714616B2 (en) * | 2019-06-28 | 2023-08-01 | Microsoft Technology Licensing, Llc | Compilation and execution of source code as services |
US11537446B2 (en) | 2019-08-14 | 2022-12-27 | Microsoft Technology Licensing, Llc | Orchestration and scheduling of services |
JP2021039658A (ja) * | 2019-09-05 | 2021-03-11 | 富士通株式会社 | Ac並列化回路、ac並列化方法及び並列情報処理装置 |
US11366647B2 (en) * | 2020-04-30 | 2022-06-21 | Intel Corporation | Automatic compiler dataflow optimization to enable pipelining of loops with local storage requirements |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6394368A (ja) * | 1986-10-09 | 1988-04-25 | Hitachi Ltd | 自動ベクトル化方法 |
JPH07110800A (ja) * | 1993-10-13 | 1995-04-25 | Matsushita Electric Ind Co Ltd | 最適化並列コンパイル装置及び最適化並列コンパイル方法 |
JPH11161500A (ja) * | 1997-11-28 | 1999-06-18 | Hitachi Ltd | 実行時依存解析を行う目的プログラムの生成方法 |
JP2000020482A (ja) * | 1998-06-29 | 2000-01-21 | Hitachi Ltd | ループ並列化方法 |
JP2001249818A (ja) * | 2000-03-03 | 2001-09-14 | Matsushita Electric Ind Co Ltd | 最適化装置及び最適化プログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP2010191506A (ja) * | 2009-02-16 | 2010-09-02 | Fujitsu Ltd | コンパイル装置およびコンパイルプログラム |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07110800B2 (ja) | 1988-06-14 | 1995-11-29 | 松下電器産業株式会社 | イオン化ガス供給ノズル |
US20040098711A1 (en) * | 2002-11-20 | 2004-05-20 | Yonghong Song | Method and system for dependence analysis |
US7171544B2 (en) * | 2003-12-15 | 2007-01-30 | International Business Machines Corporation | Run-time parallelization of loops in computer programs by access patterns |
US8549501B2 (en) * | 2004-06-07 | 2013-10-01 | International Business Machines Corporation | Framework for generating mixed-mode operations in loop-level simdization |
JP4084374B2 (ja) | 2005-08-11 | 2008-04-30 | 株式会社日立製作所 | ループ並列化方法及びコンパイル装置 |
US8104030B2 (en) * | 2005-12-21 | 2012-01-24 | International Business Machines Corporation | Mechanism to restrict parallelization of loops |
JP4884297B2 (ja) * | 2006-05-26 | 2012-02-29 | パナソニック株式会社 | コンパイラ装置、コンパイル方法およびコンパイラプログラム |
US8037462B2 (en) * | 2006-08-02 | 2011-10-11 | International Business Machines Corporation | Framework for parallelizing general reduction |
CN101344855A (zh) * | 2007-07-13 | 2009-01-14 | 上海宇梦通信科技有限公司 | 一种基于编译的跟踪代码中特定对象的控制方法及装置 |
US8146071B2 (en) * | 2007-09-18 | 2012-03-27 | International Business Machines Corporation | Pipelined parallelization of multi-dimensional loops with multiple data dependencies |
US8087010B2 (en) * | 2007-09-26 | 2011-12-27 | International Business Machines Corporation | Selective code generation optimization for an advanced dual-representation polyhedral loop transformation framework |
US8087011B2 (en) * | 2007-09-26 | 2011-12-27 | International Business Machines Corporation | Domain stretching for an advanced dual-representation polyhedral loop transformation framework |
JP4339907B2 (ja) * | 2007-10-24 | 2009-10-07 | 株式会社日立製作所 | マルチプロセッサ向け最適コード生成方法及びコンパイル装置 |
US8151252B2 (en) * | 2008-02-22 | 2012-04-03 | Oracle America, Inc. | Compiler framework for speculative automatic parallelization with transactional memory |
US8739141B2 (en) * | 2008-05-19 | 2014-05-27 | Oracle America, Inc. | Parallelizing non-countable loops with hardware transactional memory |
US8453134B2 (en) * | 2008-06-04 | 2013-05-28 | Intel Corporation | Improving data locality and parallelism by code replication |
US8448155B2 (en) * | 2009-06-01 | 2013-05-21 | National Instruments Corporation | Automatically creating parallel iterative program code in a graphical data flow program |
US8561046B2 (en) * | 2009-09-14 | 2013-10-15 | Oracle America, Inc. | Pipelined parallelization with localized self-helper threading |
-
2011
- 2011-12-13 US US13/638,773 patent/US8881124B2/en not_active Expired - Fee Related
- 2011-12-13 CN CN201180016756XA patent/CN103250135A/zh active Pending
- 2011-12-13 WO PCT/JP2011/006941 patent/WO2012086148A1/ja active Application Filing
- 2011-12-13 JP JP2012549616A patent/JP5810316B2/ja not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6394368A (ja) * | 1986-10-09 | 1988-04-25 | Hitachi Ltd | 自動ベクトル化方法 |
JPH07110800A (ja) * | 1993-10-13 | 1995-04-25 | Matsushita Electric Ind Co Ltd | 最適化並列コンパイル装置及び最適化並列コンパイル方法 |
JPH11161500A (ja) * | 1997-11-28 | 1999-06-18 | Hitachi Ltd | 実行時依存解析を行う目的プログラムの生成方法 |
JP2000020482A (ja) * | 1998-06-29 | 2000-01-21 | Hitachi Ltd | ループ並列化方法 |
JP2001249818A (ja) * | 2000-03-03 | 2001-09-14 | Matsushita Electric Ind Co Ltd | 最適化装置及び最適化プログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP2010191506A (ja) * | 2009-02-16 | 2010-09-02 | Fujitsu Ltd | コンパイル装置およびコンパイルプログラム |
Non-Patent Citations (2)
Title |
---|
CSND200900424010; 渡邊 坦: '特集2 COINSがもたらすコンパイラ革命 Part2 HIRに対する最適化と並列化' UNIX magazine Vol.24,No.3, 20090701, pp.90〜93, 株式会社アスキー・メディアワークス * |
JPN6012000688; 渡邊 坦: '特集2 COINSがもたらすコンパイラ革命 Part2 HIRに対する最適化と並列化' UNIX magazine Vol.24,No.3, 20090701, pp.90〜93, 株式会社アスキー・メディアワークス * |
Also Published As
Publication number | Publication date |
---|---|
WO2012086148A1 (ja) | 2012-06-28 |
JPWO2012086148A1 (ja) | 2014-05-22 |
US20130024849A1 (en) | 2013-01-24 |
US8881124B2 (en) | 2014-11-04 |
CN103250135A (zh) | 2013-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5810316B2 (ja) | コンパイル装置、コンパイルプログラム及びループ並列化方法 | |
JP3664473B2 (ja) | プログラムの最適化方法及びこれを用いたコンパイラ | |
JP2921190B2 (ja) | 並列実行方式 | |
Du et al. | A cost-driven compilation framework for speculative parallelization of sequential programs | |
JP4042604B2 (ja) | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム | |
JP6141365B2 (ja) | 逐次コンピュータプログラムコードを並列処理する方法及びシステム | |
Oancea et al. | Logical inference techniques for loop parallelization | |
US8336038B2 (en) | System and method for parallel execution of a program | |
US9195444B2 (en) | Compiler method and compiler apparatus for optimizing a code by transforming a code to another code including a parallel processing instruction | |
JPH11167492A (ja) | ループ飛び出し文を含むループに対する配列サマリ解析方法 | |
KR20140131200A (ko) | 멀티스레드 프로그램 코드의 변환 장치 및 방법 | |
JPH04293150A (ja) | コンパイル方法 | |
JP5218129B2 (ja) | コンパイル装置およびコンパイルプログラム | |
WO2011090032A1 (ja) | 並列処理プログラム生成方法、並列処理プログラム生成プログラム、及び並列処理プログラム生成装置 | |
JP2008015665A (ja) | プログラム解析方法及びプログラム解析装置 | |
Shao et al. | Map-reduce inspired loop parallelization on CGRA | |
JP2009169862A (ja) | プログラム変換装置、方法、プログラムおよび記録媒体 | |
JP3551352B2 (ja) | ループ分割方法 | |
JP2007108838A (ja) | コンパイル方法及びコンパイル装置 | |
JPH0512033A (ja) | 並列化コンパイル方式 | |
JPS62169272A (ja) | ベクトル演算列ル−プアンロ−リング処理方式 | |
Gao et al. | Design and Implementation of A Multi-Core CPU Compilation Optimization Framework Based on MLIR | |
JP2518504B2 (ja) | 目的プログラム生成装置 | |
JP2004152204A (ja) | 並列化コンパイラ装置 | |
JP2001175617A (ja) | コンパイラ並列化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140605 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20140606 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20141008 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150203 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150302 |
|
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: 20150324 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150417 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5810316 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
LAPS | Cancellation because of no payment of annual fees |