[go: up one dir, main page]

JP2018132981A - Information processing apparatus having accelerator and information processing method - Google Patents

Information processing apparatus having accelerator and information processing method Download PDF

Info

Publication number
JP2018132981A
JP2018132981A JP2017026835A JP2017026835A JP2018132981A JP 2018132981 A JP2018132981 A JP 2018132981A JP 2017026835 A JP2017026835 A JP 2017026835A JP 2017026835 A JP2017026835 A JP 2017026835A JP 2018132981 A JP2018132981 A JP 2018132981A
Authority
JP
Japan
Prior art keywords
program
fpga
information processing
accelerator
hardware accelerator
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017026835A
Other languages
Japanese (ja)
Inventor
祐史 西川
Yushi Nishikawa
祐史 西川
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2017026835A priority Critical patent/JP2018132981A/en
Publication of JP2018132981A publication Critical patent/JP2018132981A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】ハードウェアアクセラレータの規模を考慮してオフロードする機能を決定する必要性がなくなる上に、オフロードする機能を効率的に決定できるようにする。【解決手段】情報処理装置1は、アプリケーションのソースプログラムをプロセッサ用のプログラムに変換し、ソースプログラムにおける指令されたオフロード可能なプログラムからハードウェアアクセラレータ用のプログラムを生成するソースプログラム変換手段4と、プログラムの実行状況を監視する実行状況監視手段5と、ハードウェアアクセラレータの余裕能力を判定するアクセラレータ判定手段6と、実行状況監視手段の監視結果とアクセラレータ判定手段の判定結果とに基づいて、アプリケーションプログラムの実行中に、ハードウェアアクセラレータにオフロードするプログラムを決定するオフロード決定手段7とを備える。【選択図】図7PROBLEM TO BE SOLVED: To eliminate the need to determine an offload function in consideration of the scale of a hardware accelerator, and to efficiently determine an offload function. An information processing apparatus 1 has a source program conversion means 4 that converts an application source program into a program for a processor and generates a program for a hardware accelerator from an instructed offloadable program in the source program. , The application based on the execution status monitoring means 5 for monitoring the execution status of the program, the accelerator determination means 6 for determining the margin capacity of the hardware accelerator, and the monitoring result of the execution status monitoring means and the determination result of the accelerator determination means. The program is provided with an offload determining means 7 for determining a program to be offloaded to the hardware accelerator during execution of the program. [Selection diagram] FIG. 7

Description

本発明は、ハードウェアアクセラレータを用いる情報処理装置および情報処理方法に関する。   The present invention relates to an information processing apparatus and an information processing method using a hardware accelerator.

データセンタなどのHPC(High Performance Computing)が求められる分野において、コンピュータの高性能化と低消費電力を実現するために、プロセッサ(以下、CPU:Central Processing Unit という。)とハードウェアアクセラレータとを組み合わせる技術が採用されている。ビッグデータ解析や画像処理の分野において、CPUとGPU(Graphics Processing Unit)とを結合して高速のデータ処理が実現される。   In areas where high performance computing (HPC) is required, such as data centers, a processor (hereinafter referred to as a CPU: Central Processing Unit) and a hardware accelerator are combined to achieve high performance and low power consumption of computers. Technology is adopted. In the fields of big data analysis and image processing, high-speed data processing is realized by combining a CPU and a GPU (Graphics Processing Unit).

FPGA(Field Programmable Gate Array )は、任意の論理機能を実装できるデバイスである。FPGAの機能は、FPGAが実装された製品の出荷後でも更新可能である。そのような特長を生かして、ハードウェアアクセラレータとしてFPGAが使用されることがある(例えば、特許文献1参照)。   An FPGA (Field Programmable Gate Array) is a device that can implement an arbitrary logical function. The functions of the FPGA can be updated even after shipment of a product in which the FPGA is mounted. Taking advantage of such features, an FPGA may be used as a hardware accelerator (see, for example, Patent Document 1).

CPUとハードウェアアクセラレータとしてのFPGAとを含むシステムにおいて、FPGAは、例えば、CPUの負荷が大きくなる特定の処理をCPUに代わって処理する。処理の肩代わりは、オフロードと呼ばれる。負荷が大きくなる処理があらかじめ想定可能である場合、例えば特許文献1に記載されているように、FPGAの規模(容量)を考慮して、特定の処理を実行するためのFPGAの機能があらかじめ選定される。   In a system including a CPU and an FPGA as a hardware accelerator, the FPGA performs, for example, a specific process that increases the load on the CPU instead of the CPU. The shoulder of processing is called off-road. When a process that increases the load can be assumed in advance, for example, as described in Patent Document 1, an FPGA function for executing a specific process is selected in consideration of the scale (capacity) of the FPGA. Is done.

一例として、CPUとFPGAとを含むシステムの外部で、アプリケーションプログラムをテスト的に実行し、実行結果に基づいてオフロードすべき特定の処理の選定が行われる。そして、選定された特定の処理のFPGA用のプログラムが作成され、FPGAにロードされる。その後、CPUとFPGAとを含むシステムにおいて、アプリケーションプログラムが実際に実行される。   As an example, an application program is executed as a test outside a system including a CPU and an FPGA, and a specific process to be offloaded is selected based on the execution result. Then, a program for the selected specific processing FPGA is created and loaded into the FPGA. Thereafter, the application program is actually executed in a system including the CPU and the FPGA.

特許文献2および特許文献3には、CPUとFPGAとを含むシステムに入力されるデータの処理内容およびデータ処理量に応じて動的にFPGAを再構成することが記載されている。   Patent Documents 2 and 3 describe that an FPGA is dynamically reconfigured according to the processing content and data processing amount of data input to a system including a CPU and an FPGA.

特開2003−241975号公報JP 2003-241975 A 特開2007−183726号公報JP 2007-183726 A 特開2013−171435号公報JP 2013-171435 A

