JP2015099494A - 情報処理装置、情報処理方法およびプログラム - Google Patents

情報処理装置、情報処理方法およびプログラム Download PDF

Info

Publication number
JP2015099494A
JP2015099494A JP2013239098A JP2013239098A JP2015099494A JP 2015099494 A JP2015099494 A JP 2015099494A JP 2013239098 A JP2013239098 A JP 2013239098A JP 2013239098 A JP2013239098 A JP 2013239098A JP 2015099494 A JP2015099494 A JP 2015099494A
Authority
JP
Japan
Prior art keywords
application
execution
specific description
additional information
calculation resource
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.)
Granted
Application number
JP2013239098A
Other languages
English (en)
Other versions
JP6322968B2 (ja
Inventor
康祐 菊池
Kosuke Kikuchi
康祐 菊池
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 JP2013239098A priority Critical patent/JP6322968B2/ja
Publication of JP2015099494A publication Critical patent/JP2015099494A/ja
Application granted granted Critical
Publication of JP6322968B2 publication Critical patent/JP6322968B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

【課題】 構築費用を低減できると共に、エンドユーザの手間を不要としながらアプリケーションの実行性能を向上することができる情報処理装置等を提供する。【解決手段】 情報処理装置は、アプリケーションの実行特性に影響を及ぼす特定記述が当該アプリケーションに含まれる場合、前記特定記述によって呼び出される命令または関数の実行頻度に関する付加情報を生成する特定記述解析手段と、前記付加情報に基づいて、前記命令または関数の実行に適した計算リソースを判断すると共に、当該計算リソースを前記アプリケーションの実行に割り当てる計算リソース割当手段とを備える。【選択図】 図1

Description

本発明は、アプリケーションの実行に適した計算リソースに、そのアプリケーションの実行を割り当てる技術に関する。
一般に、計算ノード間のデータ通信は通信ネットワーク(以降、単に「ネットワーク」とも称する)を介して実施され、ファイルI/O(Input/Output:入出力)はストレージディスクに対して行われる。
データ通信やファイルI/Oの実行仕様、すなわち特性に応じて、データ通信やファイルI/Oの実行に適するネットワークやストレージディスクは異なる。これらネットワークやストレージディスクといった要素を用いてシステムを構築する場合、複数の上記特性に適した要素を多く用いると、様々な特性を備えたアプリケーションの実行に適したシステムを構築できる(、すなわちアプリケーションの実行性能を向上できる)という利点がある。
一方、複数の特性に適した要素を利用したシステムは、一部の特性のみに適した要素を利用したシステムと比較して、一般に構築費用が高額になるという問題がある。そこで、構築費用を抑えながら、複数の特性に適したシステムを構築することが考えられている。例えば、システムを構成するすべての要素を、複数の特性に対応可能な要素にて構築するのではなく、システムを構成する要素をいくつかのグループに分割すると共に、グループ間で異なる特性に対応する要素を採用することが考えられる。
しかしながら、上記方法にてシステムを構築するには、エンドユーザが、アプリケーションおよびシステムを構成する各要素の特性を把握すると共に、手動にてシステム内におけるグループを使い分ける作業が必要となる。
上記作業は、計算機の知識を必要とし、また煩雑であるため、単に計算結果のみを必要とする、計算機に精通していないエンドユーザには困難である。一方で、計算ノード間のネットワークにおける通信や、ディスクストレージへのファイルI/Oは、アプリケーションの実行性能に大きく影響するので、これらの実行に適したシステムでの実行が望まれる。
上記技術に関連して、例えば、特許文献1は、命令セット及び構成の異なるプロセッサエレメントを複数備えたヘテロジニアス・マルチプロセッサシステムを開示する。このマルチプロセッサシステムは、特定のプロセッサエレメントのリソースが不足することを防ぐことにより、マルチプロセッサシステム全体の処理を向上させる手段を備える。
また、特許文献2は、ソースプログラムに基づいてプログラムの特性を判別することにより、スケジューリングに活かす方式を開示する。
特許第4936517号公報 特開2003−271405号公報
上述のように、システムを構成する要素をいくつかのグループに分割すると共に、グループ間で特性の異なる要素を採用するようにシステムを構築するには、計算機の知識および煩雑な作業が必要となるため、一般のエンドユーザには実施困難であるという課題がある。
また、上記特許文献1に開示される手段は、異種のリソースにおいてタスクを効率よく動作させるものの、プロセッサの処理のみに着目しているため、計算ノード間のネットワークにおける通信や、ディスクストレージへのファイルI/Oに適用することはできない。
また、上記特許文献2には、計算機の知識および煩雑な作業を必要とせずに、アプリケーションの実行性能を向上する技術は開示されていない。
本願発明は、上記課題を鑑みてなされたものであり、構築費用を低減できると共に、エンドユーザの手間を不要としながらアプリケーションの実行性能を向上することができる情報処理装置等を提供することを主要な目的とする。
本発明の第1の情報処理装置は、アプリケーションの実行特性に影響を及ぼす特定記述が当該アプリケーションに含まれる場合、前記特定記述によって呼び出される命令または関数の実行頻度に関する付加情報を生成する特定記述解析手段と、前記付加情報に基づいて、前記命令または関数の実行に適した計算リソースを判断すると共に、当該計算リソースを前記アプリケーションの実行に割り当てる計算リソース割当手段とを備える。
本発明の第1の情報処理方法は、コンピュータによって、アプリケーションの実行特性に影響を及ぼす特定記述が当該アプリケーションに含まれる場合、前記特定記述によって呼び出される命令または関数の実行頻度に関する付加情報を生成し、前記付加情報に基づいて、前記命令または関数の実行に適した計算リソースを判断すると共に、当該計算リソースを前記アプリケーションの実行に割り当てる。
なお同目的は、上記の各構成を有する情報処理装置または情報処理方法を、コンピュータによって実現するコンピュータ・プログラム、およびそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
本願発明によれば、構築費用を低減できると共に、エンドユーザの手間をかけることなくアプリケーションの実行性能を向上することができるという効果が得られる。
本発明の第1の実施形態に係る情報処理システムの構成の概要を示す図である。 本発明の第1の実施形態に係る情報処理システムの構成を示すブロック図である。 本発明の第1の実施形態に係る情報処理システムにおいて、同時に全てのプロセス間でデータ交換が行われる例を示す図である。 本発明の第1の実施形態に係る情報処理システムにおいて、プロセス間でリング状にデータ交換が行われる例を示す図である。 情報処理システムにおいてバイセクショナルバンド幅が高いネットワークトポロジによって全てのノードを構成した場合の動作を示すフローチャートである。 情報処理システムにおいてバイセクショナルバンド幅が低いネットワークトポロジによって全てのノードを構成した場合の動作を示すフローチャートである。 本発明の第1の実施形態に係る情報処理システムにおいてアプリケーションを実行するシステムを振り分ける動作を示すフローチャートである。 アプリケーションプログラムの記述の例を示す図である。 アプリケーションプログラムの記述の例を示す図である。 アプリケーションプログラムの記述の例を示す図である。 情報処理システムにおいてSAS(Serial Attached SCSI)ディスクによって全てのノードを構成した場合の動作を示すフローチャートである。 情報処理システムにおいてSATA(Serial ATA)ディスクによって全てのノードを構成した場合の動作を示すフローチャートである。 本発明の第1の実施形態に係る情報処理システムにおいてアプリケーションをSASディスクによるシステムとSATAディスクによるシステムとに振り分ける動作を示すフローチャートである。 本発明の第2の実施形態に係る情報処理システムの構成を示すブロック図である。 アプリケーションプログラムの例の一部を示す図である。 プリケーション実行バイナリを逆アセンブルした結果である命令リストを示す図である。 本発明の第3の実施形態に係る情報処理システムの構成の概要を示す図である。 本発明の各実施形態に係る情報処理システムを実現可能な情報処理装置のハードウエア構成を例示する図である。
以下、本発明の実施形態について図面を参照して詳細に説明する。
第1の実施形態
図1は、本発明の第1の実施形態に係る情報処理システム100の構成の概要を示す図である。図1に示すように、情報処理システム100は、ジョブスケジューラ110、計算システム120、120、・・・、120を備える。アプリケーションの実行要求は、エンドユーザからジョブスケジューラに送られる。このとき、エンドユーザは、アプリケーションの実行に必要となる各計算システム内のCPU(Central Processing Unit)コアの数やメモリ容量なども要求する。本実施形態において、アプリケーションとは、情報処理システム100において実行される特定の機能を実現可能なソフトウエアプログラム(コンピュータプログラム)を表す。
情報処理システム100は、HPC(High Performance Computing)の分野に属する。
一般的なHPCの分野に属するシステムでは、複数のユーザによりシステムを共有すると共に、アプリケーションの実行量を最大化するためにジョブスケジューラと呼ばれるソフトウェアが用いられる。
ジョブスケジューラは、エンドユーザから要求されたCPUコアの数やメモリ容量を備えた計算システムを確保できた段階で、要求されたアプリケーションを、上記確保した計算システムにおいて実行する。このように、ジョブスケジューラによってアプリケーションを実行する計算システムの選択は自動的に行われる。
ここで、HPC分野では、アプリケーションを実現可能なアプリケーションプログラムを記述するのに用いられるプログラミング言語には、一部の種類(言語)が多く使われる。また、複数の計算システムに処理を分割し並列に処理する分散並列処理を行うためのライブラリのAPI(Application Programming Interface)にも、一部の種類が多く使われる。このようなプログラミング言語内の特定記述(詳細は後述する)や、ライブラリのAPIは、それらに使用される種類毎に実行に適するシステムが異なるという特徴がある。
また、HPC分野のアプリケーションは、一般的に一部の処理を繰り返し実行するという特徴がある。繰り返し実行はプログラミング言語のループ構造によって記述される。
このように、実行に適する環境が異なるプログラム中の記述と、その記述が存在する場所のループ構造とを調べることにより、そのアプリケーションの実行に適する特性を高い精度で予測することが可能である。また、予測した結果を、ジョブスケジューラに入力することにより、エンドユーザによる手動の操作を必要とすることなく、アプリケーションの実行に適するシステムによりアプリケーションを実行することが自動で可能となる。
以下に、本実施形態に係る情報処理システム100の詳細を説明する。
図2は、本発明の第1の実施形態に係る情報処理システム100の構成を示すブロック図である。図2に示すように、情報処理システム100は、コンパイラ210、ジョブスケジューラ220、システム230,240を備える。
コンパイラ210は、コンパイラ通常機能部211、特定記述解析部212および付加情報生成部213を備える。ジョブスケジューラ220は、アプリケーション実行受付部221、反復回数閾値設定部222、ループ構造深さ閾値設定部223、付加情報解析部224および計算リソース割当部225を備える。
コンパイラ210は、アプリケーション実行要求310を出力する。アプリケーション実行要求310は、アプリケーション実行バイナリ311、反復回数付加情報312およびループ構造深さ付加情報313を含む。アプリケーション実行要求310は、エンドユーザによって、ジョブスケジューラ220にアプリケーションの実行を要求するときに渡される。
コンパイラ210は、アプリケーションプログラム200を受け取ると、コンパイラ通常機能部211において、通常のコンパイル機能を実施する。コンパイラ通常機能部211は、アプリケーションプログラム200に基づいて、アプリケーション実行バイナリ311を生成する。続いて、コンパイラ通常機能部211は、アプリケーションプログラム200を特定記述解析部212に送る。
特定記述解析部212は、アプリケーションプログラム200において特定記述が記述されている箇所を調べる。特定記述とは、アプリケーションプログラムを構成する記述のうち、当該アプリケーションプログラムの実行特性に影響を及ぼす少なくとも一部のプログラムコードによる記述である。特定記述解析部212は、特定記述が見つかると、それが記述されている箇所のループ構造の深さと、ループの繰り返し回数を調べる。
特定記述解析部212は、調べた結果を付加情報生成部213に送る。付加情報生成部213は、ループの繰り返し回数を反復回数付加情報312、ループ構造の深さをループ構造深さ付加情報313として生成する。なお、ループの繰り返し回数がアプリケーションプログラム200において静的に与えられていない場合、付加情報生成部213は、それを識別することができる固有の値(例えば、「−1」)を反復回数付加情報312として生成する。
ジョブスケジューラ220は、計算リソース割当部225において、通常のジョブスケジューラと同様の機能を実施する。すなわち、計算リソース割当部225は、アプリケーション実行要求310にしたがって、アプリケーションを実行する計算システムを確保すると共に、確保した計算システムにおいてアプリケーションの実行を指示する。
また、ジョブスケジューラ220は、反復回数閾値設定部222、ループ構造深さ閾値設定部223において、プログラム中の特定記述が実行される傾向を判断するのに利用する閾値を保持する。閾値には、アプリケーションプログラム200における、ループ構造の繰り返し回数との比較に使われる閾値と、ループ構造の深さとの比較に使われる閾値とがある。ループ構造の繰り返し回数との比較に使われる閾値は、反復回数閾値設定部222に保持される。ループ構造の深さとの比較に使われる閾値は、ループ構造深さ閾値設定部223に保持される。閾値は、システム管理者によってあらかじめジョブスケジューラ220に保持されてもよい。
ジョブスケジューラ220は、アプリケーション実行受付部221において、アプリケーション実行要求310を受け取る。アプリケーション実行受付部221は、アプリケーション実行要求310に含まれる反復回数付加情報312とループ構造深さ付加情報313を付加情報解析部224に渡す。また、アプリケーション実行受付部221は、アプリケーション実行要求310を、計算リソース割当部225に渡す。
付加情報解析部224は、まず、受け取った反復回数付加情報312と、反復回数閾値設定部222に設定された値とを比較する。付加情報解析部224は、反復回数閾値設定部222に設定された値より、受け取った反復回数付加情報312が大きい場合は、アプリケーションプログラム200は、「特定記述の実行が多い」という特性に当てはまると判断する。
ここで、反復回数付加情報312に、アプリケーションプログラム200においてループの繰り返し回数が静的に与えられていないことを識別する固有の値が設定されていた場合は、付加情報解析部224は、上記比較は行わず、ループ構造深さに関する比較を行う。すなわち、付加情報解析部224は、受け取ったループ構造深さ付加情報313と、ループ構造深さ閾値設定部223に設定された値とを比較する。
ループ構造深さ閾値設定部223に設定された値よりループ構造深さ付加情報313が大きい場合、付加情報解析部224は、アプリケーションプログラム200は、「特定記述の実行が多い」という特性に当てはまると判断する。付加情報解析部224は、判断結果を、計算リソース割当部225に渡す。
計算リソース割当部225は、アプリケーション実行受付部221から渡されたアプリケーション実行要求310と、付加情報解析部224から渡された判断結果に基づいて、アプリケーションを実行するシステムを判断する。計算リソース割当部225は、特定記述の実行が多いという特性を持つアプリケーション実行に対して、特定記述の実行に適したシステム230を割り当てる。一方、計算リソース割当部225は、特定記述の実行が多いという特性を持たないアプリケーションの実行に対しては、特定記述の実行に適さないシステム240を割り当てる。
以上のように、情報処理システム100は、アプリケーションの実行に適したシステムを判断すると共に、当該システムにアプリケーションの実行を振り分ける。
次に、具体的な例を用いて、上記構成の詳細について説明する。
ここで、MPI(Message Passing Interface)を利用したプログラムに着目する。HPCの分野では、計算量の増加に伴い、複数の計算機に処理を分散する分散並列計算を行うことがよく使われる手法として存在する。分散並列計算を行うにはいくつかの手法が存在し、その中でもMPIと呼ばれるメッセージパッシングAPIの標準規格によって分散並列計算を行うことが今日では一般的となっている。すなわち、本実施形態においてMPIを利用したアプリケーションプログラムを対象にすることは、HPC分野のアプリケーションにおいて大きな割合を占めることになる。
そこで、以下に、MPIを利用したアプリケーションプログラムを本実施形態において実行する場合の情報処理システム100の動作について説明する。
MPIは、分散並列計算をメッセージパッシングによって実現するAPIであり、MPIが備える通信APIの種類は、大きく分けて「1対1通信系API」と、「集団通信系API」に分類される。例えば、「集団通信系API」の一関数である”MPI_Alltoall()”は、図3に示すように、同時に全てのプロセス(0〜3)間においてデータ交換が行われる場合に使われる。一方、「1対1通信系API」の一関数である”MPI_Sendrecv()”は、図4に示すように、プロセス(0〜3)間でリング状にデータ交換をする場合によく使われる。ネットワークのバイセクショナルバンド幅(バイセクションバンド幅:2分割帯域幅)としては、集団通信系APIの実行には、1対1通信系APIの実行に比べて、高いバイセクショナルバンド幅が要求される。バイセクショナルバンド幅とは、ネットワークを2つに分割し、その間にある全リンクのバンド幅を合計したものである。ここでは、例えば、バイセクショナルバンド幅が、所定の閾値より高いネットワークトポロジにより構成されるシステムを、「バイセクショナルバンド幅が高いシステム」と称する。また、バイセクショナルバンド幅が、所定の閾値より低いネットワークトポロジにより構成されるシステムを、「バイセクショナルバンド幅が低いシステム」と称する。
例えば、アプリケーションを実行するシステムを1000台のノードを用いて構成することを考える。図5に示すように、バイセクショナルバンド幅が所定の閾値より高いネットワークトポロジによって1000ノード全てを構成した場合、どの計算ノードにてアプリケーションを実行したとしても、MPIが備える集団通信系APIは、性能低下することなく実行される。
しかしながら、一般に、バイセクショナルバンド幅が高いシステムは、バイセクショナルバンド幅が低いシステムに比べて、構築費用が高いという特徴がある。
一方、図6に示すように、バイセクショナルバンド幅が低いネットワークトポロジによって1000ノード全てを構成すると、システムの構築費用を安くすることが可能となる反面、MPIが備える集団通信系APIの実行性能が低下するという問題が生じる。
そこで、本実施形態では、図7に示すように、情報処理システム100が、MPIを利用したアプリケーションプログラムを実行するシステムを振り分ける動作について説明する。すなわち、ジョブスケジューラは、MPIを利用したアプリケーションプログラムの特性を判断し、その判断結果に基づいて、バイセクショナルバンド幅が高いシステムと、バイセクショナルバンド幅が低いシステムに、プログラムの実行を振り分ける。
図8は、MPIが備える集団通信系APIである関数”MPI_Alltoall()”を、ループ構造の深さが「3」の位置(a)で呼び出すアプリケーションプログラム(ソースプログラム)の記述(プログラムコード)の一部の例を示す図である。図8に示すアプリケーションプログラムが、図2に示すコンパイラ210に供給されると、コンパイラ210のコンパイラ通常機能部211は、コンパイルを実施することによりアプリケーション実行バイナリ311を生成する。
コンパイラ通常機能部211はまた、アプリケーションプログラムを特定記述解析部212に送る。特定記述解析部212は、アプリケーションプログラムにおいて集団通信系APIの有無を解析する。図8に示すように、当該アプリケーションプログラムでは、”MPI_Alltoall()”を呼び出しているので、特定記述解析部212はそれを検出する。
続いて特定記述解析部212は、”MPI_Alltoall()”が呼び出されている箇所におけるループ構造を解析する。図8に示す(a)の位置では、ループ構造の深さは「3」と識別できる。一方、ループの繰り返し回数は、「N1」、「N2」、「N3」と示され、静的に与えられていない。よって、特定記述解析部212は、ループの繰り返し回数が静的に与えられていないことを示す「−1」を解析結果とする。特定記述解析部212は、解析結果を付加情報生成部213に送る。ここでは、反復回数付加情報312として「−1」、ループ構造深さ付加情報313として「3」が、生成される。
上述のように、コンパイラ210によって生成されたアプリケーション実行バイナリ311、反復回数付加情報312、ループ構造深さ付加情報313は、アプリケーション実行要求310としてジョブスケジューラ220に渡される。なお、ここでは、ジョブスケジューラ220の反復回数閾値設定部222に「1000」、ループ構造深さ閾値設定部223に「2」が、あらかじめシステム管理者によって設定されている。
ジョブスケジューラ220は、アプリケーション実行要求310をアプリケーション実行受付部221において受け取る。アプリケーション実行受付部221は、アプリケーション実行要求310を計算リソース割当部225に送る。また、アプリケーション実行受付部221は、アプリケーション実行要求310に含まれる反復回数付加情報312と、ループ構造深さ付加情報313を、付加情報解析部224に送る。
付加情報解析部224は、受け取った反復回数付加情報312と、ループ構造深さ付加情報313を、それぞれ、反復回数閾値設定部222に設定された値と、ループ構造深さ閾値設定部223に設定された値と比較する。そして、付加情報解析部224は、その比較の結果に基づいて、アプリケーションプログラムの特性を判断する。
ここでは、反復回数付加情報312にループの繰り返し回数が静的に与えられていないことを示す「−1」が設定されるので、付加情報解析部224は、ループの反復回数に関する比較結果は採用せず、ループ構造深さに関する比較の結果を採用する。すなわち、ループ構造深さ閾値設定部223に設定された値「2」と、ループ構造深さ付加情報313の値「3」とを比較すると、ループ構造付加情報313の値の方が大きい。よって、付加情報解析部224は、「MPIが備える集団通信系APIの実行が多い」と判断する。
付加情報解析部224は、上記判断の結果を計算リソース割当部225に送る。計算リソース割当部225は、「MPIが備える集団通信系APIの実行が多い」との判断に基づいて、図7に示したバイセクショナルバンド幅が高いシステム(図2に示すシステム230)を、当該アプリケーションプログラムの実行に割り当てる。システム230は、当該アプリケーションプログラムの実行を行う。以上の動作により、本実施形態に係る情報処理システム100は、MPIを利用したアプリケーションプログラムを実行するシステムを振り分ける。
次に、上記とは異なるアプリケーションプログラムを実行する例について説明する。
図9は、MPIを利用したアプリケーションプログラムの他の記述の例を示す図である。図9に示すアプリケーションプログラムでは、MPIの集団通信系APIが記述されている箇所(b)において、ループの繰り返し回数が静的に与えられている。すなわち、ループの繰り返し回数は「1000」と与えられている。さらに、当該箇所におけるループは2重に記述されているので、繰り返し回数の合計は「1000000」である。
図9に示すアプリケーションプログラムを受け取ると、情報処理システム100は、上記と同様に動作する。すなわち、コンパイラ210は、付加情報生成部213において、反復回数付加情報312として「1000000」を、ループ構造深さ付加情報313として「2」を生成する。上述したように、ジョブスケジューラ220の反復回数閾値設定部222には「1000」が設定されるので、付加情報解析部224は、「MPIが備える集団通信系APIの実行が多い」と判断する。
さらに、上記とは異なるアプリケーションプログラムを実行する例について説明する。
HPCの分野では、科学技術計算を行うことを目的として作られた言語であるFORTRAN(登録商標)によってアプリケーションプログラムが記述されることが多い。したがって、ここでは、FORTANによって記述されたアプリケーションプログラムに着目し、このようなアプリケーションプログラムを本実施形態に係る情報処理システム100により実行する場合の動作を説明する。
図10は、FORTANによって記述されたアプリケーションプログラムの記述の例を示す図である。FORTRANによるファイルI/Oは、OPEN文の呼出しにより対象とするファイルとプログラムで使用する識別子とを紐づけると共に、その後にその識別子を指定してWRITE文またはREAD文を呼び出すことによって実施される。
このとき、本実施形態では、ファイルI/Oの規則性に応じてOPEN文の呼出し時にACCESS指定子に指定する値を変更する。すなわち、ファイルI/Oの規則性がシーケンシャルファイルアクセスである場合、ACCESS指定子に「SEQUENTIAL」を指定する。一方、ファイルI/Oの規則性がランダムアクセスの場合、ACCESS指定子に「DIRECT」を指定する。なお、ACCESS指定子の記述を省略した場合、「SEQUENTIAL」を指定した場合と同等になるようにしてもよい。
ここで、ファイルの入出力先となるストレージディスク(記憶装置)は、今日ではSATA(Serial ATA)ディスクとSAS(Serial Attached SCSI)ディスクが多く使われている。SATAディスクとSASディスクを比較した場合、一般的にシーケンシャルアクセス性能に大きな差は出ないものの、ランダムアクセス性能はSASディスクの方が優れている。また、SATAディスクの方がSASディスクに比べて安価に入手できるという特徴がある。
例えば、アプリケーションを実行するシステムを1000台のノードを用いて構成することを考える。図11に示すように、SASディスクによって1000ノード全てを構成した場合、どの計算ノードによりアプリケーションを実行したとしても、FORTRANにより記述されたアプリケーションプログラムのファイルI/Oは、性能低下することなく実行される。しかしながら、この場合、システムの構築費用が高額になるという問題がある。
一方、図12に示すようにSATAディスクによって1000ノード全てを構成した場合、システムの構築費用が安価になるが、その反面、ランダムアクセスのファイルI/Oの実行性能が低下するという問題がある。
そこで、以下では、図13に示すように、FORTANによって記述されたアプリケーションプログラム中のOPEN文の記述に基づいてファイルI/Oの特性を判断し、判断の結果に基づいていずれかのシステムにプログラムの実行を振り分ける動作について説明する。
図10は、FOTRANによって記述されたアプリケーションプログラムにおいて、「ACCESS=DIRECT」である指定子によってOPEN文が実行されたファイルに対して、ループ構造の深さが「3」の位置でWRITE文を実行する部分を示す。
このアプリケーションプログラムが図2に示すコンパイラ210に入力されると、コンパイラ通常機能部211は、アプリケーション実行バイナリ311を生成する。次に、コンパイラ通常機能部211は、アプリケーションプログラムを特定記述解析部212に送る。特定記述解析部212は、「ACCESS=DIRECT」である指定子を含むOPEN文の有無を調べる。
図10に示すアプリケーションプログラムでは、「ACCESS=DIRECT」である指定子を含むOPEN文を呼び出しているため、特定記述解析部212は、それが記述されている部分を検出する。次に、特定記述解析部212は、「ACCESS=DIRECT」によりOPEN文を実行したファイルに、WRITE文またはREAD文を実行する箇所のループ構造を解析する。
図10に示すプログラムでは、WRITE文を実行する箇所のループ構造の深さは「3」である。一方、ループの繰り返し回数は「N1」、「N2」、「N3」と記述され静的に与えられていない。したがって、特定記述解析部212は、ループ構造の深さを「3」、ループの繰り返し回数を静的に与えられていないことを示す「−1」として、解析結果を出力する。特定記述解析部212は、解析結果を付加情報生成部213に送る。ここでは、反復回数付加情報312として「−1」、ループ構造深さ付加情報313として「3」が、それぞれ生成される。
コンパイラ210は、生成したアプリケーション実行バイナリ311、反復回数付加情報312、ループ構造深さ付加情報313を含むアプリケーション実行要求310を、ジョブスケジューラ220に渡す。なお、ここでは、ジョブスケジューラ220の反復回数閾値設定部222に「1000」、ループ構造深さ閾値設定部223に「2」があらかじめシステム管理者によって設定されている。
アプリケーション実行要求310を受け取ったアプリケーション実行受付部221は、アプリケーション実行要求310を計算リソース割当部225に渡す。また、アプリケーション実行受付部221は、アプリケーション実行要求310に含まれる反復回数付加情報312と、ループ構造深さ付加情報313を、付加情報解析部224に送る。付加情報解析部224は、まず反復回数閾値設定部222に設定された値と、反復回数付加情報312の値とを比較する。ここでは、反復回数付加情報312の値は、ループの繰り返し回数が静的に与えられていないことを示す「−1」であるので、付加情報解析部224は、反復回数に関する比較結果は採用しない。続いて、付加情報解析部224は、ループ構造深さ閾値設定部223に設定された値「2」と、ループ構造深さ付加情報313の値「3」とを比較する。その結果、ループ構造付加情報313の値の方が大きい。したがって、付加情報解析部224は、「ランダムアクセスによりOPEN文を実行したファイルへのI/Oは多い」と判断する。
付加情報解析部224は、上記判断結果を計算リソース割当部225に渡す。計算リソース割当部225は上記判断結果に基づいて、当該アプリケーションプログラムに、図13に示す、SASディスクを備えたシステムを割り当る。SASディスクを備えたシステムは、割り当てられたアプリケーションプログラムを実行する。
以上のように、本第1の実施形態によれば、コンパイラ210は、特定記述解析部212により、アプリケーションプログラムの実行特性に影響を及ぼす特定記述の有無を調べ、特定記述がある場合、その特定記述が記述されている箇所のループ構造の深さとループの繰り返し回数を調べる。ジョブスケジューラ220における付加情報解析部224は、上記ループ構造の深さと、ループの繰り返し回数の少なくともいずれかが閾値より大きい場合、当該アプリケーションプログラムは、「特定記述の実行が多い」という特性に当てはまると判断する。計算リソース割当部225は、特定記述の実行が多いと判断されたアプリケーションプログラムに、実行に適したシステムを割り当てる。
上記構成を採用することにより、本第1の実施形態によれば、MPIが備える集団通信系APIの実行が多いアプリケーションプログラムの実行に、バイセクショナルバンド幅が高いシステムを割り当てることができる。また、FORTRANにより記述され、ランダムアクセスによりOPEN文を実行したファイルへのI/Oが多いアプリケーションプログラムの実行に、SASディスクを備えたシステムを割り当てることができる。
つまり、アプリケーションを構成するプログラムの特性をコンパイラによって解析した結果に基づいて、アプリケーションの実行に適した計算リソースを割り当てることができるので、システムの構築コストを抑えながら、エンドユーザに手間をかけずにアプリケーションの実行性能を最大化できるという効果が得られる。
第2の実施形態
図14は、本発明の第2の実施形態に係る情報処理システム400の構成を示すブロック図である。図14に示すように、情報処理システム400は、ジョブスケジューラ420、システム450、システム460を備える。ジョブスケジューラ420は、アプリケーション実行要求410を受け取る。
本実施形態に係る情報処理システム400では、一般的なコンパイラによってアプリケーションプログラムをコンパイルし、エンドユーザによって、アプリケーションの実行がジョブスケジューラ420に要求される。
図14に示すように、ジョブスケジューラ420は、アプリケーション実行受付部421、ループ構造深さ閾値設定部422、特定記述解析部423、付加情報生成部424、ループ構造深さ付加情報425、付加情報解析部426、計算リソース割当部427を備える。
ジョブスケジューラ420は、エンドユーザからのアプリケーション実行要求410をアプリケーション実行受付部421において受け付ける。アプリケーション実行要求410は、一般的なコンパイラによってコンパイルされたアプリケーション実行バイナリ411を指定する。
アプリケーション実行受付部421は、アプリケーション実行要求410において指定されたアプリケーション実行バイナリ411を、外部の逆アセンブラ430に渡す。逆アセンブラ430は、情報処理システム400と通信可能な情報処理装置で実行可能であり、アプリケーション実行バイナリ411に対して逆アセンブルを実行する。
逆アセンブリ430による実行の結果、アプリケーションの命令リスト440が生成される。命令リスト440は、ジョブスケジューラ420の特定記述解析部423に送られる。特定記述解析部423は、命令リスト440に基づいてアプリケーションの実行特性に影響を及ぼす特定記述の箇所を調べると共に、当該箇所が見つかった場合は、当該箇所におけるループ構造の深さを調べる。
特定記述解析部423は、上記調べた結果を付加情報生成部424に送る。付加情報生成部424は、ループ構造の深さに関する結果を、ループ構造深さ付加情報425として生成すると共に、生成したループ構造深さ付加情報425を付加情報解析部426に送る。
付加情報解析部426は、ループ構造深さ付加情報425とループ構造深さ閾値設定部422に設定された値とを比較する。ループ構造深さ閾値設定部422に設定された値より、ループ構造深さ付加情報425の値が大きい場合、付加情報解析部426は、当該アプリケーションプログラムは、「特定記述の実行が多い」という特性に当てはまると判断する。その判断の結果を特性情報と称する。
付加情報解析部426は、上記特性情報を計算リソース割当部427に渡す。なお、ループ構造深さ閾値設定部422には、システム管理者によってあらかじめ閾値が設定される。
計算リソース割当部427は、アプリケーション実行受付部421から渡されたアプリケーション実行要求410と、付加情報解析部426から渡された特性情報とに基づいて、アプリケーションを実行するシステムを判断する。この場合、計算リソース割当部427は、当該アプリケーションプログラムに、特定記述の実行に適したシステム450を割り当てる。システム450は、割り当てられたアプリケーションプログラムを実行する。
次に、具体的な例を用いて情報処理システム400の動作について説明する。ここでは、MPIを利用したアプリケーションの実行バイナリから、アプリケーションの集団通信系APIの呼出し状況を判断すると共に、バイセクショナルバンド幅が高いシステムと、バイセクショナルバンド幅が低いシステムに、アプリケーションの実行を振り分ける動作について説明する。
図15は、MPIの集団通信系APIである”MPI_Alltoall()”を、3重のループ構造の中(c)で呼び出すアプリケーションプログラムの記述の一部を示す。
図15を含むソースプログラムをコンパイルした結果として生成されたアプリケーション実行バイナリを、図14に示すアプリケーション実行バイナリ411とする。このアプリケーション実行バイナリ411を含むアプリケーション実行要求410が、ジョブスケジューラ420に送られると、ジョブスケジューラ420はそのアプリケーション実行要求410をアプリケーション実行受付部421で受け付ける。
アプリケーション実行受付部421は、アプリケーション実行要求410において指定されたアプリケーション実行バイナリ411を、逆アセンブラ430に渡す。逆アセンブラ430は、アプリケーション実行バイナリ411に対して逆アセンブルを実行する。
逆アセンブルした結果、アプリケーションの命令リスト440が生成される。図16は、アプリケーション実行バイナリを逆アセンブルした結果から、図15に示す部分に相当する部分を抜き出した命令リストを示す図である。
命令「callq 400850 <MPI_Alltoall@plt>」431は、”MPI_Alltoall()”の呼出しを示す。また、ループ432−434で示される各範囲は、図15に示すfor文の各範囲に相当する。命令リスト440は、特定記述解析部423に渡される。
特定記述解析部423は、受け取った命令リスト440に基づいて、MPIの集団通信系APIの呼出しの有無を調べる。ここでは、”MPI_Alltoall()”の呼出しが見つかる。また、特定記述解析部423は、MPIの集団通信系APIが呼び出される箇所におけるループ構造の深さを調べる。ここでは、特定記述解析部423は、ループ構造の深さを「3」と検出する。
特定記述解析部423は、上記調べた結果を付加情報生成部424に送る。付加情報生成部424は、ループ構造深さ付加情報425として「3」を生成すると共に、それを付加情報解析部426に送る。
ここで、ループ構造深さ閾値設定部422には、あらかじめシステム管理者によって「2」が設定さる。付加情報解析部426は、ループ構造深さ閾値設定部422に設定された「2」と、ループ構造深さ付加情報425である「3」とを比較する。ループ構造深さ付加情報425の方が大きいので、付加情報解析部426は、「集団通信系APIの呼出しが多い」という特性に当てはまると判断する。
付加情報解析部426は、上記調べた特性情報を、計算リソース割当部427に渡す。計算リソース割当部427は、当該アプリケーションプログラムに、特定記述の実行に適したシステム450を割り当てる。システム450は、割り当てられたアプリケーションプログラムを実行する。
以上のように、本実施形態によれば、情報処理システム400におけるジョブスケジューラ420は、アプリケーション実行バイナリ411を逆アセンブラ430に渡すと共に、逆アセンブルの実行結果として命令リスト440を受け取る。ジョブスケジューラ420は、特定記述解析部423において、命令リスト440に特定記述があるか否かを調べ、ある場合はその箇所におけるループ構造深さを調べる。ループ構造深さが閾値よりも大きい場合、付加情報解析部426は、命令リスト440に対応するアプリケーションプログラムは、特定記述の実行が多いと判断する。計算リソース割当部427は、そのアプリケーションプログラムに、その実行に適したシステムを割り当てる。
上記構成を採用することにより、本第2の実施形態によれば、ソースプログラムが与えられずコンパイラによるプログラムの特性解析が不可能な場合でも、上記第1の実施形態と同様の効果が得られる。すなわち、アプリケーションの実行バイナリを解析することにより、アプリケーションの実行に適した計算リソースを割り当てることができるので、システムの構築コストを抑えながら、エンドユーザに手間をかけずにアプリケーションの実行性能を最大化できるという効果が得られる。
第3の実施形態
図17は、本発明の第3の実施形態に係る情報処理装置50の構成の概要を示す図である。図17に示すように、情報処理装置50は、特定記述解析部51と計算リソース割当部52とを備える。
特定記述解析部51は、アプリケーションの実行特性に影響を及ぼす特定記述が当該アプリケーションに含まれる場合、前記特定記述によって呼び出される命令または関数の実行頻度に関する付加情報を生成する。計算リソース割当部52は、前記付加情報に基づいて、前記命令または関数の実行に適した計算リソースを判断すると共に、当該計算リソースを前記アプリケーションの実行に割り当てる。
上記構成を採用することにより、本第3の実施形態によれば、構築費用を低減できると共に、エンドユーザの手間をかけることなくアプリケーションの実行性能を向上することができるという効果が得られる。
なお、図2、図14に示したコンパイラおよびジョブスケジューラの各部は、図18に例示するハードウエア資源において実現される。すなわち、図18に示す構成は、CPU10、RAM(Random Access Memory)11、ROM(Read Only Memory)12、外部接続インタフェース13および記憶媒体14を備える。CPU10は、ROM12または記憶媒体14に記憶された各種ソフトウエア・プログラム(コンピュータ・プログラム)を、RAM11に読み出して実行することにより、コンパイラおよびジョブスケジューラの全体的な動作を司る。すなわち、上記各実施形態において、CPU10は、ROM12または記憶媒体14を適宜参照しながら、コンパイラおよびジョブスケジューラが備える各機能(各部)を実行するソフトウエア・プログラムを実行する。
また、上述した各実施形態では、図2、図14に示したコンパイラおよびジョブスケジューラにおける各ブロックに示す機能を、図18に示すCPU10が実行する一例として、ソフトウエア・プログラムによって実現する場合について説明した。しかしながら、図2、図14に示した各ブロックに示す機能は、一部または全部を、ハードウエアとして実現してもよい。
また、各実施形態を例に説明した本発明は、コンパイラおよびジョブスケジューラに対して、上記説明した機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、CPU10がRAM11に読み出して実行することによって達成される。
また、係る供給されたコンピュータ・プログラムは、読み書き可能なメモリ(一時記憶媒体)またはハードディスク装置等のコンピュータ読み取り可能な記憶デバイスに格納すればよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムを表すコード或いは係るコンピュータ・プログラムを格納した記憶媒体によって構成されると捉えることができる。
本発明は、例えば、ハイパフォーマンスコンピューティングの分野に適用できる。
10 CPU
11 RAM
12 ROM
13 外部接続インタフェース
14 記憶媒体
100、400 情報処理システム
110、220、420 ジョブスケジューラ
210 コンパイラ
221、421 アプリケーション実行受付部
222 反復回数閾値設定部
223、422 ループ構造深さ閾値設定部
224、426 付加情報解析部
225、427 計算リソース割当部
230、240、450、460 システム
310、410 アプリケーション実行要求
311、411 アプリケーション実行バイナリ
312 反復回数付加情報
313、425 ループ構造深さ付加情報

Claims (7)

  1. アプリケーションの実行特性に影響を及ぼす特定記述が当該アプリケーションに含まれる場合、前記特定記述によって呼び出される命令または関数の実行頻度に関する付加情報を生成する特定記述解析手段と、
    前記付加情報に基づいて、前記命令または関数の実行に適した計算リソースを判断すると共に、当該計算リソースを前記アプリケーションの実行に割り当てる計算リソース割当手段と
    を備えた情報処理装置。
  2. 前記特定記述解析手段は、前記特定記述によって呼び出される命令または関数の繰り返し回数を含む付加情報を生成し、
    前記計算リソース割当手段は、前記繰り返し回数が閾値より大きい場合、前記アプリケーションの実行を、前記命令または関数の実行に適した計算リソースに割り当てる
    請求項1記載の情報処理装置。
  3. 前記特定記述解析手段は、前記アプリケーションの実行プログラム、または当該実行プログラムがコンパイルされて生成される実行バイナリが逆アセンブルされた結果に基づいて、前記特定記述の有無を判断する
    請求項1または請求項2記載の情報処理装置。
  4. 前記特定記述解析手段は、前記アプリケーションにおいて集団通信関数を呼び出す記述を特定記述として抽出し、
    前記計算リソース割当手段は、前記集団通信関数の繰り返し回数が閾値より大きい場合、前記アプリケーションの実行を、帯域幅が所定値より高い通信ネットワークを用いて構成された計算リソースに割り当てる
    請求項2または請求項3記載の情報処理装置。
  5. 前記特定記述解析手段は、前記アプリケーションにおいてランダムアクセスでのファイルへの読み出し命令または書き込み命令を呼び出す記述を特定記述として抽出し、
    前記計算リソース割当手段は、前記読み出し命令または前記書き込み命令の繰り返し回数が閾値より大きい場合、前記アプリケーションの実行を、ランダムアクセスに適した記憶装置を用いて構成された計算リソースに割り当てる
    請求項2または請求項3記載の情報処理装置。
  6. コンピュータによって、
    アプリケーションの実行特性に影響を及ぼす特定記述が当該アプリケーションに含まれる場合、前記特定記述によって呼び出される命令または関数の実行頻度に関する付加情報を生成し、
    前記付加情報に基づいて、前記命令または関数の実行に適した計算リソースを判断すると共に、当該計算リソースを前記アプリケーションの実行に割り当てる
    情報処理方法。
  7. アプリケーションの実行特性に影響を及ぼす特定記述が当該アプリケーションに含まれる場合、前記特定記述によって呼び出される命令または関数の実行頻度に関する付加情報を生成する処理と、
    前記付加情報に基づいて、前記命令または関数の実行に適した計算リソースを判断すると共に、当該計算リソースを前記アプリケーションの実行に割り当てる処理とを
    コンピュータに実行させるプログラム。
JP2013239098A 2013-11-19 2013-11-19 情報処理装置、情報処理方法およびプログラム Active JP6322968B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013239098A JP6322968B2 (ja) 2013-11-19 2013-11-19 情報処理装置、情報処理方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013239098A JP6322968B2 (ja) 2013-11-19 2013-11-19 情報処理装置、情報処理方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2015099494A true JP2015099494A (ja) 2015-05-28
JP6322968B2 JP6322968B2 (ja) 2018-05-16

Family

ID=53376068

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013239098A Active JP6322968B2 (ja) 2013-11-19 2013-11-19 情報処理装置、情報処理方法およびプログラム

Country Status (1)

Country Link
JP (1) JP6322968B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017033452A (ja) * 2015-08-05 2017-02-09 富士通株式会社 計算機、動作周波数決定プログラム及び動作周波数決定方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001184218A (ja) * 1999-12-27 2001-07-06 Nec Corp Mpiプログラムのコンパイルにおける最適化方法
JP2009140451A (ja) * 2007-12-11 2009-06-25 Hitachi Ltd コンパイラ装置、コンパイル方法およびそのプログラム
JP2009528649A (ja) * 2007-04-04 2009-08-06 ビ−エイイ− システムズ パブリック リミテッド カンパニ− 分散コンピューティングに関する改良
JP2011107983A (ja) * 2009-11-17 2011-06-02 Nec Corp 情報記憶システム,情報記憶方法及びプログラム
JP2011530768A (ja) * 2008-08-13 2011-12-22 トランセラ・インコーポレーテッド ソフトウェア・アプリケーションの性能向上

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001184218A (ja) * 1999-12-27 2001-07-06 Nec Corp Mpiプログラムのコンパイルにおける最適化方法
JP2009528649A (ja) * 2007-04-04 2009-08-06 ビ−エイイ− システムズ パブリック リミテッド カンパニ− 分散コンピューティングに関する改良
JP2009140451A (ja) * 2007-12-11 2009-06-25 Hitachi Ltd コンパイラ装置、コンパイル方法およびそのプログラム
JP2011530768A (ja) * 2008-08-13 2011-12-22 トランセラ・インコーポレーテッド ソフトウェア・アプリケーションの性能向上
JP2011107983A (ja) * 2009-11-17 2011-06-02 Nec Corp 情報記憶システム,情報記憶方法及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017033452A (ja) * 2015-08-05 2017-02-09 富士通株式会社 計算機、動作周波数決定プログラム及び動作周波数決定方法

Also Published As

Publication number Publication date
JP6322968B2 (ja) 2018-05-16

Similar Documents

Publication Publication Date Title
US10942760B2 (en) Predictive rightsizing for virtual machines in cloud computing systems
US9483319B2 (en) Job scheduling apparatus and method therefor
KR101332840B1 (ko) 병렬 컴퓨팅 프레임워크 기반의 클러스터 시스템, 호스트 노드, 계산 노드 및 어플리케이션 실행 방법
CN111406250A (zh) 无服务器计算环境中的使用经预取的数据的配设
JP7282823B2 (ja) メモリアクセスリクエストスケジューリング方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム
US9733982B2 (en) Information processing device and method for assigning task
Malakar et al. Optimal execution of co-analysis for large-scale molecular dynamics simulations
KR101695013B1 (ko) 적응형 자원 할당 및 관리 방법
KR20200091790A (ko) Gpu 연산의 동시 실행을 위한 플랫폼
WO2016092856A1 (ja) 情報処理装置、情報処理システム、タスク処理方法、及び、プログラムを記憶する記憶媒体
Pathania et al. Task scheduling for many-cores with S-NUCA caches
US8977752B2 (en) Event-based dynamic resource provisioning
JP2007188523A (ja) タスク実行方法およびマルチプロセッサシステム
WO2018079162A1 (ja) 情報処理システム
US10853137B2 (en) Efficient resource allocation for concurrent graph workloads
JP6694683B2 (ja) スケジューラコンピューティング装置、それを含む分散コンピューティングシステムのデータノード、及びその方法
JP6322968B2 (ja) 情報処理装置、情報処理方法およびプログラム
JP2017204086A (ja) 情報処理装置、ジョブ管理方法およびジョブ管理プログラム
JP6156379B2 (ja) スケジューリング装置、及び、スケジューリング方法
KR101332839B1 (ko) 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드 및 메모리 관리 방법
KR101558807B1 (ko) 호스트 프로세서와 협업 프로세서 간에 협업 처리를 위한 프로세서 스케줄링 방법 및 그 방법을 수행하는 호스트 프로세서
JP5525658B2 (ja) 計算機、リソース使用量計算方法及びリソース使用量計算プログラム
JP6445876B2 (ja) リソース割当装置、リソース割当システム、および、リソース割当方法
KR20130099351A (ko) 디스크 캐쉬 효과를 극대화하는 워크플로우 작업 스케줄링 장치 및 방법
Puttaswamy Scale-Out Algorithm for Apache Storm in SaaS Environment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161014

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170821

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170829

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171027

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180326

R150 Certificate of patent or registration of utility model

Ref document number: 6322968

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150