(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-01
(45)【発行日】2023-08-09
(54)【発明の名称】プロファイリング方法
(51)【国際特許分類】
G06F 11/36 20060101AFI20230802BHJP
G06F 9/38 20180101ALI20230802BHJP
G06F 11/34 20060101ALI20230802BHJP
【FI】
G06F11/36 192
G06F9/38 370C
G06F11/36 164
G06F11/34 176
(21)【出願番号】P 2019063934
(22)【出願日】2019-03-28
【審査請求日】2021-12-15
(73)【特許権者】
【識別番号】519084397
【氏名又は名称】株式会社エヌエスアイテクス
(73)【特許権者】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】100113549
【氏名又は名称】鈴木 守
(74)【代理人】
【識別番号】100115808
【氏名又は名称】加藤 真司
(72)【発明者】
【氏名】片野 智明
【審査官】坂庭 剛史
(56)【参考文献】
【文献】特開2013-122740(JP,A)
【文献】特開2002-014841(JP,A)
【文献】米国特許出願公開第2019/0034316(US,A1)
【文献】米国特許出願公開第2018/0373514(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/30-11/36
G06F 9/38
G06F 9/455-9/54
G06F 8/76
(57)【特許請求の範囲】
【請求項1】
開発環境のコンピュータから、当該コンピュータでコンパイルしたアクセラレータ用の実行プログラムをエクスポートするステップ(S10)と、
前記実行プログラムを、ホストCPUとアクセラレータとを有する実行環境(実行環境は、前記
開発環境とは異なる環境)にインポートすると共に、前記開発環境と前記実行環境との違いを吸収するランタイムライブラリに環境間の変換情報を記憶するステップ(S11)と、
前記実行環境において、前記ホストCPU上で実行されるアプリケーションから前記ランタイムライブラリを介して前記アクセラレータ上にて実行プログラムの処理を実行させるステップ(S12)と、
前記アプリケーションが前記ランタイムライブラリを経由して、実行中のアクセラレータの状態(ステータス)を取得するステップ(S13)と、
前記アプリケーションが前記ステータスの少なくとも一部をログファイルに書き込むステップ(S14)と、
を備えるプロファイリング方法。
【請求項2】
前記アプリケーションが取得する前記アクセラレータの情報が前記アプリケーションにより解釈できない情報になる場合に、前記ランタイムライブラリを介して、前記アプリケーションが解釈可能な情報に変換するステップと、
前記アプリケーションが前記ランタイムライブラリにより変換された情報を前記ログファイルに書き込むステップと、
を備える請求項1に記載のプロファイリング方法。
【請求項3】
前記アプリケーションが取得するアクセラレータの情報が物理アドレスであり、当該物理アドレスが前記アプリケーションにより解釈できない情報になる場合、前記ランタイムライブラリを介して、前記アプリケーションが解釈可能な論理アドレスに変換するステップと、
前記アプリケーションが前記
論理アドレスを前記ログファイルに書き込むステップと、
を備える請求項2に記載のプロファイリング方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチコア環境のアクセラレータをプロファイリング(性能解析)する方法に関する。
【背景技術】
【0002】
コンピュータ上で実行されるプログラムの性能分析や最適化を行う手段として、プロファイリングが広く用いられている(例えば、特許文献1)。プロファイリングは、プログラムコードの走行頻度、時間分布、またプログラム内部の呼出し関係頻度等の分析に有効である。例えば、プロファイリングによって、プログラム実行中のリソースの利用状況(以下、「プロファイル情報」という)を取得する。プロファイル情報に基づいて、プログラム中で実行期間の長かったコード範囲や所定のイベント時のプログラムの実行状況等を把握することができる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、上記したような従来のプロファイリング方法は、情報処理装置上のオペレーティングシステム(OS)で作動するシステムが対象であった。これに対し、本開示は、一部のタスクについてOS管理外のアクセラレータで実行されるマルチコア環境において、プロファイリングする方法を提供することを目的とする。
【課題を解決するための手段】
【0005】
本開示は上記課題を解決するために以下の技術的手段を採用する。特許請求の範囲及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施の形態に記載の具体的手段との対応関係を示す一例であって、本発明の技術的範囲を限定するものではない。
【0006】
本開示に係るプロファイリング方法は、開発環境のコンピュータから、当該コンピュータでコンパイルしたアクセラレータ用の実行プログラムをエクスポートするステップ(S10)と、前記実行プログラムを、ホストCPUとアクセラレータとを有する実行環境(実行環境は、前記コンパイル環境とは異なる環境)にインポートすると共に、前記開発環境と前記実行環境との違いを吸収するランタイムライブラリに環境間の変換情報を記憶するステップ(S11)と、前記実行環境において、前記ホストCPU上で実行されるアプリケーションから前記ランタイムライブラリを介して前記アクセラレータ上にて実行プログラムの処理を実行させるステップ(S12)と、前記アプリケーションが前記ランタイムライブラリを経由して、実行中のアクセラレータの状態(ステータス)を取得するステップ(S13)と、前記アプリケーションが前記ステータスの少なくとも一部をログファイルに書き込むステップ(S14)とを備える。
【発明の効果】
【0007】
本開示によれば、ランタイムライブラリに環境間の変換情報を記憶することにより、ランタイムライブラリを介して実行される実行環境のアクセラレータのプロファイリングを行うことができる。
【図面の簡単な説明】
【0008】
【
図1】本実施の形態のプロファイル方法を示す図である。
【
図2】実行環境のSoCの構成の一例を示す図である。
【
図3】実行環境のSoCにおいて、プロファイリング情報を取得するシーケンスを示す図である。
【発明を実施するための形態】
【0009】
以下、添付図面を参照しながら本実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
【0010】
図1は、本実施の形態のプロファイリング方法の手順を示す図である。本実施の形態のプロファイリング方法は、開発環境と実行環境が異なるときに、実行環境での実行状況をプロファイリングする方法である。本実施の形態のプロファイリング方法で想定している実行環境は、マルチコア環境のアクセラレータ(
図1では「ACC」と記載)を備えたSoC(System on Chip)1である。
【0011】
図2は、実行環境のSoC1の構成の一例を示す図である。SoC1は、ホストCPU21とアクセラレータ10とイベントハンドラ20とROM22とRAM23と外部インターフェイス24とを備えている。ホストCPU21とアクセラレータ10とROM22とRAM23と外部インターフェイス24は、システムバス25に接続されており、システムバス25を通じて互いに情報の授受が可能である。
【0012】
ホストCPU21は、データ処理を行うと共に、SoC1のOSをサポートする。ROM22は、読込専用のメモリである。RAM23は、読み書き用のメモリである。外部インターフェイス24は、例えば、カメラや超音波センサ等の外部機器と通信を行うためのインターフェイスである。
【0013】
アクセラレータ10は、SoC1のホストCPU21の演算負荷に対処する個別マスタとしての役割を有する。アクセラレータ10は、独自に、命令フェッチを行うことが可能である。また、アクセラレータ10には、割込み処理を生成するイベントハンドラ20が接続されており、イベントハンドラ20が生成した割込みをサポートしている。
【0014】
図1に戻って説明を続ける。開発環境のコンピュータ(PC)は、実行環境と同様に、CPUとアクセラレータを備えている。開発環境のPCのアクセラレータ(
図1では「ACC」と記載)は、実行環境のSoC1と同じアクセラレータである。開発環境では、実行環境で用いられるアクセラレータのための実行プログラムの開発を行う。実行環境のSoC1に開発環境で開発されたアクセラレータの実行プログラムがインポートされ、アクセラレータ上で処理が実行される。開発環境のコンピュータと実行環境のSoC1では、CPUとCPUによって実行されるアプリケーションが異なる。
【0015】
開発環境ではコンピュータ用のコンパイラとアクセラレータ用のコンパイラが統合された形で実装されている。これに対し、実行環境のSoC1では、アプリケーションを実行するメイン処理部分と、アクセラレータ10の制御を行うランタイムライブラリで構成される。なお、ランタイムライブラリは、コンピュータプログラムの実行時にアプリケーションと常に同時に存在して利用される前提のライブラリである。本実施の形態では、ランタイムライブラリは、アプリケーションと実行プログラムとをつなぐソフトウェアモジュールである。
【0016】
実行環境においては、ランタイムライブラリが開発環境と実行環境の違いを埋める。実行環境のCPU及びアプリケーションは、開発環境のCPU及びアプリケーションとは異なるので、アプリケーションにて解釈可能なプロファイリング情報を取得できないという問題があった。
【0017】
本実施の形態のプロファイリング方法では、こうした問題を解決するため、ランタイムライブラリに、開発環境と実行環境という環境間の違いを変換するための情報を記憶しておき、アプリケーションはランタイムライブラリを介して実行中のアクセラレータ10の状態(ステータス)を取得する。具体的には、アプリケーションが取得するアクセラレータ10の情報がアプリケーションにより解釈できない情報になる場合に、ランタイムライブラリを介して、アプリケーションが解釈可能な情報に変換する。また、アプリケーションが取得するアクセラレータ10の情報が物理アドレスであり、物理アドレスがアプリケーションにより解釈できない情報になる場合には、ランタイムライブラリを介して、アプリケーションが解釈可能な論理アドレスに変換する。
【0018】
本実施の形態のプロファイリング方法の動作について説明する。
図1に示すように、開発環境のコンピュータが、コンパイルした実行プログラム(バイナリ)をエクスポートし(S10)、実行環境のSoC1は、エクスポートされた実行プログラムをインポートする(S11)。実行プログラムを実行環境のSoC1にインポートする際に、ランタイムライブラリに環境間の変換情報を記憶する。一例としては、実行プログラムのバイナリをマッピングする実行環境のメモリアドレス、サイズ、命令や書き換え可能データといったメモリ値の属性の情報を記憶しておく。
【0019】
アクセラレータ10は、アプリケーションから指示に従って、実行プログラムを実行することにより処理を行う(S12)。この際、アクセラレータ10の情報は、ランタイムライブラリに隠蔽され、ホストCPU21からは見えない。例えば、実行環境の物理アドレスは、実行ファイルのインポート時に、アドレス変換テーブルが書き換えられ、実行環境用に変更される。本実施の形態のプロファイル方法では、実行時に隠蔽される情報をホストCPU21が取得できるような機能をランタイムライブラリに持たせる。ランタイムライブラリが、アクセラレータ10の情報から、アプリケーションが解釈できる論理的な情報に変換し、アクセラレータ10のプロファイリングを行う(S13)。ホストCPU21は、ランタイムライブラリが変換した情報をログファイルに書き込む(S14)。このログファイルを開発環境のコンピュータに読み込ませ(S15)、開発環境のコンピュータのビューワでログファイルを見ることにより、SoC1の実行状況をプロファイルすることができる。
【0020】
図3は、実行環境のSoC1において、プロファイリング情報を取得するシーケンスを示す図である。まず、ホストCPU21はプロファイリング情報を書き込むログファイルを生成する(S20)。次に、ホストCPU21はアプリケーションを実行し、その中で、アクセラレータ10に対して実行開始を指示する(S21)。これを受けてアクセラレータ10は、処理を行う(S22)。アクセラレータ10は、処理が終了すると、アプリケーションに割込みをかけて処理終了を通知する。
【0021】
アプリケーションのプロファイル機能は、アクセラレータ10にステータスの読出しの命令を送信し(S23)、アクセラレータ10は、ステータスを読み出してアプリケーションに送信する(S24)。
【0022】
アプリケーションのプロファイル機能は、読み出したデータのうち、アプリケーションでは解釈できない値を変換するために、ランタイムライブラリに変換を依頼する。たとえば、ランタイムライブラリに物理アドレスを送信し(S25)、ランタイムライブラリから、物理アドレスに対応する仮想アドレスを取得する(S26)。そして、プロファイル機能は、取得した仮想アドレスに基づいてログデータを生成し(S27)、生成したログデータをプロファイルログファイルに書き込む(S28)。このように、アクセラレータ10の実行の状況が論理情報に変換されてログファイルに書き込まれていく。続いて、ホストCPUは、アクセラレータ10に対して実行開始を指示し(S29)、アクセラレータ10が実行され、上記の処理を繰り返すことにより、プロファイルログファイルが生成されていく。
【産業上の利用可能性】
【0023】
マルチコア環境のアクセラレータをプロファイリングする方法として有用である。
【符号の説明】
【0024】
1・・・SoC、10・・・アクセラレータ、20・・・イベントハンドラ、
21・・・ホストCPU、22・・・ROM、23・・・RAM、
24・・・外部インターフェイス、25・・・システムバス