特許文献2に記載された装置は、使用頻度が高いソフトウェアモジュール(CPUで実行されている機能)を、ハードウェアモジュール(FPGAで実行されている機能)に割り当てるように構成されている(特許文献2の段落0019,0020等参照)。上述したように、オフロード対象の特定の処理があらかじめ選定される方式では、特定の処理を選定するための処理(例えば、テスト的なプログラムの実行)が求められるので手間がかかる反面、CPUとFPGAとを含むシステムは、簡便にオフロード対象を決定できるという利点がある。しかし、特許文献2に記載された装置では、そのような効果は考慮されていない。特許文献2に記載された装置は、動的なハードウェアモジュールの割り当てを行っているが、ハードウェアモジュールの割り当ては、モジュールの使用頻度のみに基づいて行われている。   The device described in Patent Document 2 is configured to allocate a software module (function executed by a CPU) that is frequently used to a hardware module (function executed by an FPGA) (Patent Document). 2 paragraphs 0019 and 0020). As described above, in the method in which a specific process to be offloaded is selected in advance, a process for selecting a specific process (for example, execution of a test program) is required. A system including an FPGA has an advantage that an offload target can be easily determined. However, in the apparatus described in Patent Document 2, such an effect is not considered. The device described in Patent Document 2 performs dynamic hardware module allocation, but hardware module allocation is performed based only on the frequency of use of the module.

特許文献3に記載された装置は、CPUで実現される機能をソフトウェア(SW)機能とし、FPGAで実現される機能をハードウェア(HW)機能とする。そして、リソースマネージャは、SWリソースおよびHWリソースの利用状況の情報と処理内容の情報とを管理する。すなわち、リソースマネージャは、どのソフトウェア資源がどの程度利用されているかを把握できる。また、リソースマネージャは、どのハードウェア資源がどの程度利用されているかを把握できる。よって、アプリケーションを実行するために必要な処理機能に対して、効率的な機能の割り当てを行うことができるとされている(特許文献3の段落0026等参照)。   In the device described in Patent Document 3, a function realized by a CPU is a software (SW) function, and a function realized by an FPGA is a hardware (HW) function. Then, the resource manager manages information on the usage status of SW resources and HW resources and information on processing contents. That is, the resource manager can grasp how much software resources are used. Moreover, the resource manager can grasp how much hardware resources are used. Therefore, it is said that efficient function assignment can be performed for processing functions necessary for executing an application (see paragraph 0026 of Patent Document 3).

しかし、特許文献3に記載された装置でも、あらかじめ特定の処理を選定するための処理が実行されることによる効果は考慮されていない。   However, even the apparatus described in Patent Document 3 does not take into account the effect of executing a process for selecting a specific process in advance.

本発明は、ハードウェアアクセラレータを用いる場合に、ハードウェアアクセラレータの規模を考慮してオフロードする機能を決定する必要性がなくなる上に、オフロードする機能を効率的に決定できるようにすることを目的とする。   The present invention eliminates the necessity of determining a function to be offloaded in consideration of the scale of the hardware accelerator when using a hardware accelerator, and makes it possible to efficiently determine the function to be offloaded. Objective.

本発明によるアクセラレータを有する情報処理装置は、プロセッサと内部構成を再構築可能なハードウェアアクセラレータとを備えたアクセラレータを有する情報処理装置であって、アプリケーションのソースプログラムをプロセッサ用のプログラムに変換し、ソースプログラムにおける指令されたオフロード可能なプログラムからハードウェアアクセラレータ用のプログラムを生成するソースプログラム変換手段と、プログラムの実行状況を監視する実行状況監視手段と、ハードウェアアクセラレータの余裕能力を判定するアクセラレータ判定手段と、実行状況監視手段の監視結果とアクセラレータ判定手段の判定結果とに基づいて、アプリケーションプログラムの実行中に、ハードウェアアクセラレータにオフロードするプログラムを決定するオフロード決定手段とを備えたことを特徴とする。   An information processing apparatus having an accelerator according to the present invention is an information processing apparatus having an accelerator including a processor and a hardware accelerator capable of reconfiguring an internal configuration, and converts an application source program into a program for a processor, Source program conversion means for generating a program for a hardware accelerator from a commandable offloadable program in the source program, execution status monitoring means for monitoring the execution status of the program, and an accelerator for determining the spare capacity of the hardware accelerator Based on the determination means, the monitoring result of the execution status monitoring means, and the determination result of the accelerator determination means, a program to be offloaded to the hardware accelerator during execution of the application program is determined. Characterized by comprising a offload determining means for.

本発明による情報処理方法は、プロセッサと内部構成を再構築可能なハードウェアアクセラレータとを備えた情報処理装置で実行される情報処理方法であって、アプリケーションのソースプログラムをプロセッサ用のプログラムに変換し、ソースプログラムにおける指令されたオフロード可能なプログラムからハードウェアアクセラレータ用のプログラムを生成し、プログラムの実行状況を監視し、ハードウェアアクセラレータの余裕能力を判定し、プログラムの実行状況の監視結果とハードウェアアクセラレータの余裕能力の判定結果とに基づいて、アプリケーションプログラムの実行中に、ハードウェアアクセラレータにオフロードするプログラムを決定することを特徴とする。   An information processing method according to the present invention is an information processing method executed by an information processing apparatus including a processor and a hardware accelerator capable of reconfiguring an internal configuration, and converts an application source program into a program for a processor. Generate a hardware accelerator program from the offloadable program commanded in the source program, monitor the execution status of the program, determine the spare capacity of the hardware accelerator, monitor the execution status of the program and the hardware A program to be offloaded to the hardware accelerator is determined during execution of the application program based on the determination result of the spare capacity of the hardware accelerator.

本発明によれば、ハードウェアアクセラレータの規模を考慮してオフロードする機能を決定する必要性をなくし、かつ、オフロードする機能を効率的に決定できる。   According to the present invention, it is possible to eliminate the necessity of determining the function to be offloaded in consideration of the scale of the hardware accelerator and to efficiently determine the function to be offloaded.

