JP6548848B2 - 情報処理装置、情報処理方法及び情報処理プログラム - Google Patents

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

Info

Publication number
JP6548848B2
JP6548848B2 JP2019500167A JP2019500167A JP6548848B2 JP 6548848 B2 JP6548848 B2 JP 6548848B2 JP 2019500167 A JP2019500167 A JP 2019500167A JP 2019500167 A JP2019500167 A JP 2019500167A JP 6548848 B2 JP6548848 B2 JP 6548848B2
Authority
JP
Japan
Prior art keywords
processing
loop
calculation
processing time
unit
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
JP2019500167A
Other languages
English (en)
Other versions
JPWO2018150588A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2018150588A1 publication Critical patent/JPWO2018150588A1/ja
Application granted granted Critical
Publication of JP6548848B2 publication Critical patent/JP6548848B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3447Performance evaluation by modeling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3457Performance evaluation by simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • G06F8/452Loops
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Quality & Reliability (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、プログラムの処理時間を計算する技術に関する。
組込みシステムは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphic Processing Unit)、FPGA(Field Programmable Gate Array)等の計算資源、メモリ、IC(Integrated Circuit)などが組み合わされて構成される。これらの計算資源を選定すること、メモリ及びICを選定すること及び計算資源とメモリ及びICとの接続構成を決定することをシステムアーキテクチャ設計と呼ぶ。
従来から、システムアーキテクチャ設計は、設計者の経験等により行われている。また、計算資源上で動作するソフトウェアやハードウェアのシミュレーションモデルを用いて、組込みシステムのシミュレートを行うことで、組込みシステムの性能見積りが行われる。
しかしながら、上記の性能見積り方法は、一旦システムアーキテクチャ設計を行ったうえで、システムを構成する計算資源及びメモリのそれぞれについてシミュレーションモデルを作成する必要がある。このため、シミュレーションモデル開発に工数がかかるという問題がある。また、システムアーキテクチャを変更する度に、シミュレーションモデルの変更が必要になるという問題もある。
また、性能を見積もるためにシミュレーションモデルを用いたシミュレーションを行う時間が必要となり、性能見積りに時間がかかるという問題もある。
これらの問題を解決するため、シミュレーションを用いずにデータベース上の性能値を利用する方法が、特許文献1及び特許文献2に開示されている。
特許文献1では、プロセッサの性能を見積る方法が開示されている。より具体的には、特許文献1では、プロセッサの命令実行時間をデータベースに格納しておき、プロセッサの命令実行時間をソースコードに含まれる演算に当てはめることでプロセッサの性能を見積もる方法が開示されている。
特許文献2では、GPUのような並列プロセッサの性能を見積る方法が開示されている。より具体的には、特許文献2では、機能モデルからループ回数を取得し、取得したループ回数を並列プロセッサのコア数で除算することにより、ループを並列化した際の並列プロセッサの性能を見積る方法が開示されている。
特開2005−242569号公報 特開2014−194660号公報
しかしながら、これらの手法を用いても、計算資源のアーキテクチャに基づいて機能モデルを実装した際の性能見積りができず、見積値の精度が低いという課題がある。
本発明は、この課題を解決することを主な目的とする。より具体的には、本発明は、シミュレーションを用いずに、計算資源のアーキテクチャを反映した高精度な性能見積りを実現することを主な目的とする。
本発明に係る情報処理装置は、
1つ以上のループ処理が含まれるプログラムから前記1つ以上のループ処理の各々を抽出するループ抽出部と、
前記ループ抽出部により抽出された各ループ処理の特性を判定する特性判定部と、
処理時間を計算するための複数の処理時間計算手順の中から、ループ処理ごとに、各ループ処理の処理時間を計算するための処理時間計算手順を、前記特性判定部により判定された各ループ処理の特性と、前記プログラムを実行する計算資源のアーキテクチャとに基づき選択する計算手順選択部と、
前記計算手順選択部により選択された、対応する処理時間計算手順を用いて、各ループ処理の処理時間を計算する処理時間計算部とを有する。
本発明によれば、シミュレーションを用いずに、計算資源のアーキテクチャを反映した高精度な性能見積りを実現することができる。
実施の形態1に係る性能見積り装置の機能構成例を示す図。 実施の形態1に係る性能見積り装置のハードウェア構成例を示す図。 実施の形態1に係る性能見積り装置の動作例を示すフローチャート。 実施の形態1に係る性能見積り装置の動作例を示すフローチャート。 実施の形態1に係る機能モデルの例を示す図。 実施の形態1に係るループ処理の例を示す図。 実施の形態1に係るイタレーション間にデータ依存のあるループ処理の例を示す図。 実施の形態1に係る制御依存のあるループ処理の例を示す図。 実施の形態1に係る縮約可能演算化が可能なループ処理の例を示す図。 実施の形態1に係るループ処理のパラメータ抽出例を示す図。 実施の形態1に係る性能計算基本式情報の例を示す図。 実施の形態1に係る制約条件情報の例を示す図。 実施の形態1に係るメモリアクセス遅延特性情報の例を示す図。 実施の形態1に係る演算時間情報の例を示す図。
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分または相当する部分を示す。
実施の形態1.
***構成の説明***
図1は、実施の形態1に係る性能見積り装置100の機能構成例を示す。実施の形態1に係る性能見積り装置100の機能構成について、図1に基づいて説明する。ただし、性能見積り装置100の機能構成は図1と異なる機能構成であっても構わない。
性能見積り装置100は、計算資源情報取得部110と機能モデル取得部120と処理分割部130とパラメータ抽出部140と性能計算基本式選択部150と性能見積り部160と計算資源データベース170とを備える。
また、性能見積り装置100は、計算資源情報200と機能モデル210を取得し、性能見積値300を出力する。
性能見積り装置100は、情報処理装置に相当する。また、性能見積り装置100で行われる動作は、情報処理方法及び情報処理プログラムに相当する。
また、図2は、実施の形態1に係る性能見積り装置100のハードウェア構成例を示す。
性能見積り装置100は、プロセッサ901、メモリ902、記憶装置903、入力装置904及び出力装置905を備える。
性能見積り装置100は、コンピュータである。
記憶装置903には、図1に示す計算資源情報取得部110、機能モデル取得部120、機能モデル取得部120、処理分割部130、パラメータ抽出部140、性能計算基本式選択部150及び性能見積り部160の機能を実現するプログラムが記憶されている。
プログラムはメモリ902にロードされる。そして、プロセッサ901がプログラムをメモリ902から読み出してプログラムを実行し、後述する計算資源情報取得部110、機能モデル取得部120、機能モデル取得部120、処理分割部130、パラメータ抽出部140、性能計算基本式選択部150及び性能見積り部160の動作を行う。
図1では、プロセッサ901が計算資源情報取得部110、機能モデル取得部120、機能モデル取得部120、処理分割部130、パラメータ抽出部140、性能計算基本式選択部150及び性能見積り部160の機能を実現するプログラムを実行している状態を模式的に表している。
次に、図1に示す構成要素の詳細を説明する。
計算資源情報取得部110は、計算資源情報200を取得する。計算資源情報200には、機能モデル210を実行する計算資源のアーキテクチャが示される。機能モデル210には、性能見積もりの対象の処理が記述される。機能モデル210は、例えば、プログラムのソースコードの全部又は一部である。機能モデル210には、1つ以上のループ処理が含まれる。計算資源とは、プログラムを実行する演算装置である。前述したように、計算資源には、CPU、DSP、GPU、FPGA等が含まれる。計算資源のアーキテクチャは、製品名、製品コードといった計算資源の具体的な型番である。
計算資源情報取得部110は、計算資源情報200を性能計算基本式選択部150に出力する。
機能モデル取得部120は、機能モデル210を取得する。機能モデル210の機能モデル取得部120への入力は、性能見積り装置100を利用するユーザが実施する。
処理分割部130は、機能モデル取得部120が取得した機能モデル210を分割する。より具体的には、処理分割部130は、機能モデル210からループ処理を抽出する。
ループ処理とは、例えば機能モデル210がC言語のプログラムである場合は、for文などで表される処理である。処理分割部130は、機能モデル210がC言語のプログラムである場合は、for文で囲われた箇所を1つのループとして抽出し、また、for文とfor文の間の処理記述を、ループ回数1のループとして抽出する。
処理分割部130は、ループ処理ごとに分割した機能モデル210をパラメータ抽出部140に出力する。
機能モデル取得部120は、ループ抽出部に相当する。また、機能モデル取得部120により行われる処理は、ループ抽出処理に相当する。
パラメータ抽出部140は、処理分割部130で抽出された各ループ処理の特性を判定する。また、パラメータ抽出部140は、処理分割部130で抽出された各ループ処理から、ループ処理全体のメモリアクセスサイズとメモリアクセス順序を抽出する。また、パラメータ抽出部140は、処理分割部130で抽出された各ループ処理から、ループ処理内の演算種別ごとの演算数を抽出する。
パラメータ抽出部140は、ループ処理の特性として、ループ処理のイタレーション間のデータ依存の有無、ループ処理に含まれる分岐処理の数(ループ処理内の処理の制御依存数)、ループ処理の縮約演算化の可否を判定する。なお、ループ処理の特性は、これらに限られない。
パラメータ抽出部140は、各ループ処理の特性を性能計算基本式選択部150に出力する。
また、パラメータ抽出部140は、抽出したメモリアクセスサイズ、メモリアクセス順序、演算種別ごとの演算数を性能見積り部160に出力する。
パラメータ抽出部140は、特性判定部に相当する。また、パラメータ抽出部140により行われる処理は特性判定処理に相当する。
性能計算基本式選択部150は、計算資源データベース170で保持されている複数の性能計算基本式から最適の性能計算基本式を選択する。性能計算基本式は、ループ処理の処理時間を計算するための処理時間計算手順である。性能計算基本式選択部150は、ループ処理ごとに、最適の性能計算基本式を選択する。より具体的には、性能計算基本式選択部150は、計算資源データベース170から出力される制約条件情報に示される制約条件と、パラメータ抽出部140で判定されたループ処理の特性と、計算資源情報200に示される計算資源のアーキテクチャとに基づき、ループ処理ごとに、最適な性能計算基本式を選択する。
性能計算基本式選択部150は、選択した性能計算基本式を性能見積り部160に出力する。
性能計算基本式選択部150は、計算手順選択部に相当する。また、性能計算基本式選択部150で行われる処理は、計算手順選択処理に相当する。
性能見積り部160は、性能計算基本式選択部150から、性能計算基本式を取得する。
また、性能見積り部160は、計算資源データベース170から、メモリアクセス遅延特性情報を取得する。そして、性能見積り部160は、パラメータ抽出部140が抽出したメモリアクセスサイズ、メモリアクセス順序をメモリアクセス遅延特性情報に適用して、ループ処理内のメモリアクセス時間を算出する。
また、性能見積り部160は、計算資源データベース170から、演算時間情報を取得する。そして、性能見積り部160は、パラメータ抽出部140が抽出したループ処理内の演算種別ごとの演算数を演算時間情報に適用して、ループ処理での演算時間(命令実行時間)を算出する。
また、性能見積り部160は、算出したメモリアクセス時間、演算時間(命令実行時間)を性能計算基本式選択部150から取得した性能計算基本式に適用する。そして、性能見積り部160は、ループ処理全体の処理時間を得る。
性能見積り部160は、各ループ処理の処理時間から、機能モデル210の全体の処理時間を得る。そして、性能見積り部160は、機能モデル210の全体の処理時間を性能見積値300として出力する。
性能見積り部160は、処理時間計算部に相当する。また、性能見積り部160により行われる処理は処理時間計算処理に相当する。
計算資源データベース170は、性能計算基本式情報を保持する。また、計算資源データベース170は、制約条件情報を保持する。更に、計算資源データベース170は、メモリアクセス遅延特性情報、演算ごとの演算時間情報を保持する。
計算資源データベース170は、記憶装置903で実現される。
性能計算基本式情報には、複数の性能計算基本式が記述されている。図11に性能計算基本式情報の例を示す。性能計算基本式情報の詳細は後述する。
図11の性能計算基本式情報には、4つの性能計算基本式が記述される。なお、説明の欄は、各性能計算基本式を理解するための補足情報として設けている。計算資源データベース170で保持する性能計算基本式情報には、説明の欄を設けなくてもよい。
制約条件情報には、性能計算基本式ごとに制約条件が記述される。図12に制約条件情報の例を示す。図12の制約条件情報には、ループ処理の特性についての制約条件と計算資源のアーキテクチャについての制約条件が定義されている。制約条件情報の詳細は後述する。ループ処理の特性についての制約条件には、性能計算基本式の適用対象のループ利処理の特性が示される。また、計算資源のアーキテクチャについての制約条件には、性能計算基本式の適用対象の計算資源のアーキテクチャが示される。
メモリアクセス遅延特性情報には、メモリアクセス遅延時間の算出手順が記述される。図13にメモリアクセス遅延特性情報の例を示す。メモリアクセス遅延特性情報の詳細は後述する。なお、メモリアクセス遅延特性情報は、メモリアクセス遅延時間計算手順に相当する。
演算時間情報には、演算時間の算出手順が記述される。図14に演算時間情報の例を示す。演算時間情報の詳細は後述する。
***動作の説明***
図3及び図4は、実施の形態1に係る性能見積り装置100の動作例を示す。
実施の形態1に係る性能見積り装置100の動作例を図3及び図4に基づいて説明する。ただし、性能見積り装置100の動作に図3及び図4と異なる処理が含まれていても構わない。
先ず、ステップS110において、計算資源情報取得部110は、計算資源情報200を取得し、取得した計算資源情報200を性能計算基本式選択部150に出力する。
ステップS110の後、処理はステップS120に進む。
次に、ステップS120において、機能モデル取得部120が、機能モデル210を取得し、取得した機能モデル210を処理分割部130に出力する。機能モデル210は、C言語等のプログラミング言語で記述された処理であり、実行可能なプログラムの全体または一部である。図5に機能モデル210の例を示す。
ステップS120の後、処理はステップS130に進む。
次に、S130において、処理分割部130が、機能モデル210からループ処理を抽出し、各ループ処理をパラメータ抽出部140に出力する。
図6は、図5に示す機能モデル210から抽出されたループ処理の例を示す。
ステップS130の後、処理はステップS140に進む。
次に、ステップS140において、パラメータ抽出部140が、各ループ処理の特性を判定する。そして、パラメータ抽出部140は、各ループ処理と、各ループ処理の特性を性能計算基本式選択部150に出力する。ループ処理の特性としては、例えば、以下のようなものがある。
(1)ループイタレーション間のデータ依存の有無
パラメータ抽出部140は、ループ処理に含まれている複数の演算の実行順序が制限されるか否かを判定する。図7に、データ依存があるループ処理の例を示す。
(2)ループ内の分岐数処理の数
ループ処理内に分岐処理が含まれる場合に、パラメータ抽出部140は、分岐処理の数をカウントする。図8に制御依存があるループ処理、すなわち、分岐処理が含まれるループ処理の例を示す。図8のループ処理の場合は、分岐処理が1つのため、分岐処理数(制御依存数ともいう)は1である。
(3)ループの縮約演算化の可否
演算結果が1変数に集約される、交換法則適用可能な演算がループ処理に含まれる場合に、パラメータ抽出部140は、当該ループ処理を、縮約演算化可能なループ処理として判定する。図9に縮約演算化可能なループ処理の例を示す。
ステップS140の後、処理はステップS141に進む。
ステップS141において、パラメータ抽出部140が、各ループ処理からメモリアクセスサイズ、メモリアクセス順序(シーケンシャルまたはランダム)、演算種別ごとの演算数を抽出する。そして、パラメータ抽出部140は、メモリアクセスサイズ、メモリアクセス順序、演算種別ごとの演算数と、計算資源情報200を性能見積り部160に出力する。
パラメータ抽出部140は、演算種別として、加減乗除、ビットシフト、論理演算などの演算子を抽出する。また、パラメータ抽出部140は、積和演算(a * c + b)等の計算資源のアーキテクチャ上、1演算として扱われる演算も1つの演算種別として抽出する。
図10に、ループ処理のソースコードと、当該ループ処理についてのパラメータ抽出部140のパラメータ抽出例を示す。
ステップS141の後、処理はステップS150に進む。
次に、ステップS150において、性能計算基本式選択部150が、計算資源データベース170から、制約条件情報を取得する。
図12に制約条件情報の例を示す。
S150の後、処理はS151に進む。
ステップS151において、性能計算基本式選択部150は、ループ処理の特性と計算資源のアーキテクチャから、計算資源データベース170で保持されている複数の性能計算基本式の中から、ループ処理ごとに、最適な性能計算基本式を選択する。
より具体的には、性能計算基本式選択部150は、パラメータ抽出部140で判定されたループ処理の特性と、計算資源情報200に示される計算資源のアーキテクチャとの組み合わせと、ステップS150で取得した制約条件情報に示されるループ処理の特性についての制約条件と計算資源のアーキテクチャについての制約条件との組み合わせとを比較して、性能計算基本式を選択する。
図12では、「(1)シーケンシャル」の性能計算基本式に対しては、ループ処理の特性についての制約条件として「無」が定義され、計算資源のアーキテクチャについての制約条件として「CPU,DSP,FPGA,GPU」が定義されている。「(2)並列」の性能計算基本式に対しては、ループ処理の特性についての制約条件として「ループイタレーション間のデータ存在無」が定義され、計算資源のアーキテクチャについての制約条件として「DSP,GPU」が定義されている。「(4)縮約」の性能計算基本式に対しては、ループ処理の特性についての制約条件として「縮約演算化可能」が定義され、計算資源のアーキテクチャについての制約条件として「GPU,FPGA」が定義されている。
計算資源情報200に示される計算資源のアーキテクチャがGPUに属する型番である場合は、性能計算基本式選択部150は、当該ループ処理の性能計算基本式として、「(1)シーケンシャル」、「(2)並列」及び「(4)縮約」の性能計算基本式が選択可能である。図10に示すループ処理は、ループイタレーション間のデータ依存があり、縮約化可能なループ処理である。性能計算基本式選択部150は、図10のループ処理に対しては、「(1)シーケンシャル」又は「(4)縮約」の性能計算基本式が選択可能である。ここでは、「(4)縮約」の性能計算基本式の方が性能が良いので、性能計算基本式選択部150は、「(4)縮約」の性能計算基本式を選択する。
そして、性能計算基本式選択部150は、選択した性能計算基本式を計算資源データベース170から取得し、取得した性能計算基本式を性能見積り部160に出力する。
ステップS151の後、処理はステップS160に進む。
ステップS160において、性能見積り部160は、計算資源データベース170から、メモリアクセス遅延特性情報を取得する。メモリアクセス遅延特性情報は、計算資源のメモリアーキテクチャに依存したメモリアクセス順序及びメモリアクセスサイズから、メモリアクセス遅延時間を算出する手順を示す。図13にメモリアクセス遅延特性情報の例を示す。
図13のメモリアクセス遅延特性情報は、リードアクセスのアクセスサイズがN[byte]以上、メモリアクセス順序がランダムアクセスのときに、アクセス時間がTr_slow[ns]であることを示す。また、図13のメモリアクセス遅延特性情報は、リードアクセスのアクセスサイズ及びメモリアクセス順序が上記の条件以外のときは、アクセス時間がTr_fast[ns]であることを示す。また、図13のメモリアクセス遅延特性情報は、ライトアクセスのアクセス時間は常にTw[ns]であることを示す。図13のメモリアクセス遅延特性情報は、N[byte]のキャッシュを持つ計算資源のメモリアクセス遅延特性を示している。
図13の例では、メモリアクセス遅延特性情報は、プログラミング言語の形式で表現されているが、メモリアクセス遅延特性情報は、数式等の他の方法で表現されてもよい。
ステップS160の後は、処理はステップS161に進む。
ステップS161において、性能見積り部160は、S160で取得したメモリアクセス遅延特性情報に、ステップS141でパラメータ抽出部140から取得したメモリアクセス順序、メモリアクセスサイズを代入することで、ループ処理でのメモリアクセス遅延時間を計算する。
図13に示す計算資源のメモリアクセス遅延特性情報が用いられ、パラメータ抽出部140が図10で示すアクセスサイズ、メモリアクセス順序を抽出した場合を想定する。この場合は、アクセスサイズ=N[byte]、リードアクセス順序=シーケンシャルなので、リードアクセス時間Tr_fast[ns]、ライトアクセス時間Tw[ns]となる。このため、ループ処理内のメモリアクセス時間は(Tr_fast+Tw)[ns]となる。
ステップS162において、性能見積り部160は、計算資源データベース170から、計算資源の演算時間情報を取得する。図14は演算時間情報の例を示す。図14に示すように、演算時間情報には、計算資源に含まれる演算器ごとに、遅延値と対応する演算種別が示される。
ステップS162の後は、処理はステップS163に進む。
ステップS163において、性能見積り部160は、ステップS162で取得した演算時間情報と、ステップS141でパラメータ抽出部140が抽出した演算種別ごとの演算数から、ループ処理での演算時間を計算する。
図14に示す演算時間情報が用いられ、パラメータ抽出部140が図10で示す演算種別ごとの演算数を抽出した場合を想定する。図10の例では、ADDが1つなので、ループ内演算時間はTalu[ns]となる。もし、ループ処理に、ADDが1つ、SUBが1つ、SHIFTが1つ含まれていれば、ループ内演算時間は、3×Talu[ns]となる。
ステップS163の後は、ステップS164に進む。
ステップS164において、性能見積り部160は、ステップS151で性能計算基本式選択部150が選択した性能計算基本式にステップS161とステップS163で性能見積り部160が算出したループ処理内のメモリアクセス時間とループ処理内の演算時間を代入してループ処理全体の処理時間を計算する。
性能計算基本式が図11の「(4)縮約」であり、ループ処理内のメモリアクセス遅延が(Tr_fast+Tw)[ns]であり、ループ処理内の演算時間がTalu[ns]であり、オーバーヘッド(固定値)がOH[ns]である場合は、ループ処理全体の演算時間は{(Tr_fast+Tw+Talu+OH)×log2(N)}[ns]と算出される。
例えば、性能計算基本計算式150が図12の「(1)シーケンシャル」を選択した場合に、上記と同じメモリアクセス遅延時間と演算時間が得られたと仮定すると、ループ処理全体の演算時間は{(Tr_fast+Tw+Talu+OH)×N}[ns]となる。
このように、性能計算基本式は、ループ処理の実装方法によって生じるループ処理の処理時間の差異を反映している。
ステップS164の後は、処理はステップS165に進む。
ステップS165において、性能見積り部160は、ステップS164で算出した各ループ処理全体の処理時間から、機能モデル全体の処理時間を算出する。
性能見積り部160は、例えば、各ループ処理の総和またはクリティカルパスの算出により機能モデル210全体の処理時間を算出する。性能見積り部160は、タスク並列化が可能な計算資源の場合、クリティカルパスをタスクスケジューリングにより算出する。タスク並列化が可能な計算資源は、例えばマルチコアCPUやFPGAである。
性能見積り部160は、上記で算出した機能モデル210全体の処理時間を性能見積値300として出力し、性能見積り処理を終了する。
なお、上記では、計算資源データベース170は、計算資源ごとに1つのメモリアクセス遅延特性情報と1つの演算時間情報を保持している。1つの計算資源が複数の性能計算基本式に適応している場合は、計算資源データベース170は、計算資源と性能計算基本式との組合せの単位で、メモリアクセス遅延特性情報及び演算時間情報を保持していてもよい。
図12の例では、GPUは「(1)シーケンシャル」、「(2)並列」及び「(4)縮約」に対応している。計算資源データベース170は、GPUと「(1)シーケンシャル」の組合せについてのメモリアクセス遅延特性情報及び演算時間情報、GPUと「(2)並列」の組合せについてのメモリアクセス遅延特性情報及び演算時間情報、及びGPUと「(4)縮約」の組合せについてのメモリアクセス遅延特性情報及び演算時間情報を保持してもよい。
そして、各メモリアクセス遅延特性情報には異なる算出手順が示され、各演算時間情報には異なる算出手順が示されている。
***実施の形態の効果の説明***
本実施の形態に係る性能見積り装置は、ループ処理の特性と、計算資源のアーキテクチャとに基づき、性能計算基本式を選択する。そして、本実施の形態に係る性能見積り装置は、選択した性能計算基本式を用いて、ループ処理の処理時間を計算する。このため、シミュレーションを用いずに、計算資源のアーキテクチャを反映した高精度な性能見積りを実現することができる。
***ハードウェア構成の説明***
最後に、性能見積り装置100のハードウェア構成の補足説明を行う。
図2に示すプロセッサ901は、プロセッシングを行うIC(Integrated Circuit)である。
プロセッサ901は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)等である。
メモリ902は、RAM(Random Access Memory)である。
記憶装置903は、ROM(Read Only Memory)、フラッシュメモリ、HDD(Hard Disk Drive)等である。
入力装置904は、例えば、マウス又はキーボードである。
出力装置905は、例えば、ディスプレイ装置である。
また、記憶装置903には、OS(Operating System)も記憶されている。
そして、OSの少なくとも一部がプロセッサ901により実行される。
プロセッサ901はOSの少なくとも一部を実行しながら、計算資源情報取得部110、機能モデル取得部120、機能モデル取得部120、処理分割部130、パラメータ抽出部140、性能計算基本式選択部150及び性能見積り部160の機能を実現するプログラムを実行する。
プロセッサ901がOSを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、計算資源情報取得部110、機能モデル取得部120、機能モデル取得部120、処理分割部130、パラメータ抽出部140、性能計算基本式選択部150及び性能見積り部160の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、記憶装置903、プロセッサ901内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、計算資源情報取得部110、機能モデル取得部120、処理分割部130、パラメータ抽出部140、性能計算基本式選択部150及び性能見積り部160の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記憶媒体に記憶されてもよい。
また、計算資源情報取得部110、機能モデル取得部120、機能モデル取得部120、処理分割部130、パラメータ抽出部140、性能計算基本式選択部150及び性能見積り部160の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、性能見積り装置100は、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)といった電子回路により実現されてもよい。
この場合は、計算資源情報取得部110、機能モデル取得部120、機能モデル取得部120、処理分割部130、パラメータ抽出部140、性能計算基本式選択部150及び性能見積り部160は、それぞれ電子回路の一部として実現される。
なお、プロセッサ及び上記の電子回路を総称してプロセッシングサーキットリーともいう。
100 性能見積り装置、110 計算資源情報取得部、120 機能モデル取得部、130 処理分割部、140 パラメータ抽出部、150 性能計算基本式選択部、160 性能見積り部、170 計算資源データベース、200 計算資源情報、210 機能モデル、300 性能見積値、901 プロセッサ、902 メモリ、903 記憶装置、904 入力装置、905 出力装置。

