(57)【要約】      （修正有）【課題】マルチコア環境において、プロファイリングする方法を提供する。【解決手段】プロファイリング方法は、開発環境のコンピュータがコンパイルしたアクセラレータ用の実行プログラムをエクスポートするＳ１０。ホストＣＰＵとアクセラレータとを有する実行環境（実行環境は、コンパイル環境とは異なる環境）は実行プログラムをインポートすると共に、開発環境と実行環境との違いを吸収するランタイムライブラリに環境の変換情報を記憶するＳ１１。実行環境において、ホストＣＰＵ上で実行されるアプリケーションからランタイムライブラリを介してアクセラレータ上にて実行プログラムの処理を実行させるＳ１２。アプリケーションがランタイムライブラリを経由して、実行中のアクセラレータの状態（ステータス）を取得するＳ１３。アプリケーションがステータスの少なくとも一部をログファイルに書き込むＳ１４。【選択図】図１
2020166351.tif 000002
【特許請求の範囲】
【請求項１】
開発環境のコンピュータから、当該コンピュータでコンパイルしたアクセラレータ用の実行プログラムをエクスポートするステップ（Ｓ１０）と、
前記実行プログラムを、ホストＣＰＵとアクセラレータとを有する実行環境（実行環境は、前記コンパイル環境とは異なる環境）にインポートすると共に、前記開発環境と前記実行環境との違いを吸収するランタイムライブラリに環境間の変換情報を記憶するステップ（Ｓ１１）と、
前記実行環境において、前記ホストＣＰＵ上で実行されるアプリケーションから前記ランタイムライブラリを介して前記アクセラレータ上にて実行プログラムの処理を実行させるステップ（Ｓ１２）と、
前記アプリケーションが前記ランタイムライブラリを経由して、実行中のアクセラレータの状態（ステータス）を取得するステップ（Ｓ１３）と、
前記アプリケーションが前記ステータスの少なくとも一部をログファイルに書き込むステップ（Ｓ１４）と、
を備えるプロファイリング方法。
【請求項２】
前記アプリケーションが取得する前記アクセラレータの情報が前記アプリケーションにより解釈できない情報になる場合に、前記ランタイムライブラリを介して、前記アプリケーションが解釈可能な情報に変換するステップと、
前記アプリケーションが前記ランタイムライブラリにより変換された情報を前記ログファイルに書き込むステップと、
を備える請求項１に記載のプロファイリング方法。
【請求項３】
前記アプリケーションが取得するアクセラレータの情報が物理アドレスであり、当該物理アドレスが前記アプリケーションにより解釈できない情報になる場合、前記ランタイムライブラリを介して、前記アプリケーションが解釈可能な論理アドレスに変換するステップと、
前記アプリケーションが前記アドレス値を前記ログファイルに書き込むステップと、
を備える請求項２に記載のプロファイリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコア環境のアクセラレータをプロファイリング（性能解析）する方法に関する。
【背景技術】
【０００２】
コンピュータ上で実行されるプログラムの性能分析や最適化を行う手段として、プロファイリングが広く用いられている（例えば、特許文献１）。プロファイリングは、プログラムコードの走行頻度、時間分布、またプログラム内部の呼出し関係頻度等の分析に有効である。例えば、プロファイリングによって、プログラム実行中のリソースの利用状況（以下、「プロファイル情報」という）を取得する。プロファイル情報に基づいて、プログラム中で実行期間の長かったコード範囲や所定のイベント時のプログラムの実行状況等を把握することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１１８５９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、上記したような従来のプロファイリング方法は、情報処理装置上のオペレーティングシステム（ＯＳ）で作動するシステムが対象であった。これに対し、本開示は、一部のタスクについてＯＳ管理外のアクセラレータで実行されるマルチコア環境において、プロファイリングする方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本開示は上記課題を解決するために以下の技術的手段を採用する。特許請求の範囲及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施の形態に記載の具体的手段との対応関係を示す一例であって、本発明の技術的範囲を限定するものではない。
【０００６】
本開示に係るプロファイリング方法は、開発環境のコンピュータから、当該コンピュータでコンパイルしたアクセラレータ用の実行プログラムをエクスポートするステップ（Ｓ１０）と、前記実行プログラムを、ホストＣＰＵとアクセラレータとを有する実行環境（実行環境は、前記コンパイル環境とは異なる環境）にインポートすると共に、前記開発環境と前記実行環境との違いを吸収するランタイムライブラリに環境間の変換情報を記憶するステップ（Ｓ１１）と、前記実行環境において、前記ホストＣＰＵ上で実行されるアプリケーションから前記ランタイムライブラリを介して前記アクセラレータ上にて実行プログラムの処理を実行させるステップ（Ｓ１２）と、前記アプリケーションが前記ランタイムライブラリを経由して、実行中のアクセラレータの状態（ステータス）を取得するステップ（Ｓ１３）と、前記アプリケーションが前記ステータスの少なくとも一部をログファイルに書き込むステップ（Ｓ１４）とを備える。
【発明の効果】
【０００７】
本開示によれば、ランタイムライブラリに環境間の変換情報を記憶することにより、ランタイムライブラリを介して実行される実行環境のアクセラレータのプロファイリングを行うことができる。
【図面の簡単な説明】
【０００８】
【図１】本実施の形態のプロファイル方法を示す図である。
【図２】実行環境のＳｏＣの構成の一例を示す図である。
【図３】実行環境のＳｏＣにおいて、プロファイリング情報を取得するシーケンスを示す図である。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照しながら本実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
【００１０】
図１は、本実施の形態のプロファイリング方法の手順を示す図である。本実施の形態のプロファイリング方法は、開発環境と実行環境が異なるときに、実行環境での実行状況をプロファイリングする方法である。本実施の形態のプロファイリング方法で想定している実行環境は、マルチコア環境のアクセラレータ（図１では「ＡＣＣ」と記載）を備えたＳｏＣ（System on Chip）１である。
【００１１】
図２は、実行環境のＳｏＣ１の構成の一例を示す図である。ＳｏＣ１は、ホストＣＰＵ２１とアクセラレータ１０とイベントハンドラ２０とＲＯＭ２２とＲＡＭ２３と外部インターフェイス２４とを備えている。ホストＣＰＵ２１とアクセラレータ１０とＲＯＭ２２とＲＡＭ２３と外部インターフェイス２４は、システムバス２５に接続されており、システムバス２５を通じて互いに情報の授受が可能である。
【００１２】
ホストＣＰＵ２１は、データ処理を行うと共に、ＳｏＣ１のＯＳをサポートする。ＲＯＭ２２は、読込専用のメモリである。ＲＡＭ２３は、読み書き用のメモリである。外部インターフェイス２４は、例えば、カメラや超音波センサ等の外部機器と通信を行うためのインターフェイスである。
【００１３】
アクセラレータ１０は、ＳｏＣ１のホストＣＰＵ２１の演算負荷に対処する個別マスタとしての役割を有する。アクセラレータ１０は、独自に、命令フェッチを行うことが可能である。また、アクセラレータ１０には、割込み処理を生成するイベントハンドラ２０が接続されており、イベントハンドラ２０が生成した割込みをサポートしている。
【００１４】
図１に戻って説明を続ける。開発環境のコンピュータ（ＰＣ）は、実行環境と同様に、ＣＰＵとアクセラレータを備えている。開発環境のＰＣのアクセラレータ（図１では「ＡＣＣ」と記載）は、実行環境のＳｏＣ１と同じアクセラレータである。開発環境では、実行環境で用いられるアクセラレータのための実行プログラムの開発を行う。実行環境のＳｏＣ１に開発環境で開発されたアクセラレータの実行プログラムがインポートされ、アクセラレータ上で処理が実行される。開発環境のコンピュータと実行環境のＳｏＣ１では、ＣＰＵとＣＰＵによって実行されるアプリケーションが異なる。
【００１５】
開発環境ではコンピュータ用のコンパイラとアクセラレータ用のコンパイラが統合された形で実装されている。これに対し、実行環境のＳｏＣ１では、アプリケーションを実行するメイン処理部分と、アクセラレータ１０の制御を行うランタイムライブラリで構成される。なお、ランタイムライブラリは、コンピュータプログラムの実行時にアプリケーションと常に同時に存在して利用される前提のライブラリである。本実施の形態では、ランタイムライブラリは、アプリケーションと実行プログラムとをつなぐソフトウェアモジュールである。
【００１６】
実行環境においては、ランタイムライブラリが開発環境と実行環境の違いを埋める。実行環境のＣＰＵ及びアプリケーションは、開発環境のＣＰＵ及びアプリケーションとは異なるので、アプリケーションにて解釈可能なプロファイリング情報を取得できないという問題があった。
【００１７】
本実施の形態のプロファイリング方法では、こうした問題を解決するため、ランタイムライブラリに、開発環境と実行環境という環境間の違いを変換するための情報を記憶しておき、アプリケーションはランタイムライブラリを介して実行中のアクセラレータ１０の状態（ステータス）を取得する。具体的には、アプリケーションが取得するアクセラレータ１０の情報がアプリケーションにより解釈できない情報になる場合に、ランタイムライブラリを介して、アプリケーションが解釈可能な情報に変換する。また、アプリケーションが取得するアクセラレータ１０の情報が物理アドレスであり、物理アドレスがアプリケーションにより解釈できない情報になる場合には、ランタイムライブラリを介して、アプリケーションが解釈可能な論理アドレスに変換する。
【００１８】
本実施の形態のプロファイリング方法の動作について説明する。図１に示すように、開発環境のコンピュータが、コンパイルした実行プログラム（バイナリ）をエクスポートし（Ｓ１０）、実行環境のＳｏＣ１は、エクスポートされた実行プログラムをインポートする（Ｓ１１）。実行プログラムを実行環境のＳｏＣ１にインポートする際に、ランタイムライブラリに環境間の変換情報を記憶する。一例としては、実行プログラムのバイナリをマッピングする実行環境のメモリアドレス、サイズ、命令や書き換え可能データといったメモリ値の属性の情報を記憶しておく。
【００１９】
アクセラレータ１０は、アプリケーションから指示に従って、実行プログラムを実行することにより処理を行う（Ｓ１２）。この際、アクセラレータ１０の情報は、ランタイムライブラリに隠蔽され、ホストＣＰＵ２１からは見えない。例えば、実行環境の物理アドレスは、実行ファイルのインポート時に、アドレス変換テーブルが書き換えられ、実行環境用に変更される。本実施の形態のプロファイル方法では、実行時に隠蔽される情報をホストＣＰＵ２１が取得できるような機能をランタイムライブラリに持たせる。ランタイムライブラリが、アクセラレータ１０の情報から、アプリケーションが解釈できる論理的な情報に変換し、アクセラレータ１０のプロファイリングを行う（Ｓ１３）。ホストＣＰＵ２１は、ランタイムライブラリが変換した情報をログファイルに書き込む（Ｓ１４）。このログファイルを開発環境のコンピュータに読み込ませ（Ｓ１５）、開発環境のコンピュータのビューワでログファイルを見ることにより、ＳｏＣ１の実行状況をプロファイルすることができる。
【００２０】
図３は、実行環境のＳｏＣ１において、プロファイリング情報を取得するシーケンスを示す図である。まず、ホストＣＰＵ２１はプロファイリング情報を書き込むログファイルを生成する（Ｓ２０）。次に、ホストＣＰＵ２１はアプリケーションを実行し、その中で、アクセラレータ１０に対して実行開始を指示する（Ｓ２１）。これを受けてアクセラレータ１０は、処理を行う（Ｓ２２）。アクセラレータ１０は、処理が終了すると、アプリケーションに割込みをかけて処理終了を通知する。
【００２１】
アプリケーションのプロファイル機能は、アクセラレータ１０にステータスの読出しの命令を送信し（Ｓ２３）、アクセラレータ１０は、ステータスを読み出してアプリケーションに送信する(Ｓ２４)。
【００２２】
アプリケーションのプロファイル機能は、読み出したデータのうち、アプリケーションでは解釈できない値を変換するために、ランタイムライブラリに変換を依頼する。たとえば、ランタイムライブラリに物理アドレスを送信し（Ｓ２５）、ランタイムライブラリから、物理アドレスに対応する仮想アドレスを取得する（Ｓ２６）。そして、プロファイル機能は、取得した仮想アドレスに基づいてログデータを生成し（Ｓ２７）、生成したログデータをプロファイルログファイルに書き込む（Ｓ２８）。このように、アクセラレータ１０の実行の状況が論理情報に変換されてログファイルに書き込まれていく。続いて、ホストＣＰＵは、アクセラレータ１０に対して実行開始を指示し（Ｓ２９）、アクセラレータ１０が実行され、上記の処理を繰り返すことにより、プロファイルログファイルが生成されていく。
【産業上の利用可能性】
【００２３】
マルチコア環境のアクセラレータをプロファイリングする方法として有用である。
【符号の説明】
【００２４】
１・・・ＳｏＣ、１０・・・アクセラレータ、２０・・・イベントハンドラ、
２１・・・ホストＣＰＵ、２２・・・ＲＯＭ、２３・・・ＲＡＭ、
２４・・・外部インターフェイス、２５・・・システムバス
【図１】
2020166351.tif 000003
【図２】
2020166351.tif 000004
【図３】
2020166351.tif 000005