情報処理装置の第1の実施形態を示すブロック図である。1 is a block diagram illustrating a first embodiment of an information processing device. コンパイラの処理を説明するための模式図である。It is a schematic diagram for demonstrating the process of a compiler. OSの処理と、FPGAアクセラレータを含むハードウェアの処理とを説明するための説明図である。It is explanatory drawing for demonstrating the process of OS, and the process of the hardware containing a FPGA accelerator. FPGA用プログラムがFPGAアクセラレータに組み込まれる様子を示す説明図である。It is explanatory drawing which shows a mode that the program for FPGA is integrated in an FPGA accelerator. アプリケーションプログラムに基づいて実行されるアプリケーションの実行中の情報処理装置の動作の一例を示すフローチャートである。It is a flowchart which shows an example of operation | movement of the information processing apparatus in execution of the application performed based on an application program. アプリケーションプログラムの実行中にFPGA用プログラムを生成する情報処理装置の動作の一例を示すフローチャートである。It is a flowchart which shows an example of operation | movement of the information processing apparatus which produces | generates the program for FPGAs during execution of an application program. 本発明による情報処理装置の主要部を示すブロック図である。It is a block diagram which shows the principal part of the information processing apparatus by this invention.

実施形態1.
以下、本発明の実施形態を図面を参照して説明する。
Embodiment 1. FIG.
Hereinafter, embodiments of the present invention will be described with reference to the drawings.

図1は、本発明による情報処理装置の第1の実施形態を示すブロック図である。図1に示すように、情報処理装置は、CPU11とFPGAアクセラレータ12とを有する。FPGAアクセラレータ12は、ハードウェアアクセラレータとなるFPGAであるが、複数のFPGA素子を含んでいてもよい。CPU11とFPGAアクセラレータ12とは、例えば、PCI Express (登録商標)規格のバスでデータの送受信を行う。   FIG. 1 is a block diagram showing a first embodiment of an information processing apparatus according to the present invention. As illustrated in FIG. 1, the information processing apparatus includes a CPU 11 and an FPGA accelerator 12. The FPGA accelerator 12 is an FPGA serving as a hardware accelerator, but may include a plurality of FPGA elements. For example, the CPU 11 and the FPGA accelerator 12 transmit and receive data via a PCI Express (registered trademark) standard bus.

情報処理装置は、さらに、コンパイラ13、実行状況監視部21、FPGAプログラム管理テーブル22、関数テーブル31、関数テーブル管理部32、FPGA資源管理部41、FPGA資源管理テーブル42、FPGAプログラム管理部43、および動的オフロード部51を含む。   The information processing apparatus further includes a compiler 13, an execution status monitoring unit 21, an FPGA program management table 22, a function table 31, a function table management unit 32, an FPGA resource management unit 41, an FPGA resource management table 42, an FPGA program management unit 43, And a dynamic offload unit 51.

コンパイラ13は、アプリケーションプログラムのソースプログラムをCPU11が実行可能なCPU用プログラム(CPU用のオブジェクトプログラム)に変換する。さらに、本実施形態では、コンパイラ13は、ソースコードの構文解析によってFPGAアクセラレータ12にオフロード可能な処理であると判断した場合には、FPGA用プログラム(FPGA用のオブジェクトプログラム)を生成する。FPGA用プログラムは、対応するCPU用プログラムが実現する機能と同じ機能をFPGAアクセラレータ12が実現するように、FPGAアクセラレータ12の構成を再構築するためのデータの集まりである。   The compiler 13 converts the source program of the application program into a CPU program (CPU object program) that can be executed by the CPU 11. Further, in the present embodiment, when the compiler 13 determines that the process can be offloaded to the FPGA accelerator 12 by the syntax analysis of the source code, the compiler 13 generates an FPGA program (FPGA object program). The FPGA program is a collection of data for reconfiguring the configuration of the FPGA accelerator 12 so that the FPGA accelerator 12 realizes the same function as the function realized by the corresponding CPU program.

実行状況監視部21は、関数群の実行状況を監視し、実行状況をFPGAプログラム管理テーブル22に記録する。関数は、アプリケーションプログラムにおけるひとまとまりの処理(ルーチン)である。実行状況として、例えば、オフロード状態(オフロードされているか否か)、実行頻度、関数のFPGA用プログラムの容量、優先度等がある。なお、優先度については、例えば、実行頻度が高い関数に対して高い優先度が設定されたり、実行頻度が高い関数が暗黙的に優先度が高いと見なされたり、ソースプログラムに埋め込まれているデータに基づいてコンパイル時に優先度の設定がなされたりする。   The execution status monitoring unit 21 monitors the execution status of the function group and records the execution status in the FPGA program management table 22. A function is a group of processes (routines) in an application program. The execution status includes, for example, an offload state (whether or not offloading is performed), an execution frequency, a capacity of a function FPGA program, and a priority. As for the priority, for example, a high priority is set for a function with a high execution frequency, or a function with a high execution frequency is implicitly considered to have a high priority, or is embedded in a source program. Priorities are set at compile time based on data.

関数テーブル31は、アプリケーションプログラムを構成する関数へのジャンプテーブルである。関数テーブル31に記録されるデータ(エントリ)は、一般に、コンパイラ13やリンカーによって作成され、情報処理装置の主記憶などに記憶される。具体的には、関数テーブル31には、それぞれの関数について、CPU用プログラムとFPGA用プログラムとのうちのいずれを使用すべきかを示すデータがエントリとして設定される。図1には、関数Func1,Func2,Func3,Func4 が例示されている。なお、矢印の先のFuncx-y (x:1〜4)の"y" が"C"になっているものは、CPU用プログラムを示し、"F" になっているものは、FPGA用プログラムを示す。   The function table 31 is a jump table to functions constituting the application program. Data (entries) recorded in the function table 31 is generally created by the compiler 13 or linker and stored in the main memory of the information processing apparatus. Specifically, data indicating which of the CPU program and the FPGA program should be used for each function is set in the function table 31 as an entry. FIG. 1 illustrates functions Func1, Func2, Func3, and Func4. In addition, when “y” of Funxx-y (x: 1 to 4) at the end of the arrow is “C”, a CPU program is indicated, and when “F” is indicated, an FPGA program is indicated. Indicates.

関数テーブル管理部32は、FPGA用プログラムとCPU用プログラムのどちらを呼び出すかを管理する。   The function table management unit 32 manages whether to call an FPGA program or a CPU program.