Claims (8)

  1. 1つ以上のループ処理が含まれるプログラムから前記1つ以上のループ処理の各々を抽出するループ抽出部と、
    前記ループ抽出部により抽出された各ループ処理の特性を判定する特性判定部と、
    処理時間を計算するための複数の処理時間計算手順の中から、ループ処理ごとに、各ループ処理の処理時間を計算するための処理時間計算手順を、前記特性判定部により判定された各ループ処理の特性と、前記プログラムを実行する計算資源のアーキテクチャとに基づき選択する計算手順選択部と、
    前記計算手順選択部により選択された、対応する処理時間計算手順を用いて、各ループ処理の処理時間を計算する処理時間計算部とを有する情報処理装置。
  2. 前記計算手順選択部は、
    メモリアクセス遅延時間を計算するための複数のメモリアクセス遅延時間計算手順の中から、ループ処理ごとに、各ループ処理でのメモリアクセス遅延時間を計算するためのメモリアクセス遅延時間計算手順を、前記プログラムを実行する計算資源のアーキテクチャに基づき選択し、
    前記処理時間計算部は、
    前記計算手順選択部により選択された、対応するメモリアクセス遅延時間計算手順を用いて、各ループ処理でのメモリアクセス遅延時間を計算し、
    計算により得られたメモリアクセス遅延時間を、対応する処理時間計算手順に適用して、各ループ処理の処理時間を計算する請求項1に記載の情報処理装置。
  3. 前記処理時間計算部は、
    各ループ処理で行われる演算の種別と演算数とに基づき、各ループ処理での演算時間を計算し、
    計算により得られた演算時間を、対応する処理時間計算手順に適用して、各ループ処理の処理時間を計算する請求項1に記載の情報処理装置。
  4. 前記複数の処理時間計算手順の各々には、適用対象のループ処理の特性と適用対象の計算資源のアーキテクチャとが定義されており、
    前記計算手順選択部は、
    各ループ処理の特性と前記プログラムを実行する計算資源のアーキテクチャと、各処理時間計算手順に定義されている適用対象のループ処理の特性と適用対象の計算資源のアーキテクチャとを比較して、ループ処理ごとに、各ループ処理の処理時間を計算するための処理時間計算手順を選択する請求項1に記載の情報処理装置。
  5. 前記特性判定部は、
    ループ処理の特性として、ループ処理のイタレーション間のデータ依存の有無、ループ処理に含まれる分岐処理の数、及びループ処理の縮約演算化の可否のうちの少なくともいずれかを判定する請求項1に記載の情報処理装置。
  6. 前記処理時間計算部は、
    各ループ処理の処理時間から、前記プログラムの処理時間を得る請求項1に記載の情報処理装置。
  7. コンピュータが、1つ以上のループ処理が含まれるプログラムから前記1つ以上のループ処理の各々を抽出し、
    前記コンピュータが、各ループ処理の特性を判定し、
    前記コンピュータが、処理時間を計算するための複数の処理時間計算手順の中から、ループ処理ごとに、各ループ処理の処理時間を計算するための処理時間計算手順を、各ループ処理の特性と、前記プログラムを実行する計算資源のアーキテクチャとに基づき選択し、
    前記コンピュータが、前記選択した、対応する処理時間計算手順を用いて、各ループ処理の処理時間を計算する情報処理方法。
  8. 1つ以上のループ処理が含まれるプログラムから前記1つ以上のループ処理の各々を抽出するループ抽出処理と、
    前記ループ抽出処理により抽出された各ループ処理の特性を判定する特性判定処理と、
    処理時間を計算するための複数の処理時間計算手順の中から、ループ処理ごとに、各ループ処理の処理時間を計算するための処理時間計算手順を、前記特性判定処理により判定された各ループ処理の特性と、前記プログラムを実行する計算資源のアーキテクチャとに基づき選択する計算手順選択処理と、
    前記計算手順選択処理により選択された、対応する処理時間計算手順を用いて、各ループ処理の処理時間を計算する処理時間計算処理とをコンピュータに実行させる情報処理プログラム。