FPGA資源管理部41は、FPGAアクセラレータ12の未使用ゲートアレイ数(空き容量)などを監視し、監視結果をFPGA資源管理テーブル42に記録する。   The FPGA resource management unit 41 monitors the number of unused gate arrays (free capacity) of the FPGA accelerator 12 and records the monitoring result in the FPGA resource management table 42.

FPGAプログラム管理部43は、FPGAプログラム管理テーブル22に記録されているデータとFPGA資源管理テーブル42に記録されているデータとに基づいて動的オフロード部51および関数テーブル管理部32を制御する。   The FPGA program management unit 43 controls the dynamic offload unit 51 and the function table management unit 32 based on the data recorded in the FPGA program management table 22 and the data recorded in the FPGA resource management table 42.

動的オフロード部51は、指定されたFPGA用プログラムなどをFPGAアクセラレータ12にロードし、必要なデバイスドライバをOS(Operating System:図1において図示せず)に組み込むための制御を行う。   The dynamic offload unit 51 loads a designated FPGA program or the like into the FPGA accelerator 12 and performs control for incorporating a necessary device driver into an OS (Operating System: not shown in FIG. 1).

次に、情報処理装置の動作を説明する。図2は、コンパイラ13の処理を説明するための模式図である。本実施形態では、ソースプログラム101には、FPGAアクセラレータ12にオフロード可能な処理かどうかを特定可能な構文が含まれる。例えば、図2に示すように、オフロード可能な処理に対して、"#FPGA_OFFLOAD"といったプラグマ (pragma:コンパイラに特定の情報を渡すために使用する識別子(指令))が付されている。なお、オフロード可能な処理かどうかを特定可能であることを指定できれば、他のコンパイラオプションを使用してもよい。   Next, the operation of the information processing apparatus will be described. FIG. 2 is a schematic diagram for explaining the processing of the compiler 13. In the present embodiment, the source program 101 includes a syntax that can specify whether the processing can be offloaded to the FPGA accelerator 12. For example, as shown in FIG. 2, a pragma such as “#FPGA_OFFLOAD” (pragma: an identifier (command) used to pass specific information to the compiler) is attached to a process that can be offloaded. Note that other compiler options may be used as long as it can be specified that it is possible to specify whether the processing can be offloaded.

コンパイラ13は、ソースプログラム101を入力し、構文解析を行う(ステップS11)。   The compiler 13 inputs the source program 101 and performs syntax analysis (step S11).

オフロード可能な処理であることを示す指令等を見いだすと(ステップS12)、ソースコードからFPGA用プログラム(FPGA用オブジェクト)を生成し(ステップS13)、FPGA用プログラム102を、情報処理装置の補助記憶などに格納する。なお、本実施形態では、関数Func1 は、オフロード不能な処理である。オフロード不能な処理は、一例として、オフロードしても処理の高速化が見込めないような処理や、FPGAアクセラレータ12の資源を大量消費するような処理である。   When a command indicating that the process can be offloaded is found (step S12), an FPGA program (FPGA object) is generated from the source code (step S13), and the FPGA program 102 is supported by the information processing apparatus. Store in memory. In the present embodiment, the function Func1 is a process that cannot be offloaded. For example, processing that cannot be offloaded is processing that cannot be accelerated even when offloaded, or processing that consumes a large amount of resources of the FPGA accelerator 12.

その後、コンパイラ13は、ソースコードをCPU用プログラムに変換し(ステップS14)、CPU用プログラム103を、情報処理装置の主記憶や補助記憶などに格納する。   Thereafter, the compiler 13 converts the source code into a CPU program (step S14), and stores the CPU program 103 in the main memory or auxiliary memory of the information processing apparatus.

図3は、CPU11によって実行されるOS61の処理と、FPGAアクセラレータ12を含むハードウェア81の処理とを説明するための説明図である。   FIG. 3 is an explanatory diagram for explaining the processing of the OS 61 executed by the CPU 11 and the processing of the hardware 81 including the FPGA accelerator 12.

ハードウェア81には、FPGA用プログラム102をFPGAアクセラレータ12に組み込むための機構であるFPGAプログラム組み込み機能部82(図1において図示せず)が含まれている。FPGAプログラム組み込み機能部82は、動的オフロード部51からのFPGA用プログラム組み込み要求に応じて、補助記憶等の記憶部91に格納されているFPGA用プログラム102をFPGAアクセラレータ12に組み込む。具体的には、FPGAアクセラレータ12の構成を再構築する。   The hardware 81 includes an FPGA program incorporation function unit 82 (not shown in FIG. 1) that is a mechanism for incorporating the FPGA program 102 into the FPGA accelerator 12. In response to an FPGA program incorporation request from the dynamic offload unit 51, the FPGA program incorporation function unit 82 incorporates the FPGA program 102 stored in the storage unit 91 such as auxiliary storage into the FPGA accelerator 12. Specifically, the configuration of the FPGA accelerator 12 is reconstructed.

また、OS61は、デバイスドライバ組み込み機能62を備えている。OS61は、例えば動的オフロード部51からのCPU用プログラム組み込み要求に応じて、デバイスドライバ組み込み機能62を用いて、OS61に、記憶部71に格納されているデバイスドライバ72を組み込む。   The OS 61 also includes a device driver built-in function 62. For example, in response to a CPU program incorporation request from the dynamic offload unit 51, the OS 61 incorporates a device driver 72 stored in the storage unit 71 into the OS 61 using the device driver incorporation function 62.

図4は、FPGA用プログラムがFPGAアクセラレータ12に組み込まれる(ロードされる)様子を示す説明図である。図4に示す例では、動的オフロード部51は、実行状況監視部21の監視結果等に基づく所定の条件が成立したので、関数Func2 および関数Func4 のFPGA用プログラムに相当するFunc2-F およびFunc4-F が、FPGAアクセラレータ12にロードされることが例示されている。なお、同時に、対応するデバイスドライバがOS61に組み込まれる。   FIG. 4 is an explanatory diagram showing how the FPGA program is incorporated (loaded) into the FPGA accelerator 12. In the example illustrated in FIG. 4, the dynamic offload unit 51 satisfies the predetermined condition based on the monitoring result of the execution status monitoring unit 21, so that the Func2-F corresponding to the FPGA program of the function Func2 and the function Func4 and It is illustrated that Func4-F is loaded into the FPGA accelerator 12. At the same time, the corresponding device driver is incorporated into the OS 61.

図5は、アプリケーションプログラムに基づいて実行されるアプリケーションの実行中の情報処理装置の動作の一例を示すフローチャートである。   FIG. 5 is a flowchart illustrating an example of the operation of the information processing apparatus during execution of an application executed based on the application program.

アプリケーションの実行中に、実行状況監視部21は、各関数の実行頻度(CPU11での実行頻度およびFPGAアクセラレータ12での実行頻度)を判定する(ステップS101)。実行頻度は、例えば、所定時間あたりの実行回数であるが、単純に実行回数の累積値であってもよい。さらに、実行状況監視部21は、関数の実行時間を測定してもよい。実行状況監視部21は、実行頻度を更新したら、更新後の実行頻度をFPGAプログラム管理テーブル22に記録する(ステップS102)。   During execution of the application, the execution status monitoring unit 21 determines the execution frequency of each function (the execution frequency in the CPU 11 and the execution frequency in the FPGA accelerator 12) (step S101). The execution frequency is, for example, the number of executions per predetermined time, but may simply be a cumulative value of the number of executions. Furthermore, the execution status monitoring unit 21 may measure the execution time of the function. After updating the execution frequency, the execution status monitoring unit 21 records the updated execution frequency in the FPGA program management table 22 (step S102).

なお、例えば、関数の実行頻度が所定のしきい値以下になったときに、動的オフロード部51は、その関数に関してオフロードを解除する。その結果、FPGAアクセラレータ12の空き容量(未使用のゲートアレイ数)が増加する。   For example, when the function execution frequency becomes equal to or lower than a predetermined threshold, the dynamic offload unit 51 cancels offload for the function. As a result, the free capacity (the number of unused gate arrays) of the FPGA accelerator 12 increases.

FPGA資源管理部41は、例えば、関数のオフロードが行われたとき、および、オフロード解除が行われたときに、FPGAアクセラレータ12の空き容量を算出する(ステップS103).そして、実行状況監視部21は、空き容量をFPGA資源管理テーブル42に記録する(ステップS104)。   The FPGA resource management unit 41 calculates, for example, the free capacity of the FPGA accelerator 12 when the function is offloaded and when the offload is released (step S103). Then, the execution status monitoring unit 21 records the free capacity in the FPGA resource management table 42 (step S104).

なお、FPGA資源管理部41は、空き容量の監視を常時行ったり、所定時間ごとに空き容量の算出を行ってもよい。   Note that the FPGA resource management unit 41 may always monitor the free space or calculate the free space every predetermined time.

FPGAプログラム管理部43は、関数に関して所定の条件が成立したら(ステップS105)、その関数をオフロードすることに決定する。所定の条件は、例えば、実行頻度が所定のしきい値を越え、かつ、その関数のFPGA用プログラムの実行に必要とされるゲートアレイ数が空き容量以下であることである。実行頻度が所定のしきい値を越えていなくても、その関数の実行時間が所定時間よりも長く、かつ、その関数のFPGA用プログラムの実行に必要とされるゲートアレイ数が空き容量以下であれば、FPGAプログラム管理部43は、その関数をオフロードすることに決定してもよい。また、FPGAプログラム管理部43は、あらかじめ決められている時間以上オフロードが実行されず、空き容量が十分である場合に、実行頻度が高い関数や実行時間が長い関数をオフロードすることに決定してもよい。   The FPGA program management unit 43 determines to offload the function when a predetermined condition regarding the function is satisfied (step S105). The predetermined condition is, for example, that the execution frequency exceeds a predetermined threshold and the number of gate arrays required for executing the FPGA program of the function is equal to or less than the free capacity. Even if the execution frequency does not exceed a predetermined threshold, the execution time of the function is longer than the predetermined time, and the number of gate arrays required for executing the FPGA program of the function is less than the free capacity. If there is, the FPGA program management unit 43 may decide to offload the function. Further, the FPGA program management unit 43 decides to offload a function having a high execution frequency or a function having a long execution time when the offload is not executed for a predetermined time and the free space is sufficient. May be.

FPGAプログラム管理部43は、オフロードすることに決定した場合、動的オフロード部51に、その関数のオフロードを要求する。動的オフロード部51は、要求に応じて、その関数のオフロードを実行する(ステップS106)。具体的には、動的オフロード部51は、FPGAプログラム組み込み機能部82に対して、FPGA用プログラム組み込み要求を出す(図3参照)。オフロード対象の関数が例えばFunc2 であれば、FPGAプログラム組み込み機能部82は、FPGA用プログラムFunc2-F をFPGAアクセラレータ12にロードする。また、動的オフロード部51は、OS61に、FPGA用プログラムFunc2-F に対応するデバイスドライバについてデバイスドライバ組み込み要求を行う(図3参照)。   If the FPGA program management unit 43 decides to offload, it requests the dynamic offload unit 51 to offload the function. The dynamic offload unit 51 executes offload of the function in response to the request (step S106). Specifically, the dynamic offload unit 51 issues an FPGA program incorporation request to the FPGA program incorporation function unit 82 (see FIG. 3). If the offload target function is, for example, Func2, the FPGA program built-in function unit 82 loads the FPGA program Func2-F into the FPGA accelerator 12. Further, the dynamic offload unit 51 makes a device driver incorporation request for the device driver corresponding to the FPGA program Func2-F to the OS 61 (see FIG. 3).

また、FPGAプログラム管理部43は、関数テーブル管理部32に、例えばFunc2 についてのエントリ変更を要求する。関数テーブル管理部32は、エントリを、Func2 についてはFPGA用プログラムFunc2-F が呼び出されるように変更する。   Further, the FPGA program management unit 43 requests the function table management unit 32 to change an entry for, for example, Func2. The function table management unit 32 changes the entry so that the FPGA program Func2-F is called for Func2.

本実施形態では、あらかじめFPGAの規模に応じてオフロードする機能を定義する必要はない。換言すれば、ソフトウェアとは独立して、FPGAの規模を設計したり、FPGA素子を選定できる。   In this embodiment, it is not necessary to define a function for offloading in advance according to the scale of the FPGA. In other words, an FPGA scale can be designed and an FPGA element can be selected independently of software.