JP2019500167A 2017-02-20 2017-02-20 情報処理装置、情報処理方法及び情報処理プログラム Active JP6548848B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/006220 WO2018150588A1 (ja) 2017-02-20 2017-02-20 情報処理装置、情報処理方法及び情報処理プログラム

Publications (2)

Publication Number Publication Date
JPWO2018150588A1 JPWO2018150588A1 (ja) 2019-06-27
JP6548848B2 true JP6548848B2 (ja) 2019-07-24

Family

ID=63169754

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019500167A Active JP6548848B2 (ja) 2017-02-20 2017-02-20 情報処理装置、情報処理方法及び情報処理プログラム

Country Status (3)

Country Link
US (1) US20190384687A1 (ja)
JP (1) JP6548848B2 (ja)
WO (1) WO2018150588A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7003025B2 (ja) * 2018-10-17 2022-01-20 Kddi株式会社 計算量評価装置、計算量評価方法及び計算量評価プログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06139065A (ja) * 1992-10-29 1994-05-20 Hokuriku Nippon Denki Software Kk プログラム性能見積もり装置
JPH07271572A (ja) * 1994-03-30 1995-10-20 Hitachi Software Eng Co Ltd 動的ステップ数計算式の生成方法
JPH1091416A (ja) * 1996-09-18 1998-04-10 Nec Software Ltd 原始プログラム表示システム
JP2002229818A (ja) * 2001-02-01 2002-08-16 Hitachi Ltd プログラム実行時間解析方法およびその装置
JP4842783B2 (ja) * 2006-11-30 2011-12-21 三菱電機株式会社 情報処理装置及び情報処理方法及びプログラム
JP2016212667A (ja) * 2015-05-11 2016-12-15 富士通株式会社 性能見積方法、性能見積プログラム、及び性能見積装置