また、開発者(設計者)は、ハードウェアアクセラレータの有無やハードウェアアクセラレータの規模を意識せずにアプリケーションの開発ができる。   In addition, a developer (designer) can develop an application without being aware of the presence or absence of a hardware accelerator and the scale of the hardware accelerator.

さらに、オフロードの効果が高い処理を優先的にオフロードできるようになる。   Furthermore, it becomes possible to preferentially offload a process having a high offload effect.

なお、本実施形態では、FPGAがプロセッサのハードウェアアクセラレータとして使用される場合を例にしたが、GPU(Graphics Processing Unit)やDSP(Digital Signal Processor)などがハードウェアアクセラレータとして使用される場合にも本実施形態を適用できる。ただし、その場合には、一般にGPUやDSPは、内部構成を再構築可能な(reconfigurable)デバイスではないので、上記の実施形態における「空き容量」は、ゲートアレイ数ではなく、余裕能力等で表現される。なお、余裕能力は、「空き容量」を含む上位概念でもある。   In this embodiment, the case where the FPGA is used as a hardware accelerator of the processor is taken as an example, but the case where a GPU (Graphics Processing Unit), a DSP (Digital Signal Processor), or the like is used as a hardware accelerator is also exemplified. This embodiment can be applied. However, in that case, since the GPU and DSP are generally not reconfigurable devices whose internal configuration can be reconfigured, the “free capacity” in the above embodiment is expressed not by the number of gate arrays but by a margin capacity or the like. Is done. The margin capacity is also a superordinate concept including “free capacity”.

また、ハードウェアアクセラレータとしてFPGAが使用されることが好ましいが、内部構成を再構築可能な他のデバイス(例えば、CPLD:Complex Programmable Logic Device )を用いた場合でも、本実施形態を適用することができる。   Although it is preferable to use an FPGA as a hardware accelerator, this embodiment can be applied even when another device (for example, CPLD: Complex Programmable Logic Device) whose internal configuration can be reconfigured is used. it can.

実施形態2.
第1の実施形態では、アプリケーションプログラムの実行前に、コンパイラによってFPGA用プログラムが生成されたが、アプリケーションプログラムの実行中にFPGA用プログラムを生成するようにしてもよい。
Embodiment 2. FIG.
In the first embodiment, the FPGA program is generated by the compiler before the execution of the application program. However, the FPGA program may be generated during the execution of the application program.

図6は、アプリケーションプログラムの実行中にFPGA用プログラムを生成する情報処理装置の動作の一例を示すフローチャートである。なお、情報処理装置の構成は、図1に示された第1の実施形態の構成と同じである。   FIG. 6 is a flowchart illustrating an example of the operation of the information processing apparatus that generates the FPGA program during execution of the application program. The configuration of the information processing apparatus is the same as that of the first embodiment shown in FIG.

図6(A)には、情報処理装置が、CPU用プログラムで処理#1を実行し(ステップS201)、CPU用プログラムで処理#2を繰り返し実行し(ステップS202,S204)、その後、CPU用プログラムで処理#3を実行する(ステップS205)例が示されている。   In FIG. 6A, the information processing apparatus executes the process # 1 by the CPU program (step S201), repeatedly executes the process # 2 by the CPU program (steps S202 and S204), and then for the CPU. An example in which process # 3 is executed by a program (step S205) is shown.

図6(B)には、処理#2がFPGA用プログラムで実行される(ステップS203)例が示されている。具体的には、情報処理装置において、FPGAプログラム管理部43が関数をオフロードすることに決定したときに、動的オフロード部51は、コンパイラに対して、処理#2のソースコードのコンパイル(FPGA用プログラムの生成)を要求する。生成されたFPGA用プログラムは、第1の実施形態の場合と同様に、情報処理装置の補助記憶などに格納される。   FIG. 6B shows an example in which the process # 2 is executed by the FPGA program (step S203). Specifically, in the information processing apparatus, when the FPGA program management unit 43 decides to offload the function, the dynamic offload unit 51 instructs the compiler to compile the source code of process # 2 ( Request generation of an FPGA program). The generated FPGA program is stored in an auxiliary storage or the like of the information processing apparatus as in the case of the first embodiment.

そして、動的オフロード部51は、FPGAプログラム組み込み機能部82に対して、FPGA用プログラム組み込み要求を出す(図3参照)。FPGAプログラム組み込み機能部82は、FPGA用プログラムをFPGAアクセラレータ12にロードする。また、動的オフロード部51は、OS61に、FPGA用プログラムに対応するデバイスドライバのデバイスドライバ組み込み要求を行う(図3参照)。   Then, the dynamic offload unit 51 issues an FPGA program incorporation request to the FPGA program incorporation function unit 82 (see FIG. 3). The FPGA program built-in function unit 82 loads the FPGA program into the FPGA accelerator 12. Further, the dynamic offload unit 51 makes a device driver incorporation request for the device driver corresponding to the FPGA program to the OS 61 (see FIG. 3).

また、FPGAプログラム管理部43は、関数テーブル管理部32に、FPGA用プログラムについてのエントリ変更を要求する。関数テーブル管理部32は、エントリを、FPGA用プログラムが呼び出されるように変更する。   Further, the FPGA program management unit 43 requests the function table management unit 32 to change the entry for the FPGA program. The function table management unit 32 changes the entry so that the FPGA program is called.