Also Published As

Publication number Publication date
JPWO2018150588A1 (ja) 2019-06-27
US20190384687A1 (en) 2019-12-19
WO2018150588A1 (ja) 2018-08-23

Similar Documents

Publication Publication Date Title
US20160299998A1 (en) Logic circuit generation device and method
US10437949B1 (en) Scheduling events in hardware design language simulation
US10990073B2 (en) Program editing device, program editing method, and computer readable medium
JP2019168753A (ja) ソースコード解析装置およびソースコード解析プログラム
US9658938B2 (en) Iterative test generation based on data source analysis
JP6548848B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
US9182960B2 (en) Loop distribution detection program and loop distribution detection method
US9448909B2 (en) Randomly branching using performance counters
JP7051025B2 (ja) シミュレーション実行システム、シミュレーション実行方法およびシミュレーション実行プログラム
KR20160098794A (ko) 디바이스 프로그램 구조 모델링 기반 골격코드 생성 장치 및 방법
US10180826B2 (en) Estimation of bit widths of variables based on liveness
JP6682036B2 (ja) 規模算出装置及び規模算出プログラム
US8949766B2 (en) Detecting corresponding paths in combinationally equivalent circuit designs
US20170115973A1 (en) Operating method of semiconductor device and semiconductor system
KR20150040663A (ko) 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치
JP2007316731A (ja) Lsi設計支援装置
US9830174B2 (en) Dynamic host code generation from architecture description for fast simulation
JP6266183B2 (ja) 回路設計支援装置および回路設計支援プログラム
US10534691B2 (en) Apparatus and method to improve accuracy of performance measurement for loop processing in a program code
JPWO2018167940A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
US20150089480A1 (en) Device, method of generating performance evaluation program, and recording medium
JP5233354B2 (ja) プロパティ検証システム、プロパティ検証方法、及びプログラム
JP6807721B2 (ja) 状態遷移編集装置および状態遷移編集プログラム
WO2018163387A1 (ja) 解析装置、解析方法及び解析プログラム
US10572233B2 (en) Vectorization device, vectorization method, and recording medium on which vectorization program is stored

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190315

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20190315

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20190326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190423

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190514

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190625

R150 Certificate of patent or registration of utility model

Ref document number: 6548848

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250