図7は、本発明による情報処理装置の主要部を示すブロック図である。図7に示すように、情報処理装置1は、プロセッサ2(例えば、CPU11)と内部構成を再構築可能なハードウェアアクセラレータ3((例えば、FPGAアクセラレータ12)とを備え、アプリケーションのソースプログラムをプロセッサ用のプログラム(例えば、CPU用プログラム)に変換し、ソースプログラムにおける指令されたオフロード可能なプログラムからハードウェアアクセラレータ用のプログラム(例えば、FPGA用プログラム)を生成するソースプログラム変換手段4(例えば、コンパイラ13で実現される。)と、プログラムの実行状況を監視する実行状況監視手段5(例えば、実行状況監視部21で実現される。)と、ハードウェアアクセラレータの余裕能力(例えば、FPGAの空き容量)を判定するアクセラレータ判定手段6(例えば、FPGA資源管理部41で実現される。)と、実行状況監視手段5の監視結果とアクセラレータ判定手段6の判定結果とに基づいて、アプリケーションプログラムの実行中に、ハードウェアアクセラレータ3にオフロードするプログラム(例えば関数)を決定するオフロード決定手段7(例えば、FPGAプログラム管理部43で実現される。)とを備えている。   FIG. 7 is a block diagram showing a main part of the information processing apparatus according to the present invention. As illustrated in FIG. 7, the information processing apparatus 1 includes a processor 2 (for example, a CPU 11) and a hardware accelerator 3 (for example, an FPGA accelerator 12) whose internal configuration can be reconfigured, and a source program of an application as a processor. Source program conversion means 4 (for example, a program for FPGA) that generates a program for hardware accelerator (for example, a program for FPGA) from an offloadable program instructed in the source program. And the execution status monitoring means 5 (for example, realized by the execution status monitoring unit 21) for monitoring the execution status of the program, and the spare capacity of the hardware accelerator (for example, the empty space of the FPGA). Capacity) Based on the monitoring unit 6 (for example, realized by the FPGA resource management unit 41), the monitoring result of the execution status monitoring unit 5, and the determination result of the accelerator determining unit 6, Offload determination means 7 (for example, realized by the FPGA program management unit 43) for determining a program (for example, a function) to be offloaded to the accelerator 3 is provided.

情報処理装置は、プロセッサ用のプログラムとハードウェアアクセラレータ用のプログラムとのいずれを使用するのかを特定するためのテーブル(例えば、関数テーブル31)を備えていてもよい。   The information processing apparatus may include a table (for example, a function table 31) for specifying which of a processor program and a hardware accelerator program is used.

1 情報処理装置
2 プロセッサ
3 ハードウェアアクセラレータ
4 ソースプログラム変換手段
5 実行状況監視手段
6 アクセラレータ判定手段
7 オフロード決定手段
11 CPU
12 FPGAアクセラレータ
13 コンパイラ
21 実行状況監視部
22 FPGAプログラム管理テーブル
31 関数テーブル
32 関数テーブル管理部
41 FPGA資源管理部
42 FPGA資源管理テーブル
43 FPGAプログラム管理部
51 動的オフロード部
61 OS
62 デバイスドライバ組み込み機能
71 記憶部
72 デバイスドライバ
81 ハードウェア
82 FPGAプログラム組み込み機能部
91 記憶部
101 ソースプログラム
102 FPGA用プログラム
103 ソースプログラム
DESCRIPTION OF SYMBOLS 1 Information processing apparatus 2 Processor 3 Hardware accelerator 4 Source program conversion means 5 Execution condition monitoring means 6 Accelerator determination means 7 Offload determination means 11 CPU
DESCRIPTION OF SYMBOLS 12 FPGA accelerator 13 Compiler 21 Execution condition monitoring part 22 FPGA program management table 31 Function table 32 Function table management part 41 FPGA resource management part 42 FPGA resource management table 43 FPGA program management part 51 Dynamic offload part 61 OS
62 Device Driver Embedded Function 71 Storage Unit 72 Device Driver 81 Hardware 82 FPGA Program Embedded Function Unit 91 Storage Unit 101 Source Program 102 FPGA Program 103 Source Program

Claims (8)

プロセッサと内部構成を再構築可能なハードウェアアクセラレータとを備えたアクセラレータを有する情報処理装置であって、
アプリケーションのソースプログラムをプロセッサ用のプログラムに変換し、該ソースプログラムにおける指令されたオフロード可能なプログラムからハードウェアアクセラレータ用のプログラムを生成するソースプログラム変換手段と、
プログラムの実行状況を監視する実行状況監視手段と、
前記ハードウェアアクセラレータの余裕能力を判定するアクセラレータ判定手段と、
前記実行状況監視手段の監視結果と前記アクセラレータ判定手段の判定結果とに基づいて、前記アプリケーションプログラムの実行中に、前記ハードウェアアクセラレータにオフロードするプログラムを決定するオフロード決定手段と
を備えたことを特徴とする情報処理装置。
An information processing apparatus having an accelerator including a processor and a hardware accelerator capable of reconfiguring an internal configuration,
Source program conversion means for converting a source program of an application into a program for a processor and generating a program for a hardware accelerator from a commandable offloadable program in the source program;
Execution status monitoring means for monitoring the execution status of the program;
Accelerator determination means for determining a margin capacity of the hardware accelerator;
Offload determination means for determining a program to be offloaded to the hardware accelerator during execution of the application program based on the monitoring result of the execution status monitoring means and the determination result of the accelerator determination means An information processing apparatus characterized by the above.
ハードウェアアクセラレータは、FPGAで実現され、
前記ハードウェアアクセラレータの余裕能力は、前記FPGAの空き容量である
請求項1記載の情報処理装置。
The hardware accelerator is realized by FPGA,
The information processing apparatus according to claim 1, wherein a margin capacity of the hardware accelerator is a free capacity of the FPGA.
ソースプログラムにおける指令は、プラグマである
請求項1または請求項2記載の情報処理装置。
The information processing apparatus according to claim 1, wherein the command in the source program is a pragma.
実行状況監視手段は、プログラムの実行状況として、プログラムの実行頻度を監視する
請求項1から請求項3のうちのいずれか1項に記載の情報処理装置。
The information processing apparatus according to any one of claims 1 to 3, wherein the execution status monitoring unit monitors the execution frequency of the program as the execution status of the program.
プロセッサ用のプログラムとハードウェアアクセラレータ用のプログラムとのいずれを使用するのかを特定するためのテーブルを備えた
請求項1から請求項4のうちのいずれか1項に記載の情報処理装置。
The information processing apparatus according to any one of claims 1 to 4, further comprising a table for specifying which of a processor program and a hardware accelerator program is used.
プロセッサと内部構成を再構築可能なハードウェアアクセラレータとを備えた情報処理装置で実行される情報処理方法であって、
アプリケーションのソースプログラムをプロセッサ用のプログラムに変換し、該ソースプログラムにおける指令されたオフロード可能なプログラムからハードウェアアクセラレータ用のプログラムを生成し、
プログラムの実行状況を監視し、
前記ハードウェアアクセラレータの余裕能力を判定し、
前記プログラムの実行状況の監視結果と前記ハードウェアアクセラレータの余裕能力の判定結果とに基づいて、前記アプリケーションプログラムの実行中に、前記ハードウェアアクセラレータにオフロードするプログラムを決定する
ことを特徴とする情報処理方法。
An information processing method executed by an information processing apparatus including a processor and a hardware accelerator capable of reconfiguring an internal configuration,
Converting a source program of an application into a program for a processor, generating a program for a hardware accelerator from a command capable of being offloaded in the source program,
Monitor program execution status,
Determine the spare capacity of the hardware accelerator,
Information that determines the program to be offloaded to the hardware accelerator during execution of the application program based on the monitoring result of the execution status of the program and the determination result of the spare capacity of the hardware accelerator Processing method.
FPGAで実現されている前記ハードウェアアクセラレータの余裕能力として、前記FPGAの空き容量を判定する
請求項6記載の情報処理方法。
The information processing method according to claim 6, wherein a free capacity of the FPGA is determined as a margin capability of the hardware accelerator realized by an FPGA.
ソースプログラムにおける指令は、プラグマである
請求項6または請求項7記載の情報処理方法。
The information processing method according to claim 6 or 7, wherein the command in the source program is a pragma.
JP2017026835A 2017-02-16 2017-02-16 Information processing apparatus having accelerator and information processing method Pending JP2018132981A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017026835A JP2018132981A (en) 2017-02-16 2017-02-16 Information processing apparatus having accelerator and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017026835A JP2018132981A (en) 2017-02-16 2017-02-16 Information processing apparatus having accelerator and information processing method

Publications (1)

Publication Number Publication Date
JP2018132981A true JP2018132981A (en) 2018-08-23

Family

ID=63248744

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017026835A Pending JP2018132981A (en) 2017-02-16 2017-02-16 Information processing apparatus having accelerator and information processing method

Country Status (1)

Country Link
JP (1) JP2018132981A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2024024001A1 (en) * 2022-07-27 2024-02-01
US20240296249A1 (en) * 2021-06-28 2024-09-05 Nippon Telegraph And Telephone Corporation Integrity verification system of circuit information and integrity verification method of circuit information

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007207136A (en) * 2006-02-06 2007-08-16 Nec Corp Data processor, data processing method, and data processing program
JP2007328416A (en) * 2006-06-06 2007-12-20 Univ Waseda Global compiler for heterogeneous multiprocessors
WO2014002412A1 (en) * 2012-06-26 2014-01-03 日本電気株式会社 Program conversion device and method, processing switching method, method of determining execution scheme and program storage medium therefor, processor system, and parallel execution method
JP2014524607A (en) * 2011-08-02 2014-09-22 インターナショナル・ビジネス・マシーンズ・コーポレーション Techniques for compiling and executing high-level programs on heterogeneous computers
WO2015142538A1 (en) * 2014-03-19 2015-09-24 Qualcomm Incorporated Hardware-based atomic operations for supporting inter-task communication

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007207136A (en) * 2006-02-06 2007-08-16 Nec Corp Data processor, data processing method, and data processing program
JP2007328416A (en) * 2006-06-06 2007-12-20 Univ Waseda Global compiler for heterogeneous multiprocessors
JP2014524607A (en) * 2011-08-02 2014-09-22 インターナショナル・ビジネス・マシーンズ・コーポレーション Techniques for compiling and executing high-level programs on heterogeneous computers
WO2014002412A1 (en) * 2012-06-26 2014-01-03 日本電気株式会社 Program conversion device and method, processing switching method, method of determining execution scheme and program storage medium therefor, processor system, and parallel execution method
WO2015142538A1 (en) * 2014-03-19 2015-09-24 Qualcomm Incorporated Hardware-based atomic operations for supporting inter-task communication

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240296249A1 (en) * 2021-06-28 2024-09-05 Nippon Telegraph And Telephone Corporation Integrity verification system of circuit information and integrity verification method of circuit information
JPWO2024024001A1 (en) * 2022-07-27 2024-02-01
WO2024024001A1 (en) * 2022-07-27 2024-02-01 日本電信電話株式会社 Accelerator state control device, accelerator state control system, accelerator state control method, and program
JP7720013B2 (en) 2022-07-27 2025-08-07 Ntt株式会社 Accelerator state control device, accelerator state control system, accelerator state control method and program

Similar Documents

Publication Publication Date Title
US11778057B2 (en) System and method for intent-based service deployment
JP6370218B2 (en) MEMORY MANAGEMENT METHOD, COMPUTER SYSTEM, COMPUTER PROGRAM, AND STORAGE MEDIUM
JP6138774B2 (en) Computer-implemented method and computer system
JP5980916B2 (en) Computer-implemented method and computer system
KR102052964B1 (en) Method and system for scheduling computing
US9501285B2 (en) Register allocation to threads
JP2013546106A (en) Distributed computing architecture
KR101656360B1 (en) Cloud System for supporting auto-scaled Hadoop Distributed Parallel Processing System
JP2021034023A (en) Methods and apparatus for configuring heterogenous components in accelerator
US20220350668A1 (en) Function parallelism in a runtime container of a function-as-a-service (faas) system
US20210149726A1 (en) Scheduling device, scheduling system, scheduling method, and non-transitory computer-readable medium
CN114546587A (en) A method for expanding and shrinking capacity of online image recognition service and related device
JP2018132981A (en) Information processing apparatus having accelerator and information processing method
KR102130813B1 (en) Re-configurable processor and method for operating re-configurable processor
US9218275B2 (en) Memory management control system, memory management control method, and storage medium storing memory management control program
JP2012141887A (en) Information processing device, information processing method, and program
CN106547603B (en) Method and device for reducing garbage collection time of golang language system
US20180157510A1 (en) Interrupt generated random number generator states
US20170147408A1 (en) Common resource updating apparatus and common resource updating method
CN115543566A (en) Method and system for executing computation graph by multiple threads

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200109

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201201

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210601