JP2018124975A - コンパイルプログラム、コンパイル方法及び並列処理装置 - Google Patents

コンパイルプログラム、コンパイル方法及び並列処理装置 Download PDF

Info

Publication number
JP2018124975A
JP2018124975A JP2017196846A JP2017196846A JP2018124975A JP 2018124975 A JP2018124975 A JP 2018124975A JP 2017196846 A JP2017196846 A JP 2017196846A JP 2017196846 A JP2017196846 A JP 2017196846A JP 2018124975 A JP2018124975 A JP 2018124975A
Authority
JP
Japan
Prior art keywords
loop
inner loop
performance measurement
program
processing
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
JP2017196846A
Other languages
English (en)
Other versions
JP6926921B2 (ja
Inventor
朋健 中村
Tomotake Nakamura
朋健 中村
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to US15/873,559 priority Critical patent/US10534691B2/en
Publication of JP2018124975A publication Critical patent/JP2018124975A/ja
Application granted granted Critical
Publication of JP6926921B2 publication Critical patent/JP6926921B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】内ループの性能計測コードが外ループの性能計測に与える影響を少なくすること。【解決手段】判定部43が、プログラムに含まれるループについて該ループに内ループが含まれるか否かを判定し、内ループが含まれると判定した場合に該ループに内ループ以外の処理が含まれるか否かを判定する。そして、判定部43により、該ループに内ループ及び内ループ以外の処理が含まれると判定された場合、又は、該ループに内ループが含まれないと判定された場合だけ、設定部44が、該ループのTRGTをONに設定する。そして、プロファイリング処理部32が、TRGTがONに設定されたループに対して性能計測コードを追加する。【選択図】図2

Description

本発明は、コンパイルプログラム、コンパイル方法及び並列処理装置に関する。
プログラムの開発では、プログラム中のfor文、while文、do文等のループ処理に関して処理時間を計測し、計測結果に基づいてプログラムのチューニングを行うことがある。特に、HPC(High Performance Computing)分野では、プログラムの高速化のために、このようなチューニングが行われることが多い。
なお、プログラムの呼び出し関係、制御の分岐、ループ構造等の解析を行い、入力データ数や配列の次元数等の値を変更するとループ回数が変わる可変ループ情報を表示するとともに、動的特性情報と可変データの仮定値をもとに予測実行情報を算出する技術がある。この技術によれば、動的解析時の実行時間を削減することができる。
また、原始プログラムのうちの実行回数の多い部分、あるいは実行回数の多い可能性の高い部分を精度よく選び出してコンパイルすることで、プログラムの実行速度の向上とプログラムを記憶するためのメモリの記憶容量の節減を行う技術がある。
特開平5−241915号公報 特開2004−326760号公報
プログラムのループ処理に関して性能計測を行う場合、内ループの性能計測コードが外ループの性能計測に影響を与えるという問題がある。図12は、外ループの性能計測に関する問題を説明するための図である。図12は、for文による外ループの中にfor文による内ループがある場合を示す。
図12に示すように、内ループの性能計測を行うコードには、内ループのfor文の直前の性能計測開始コードと内ループのfor文の直後の性能計測終了コードがある。これらのコードは、外ループのfor文に含まれる。したがって、外ループの性能計測値には、内ループの性能計測コードの処理時間が含まれ、内ループの性能計測を行わない場合と比較して外ループの性能計測値が大きくなる。
本発明は、1つの側面では、内ループの性能計測コードが外ループの性能計測に与える影響を少なくすることを目的とする。
1つの態様では、コンパイルプログラムは、プログラムに含まれるループについて該ループに内ループが含まれるか否かを判定し、内ループが含まれると判定した場合に該ループに内ループ以外の処理が含まれるか否かを判定する処理をコンピュータに実行させる。そして、コンパイルプログラムは、該ループに内ループ及び内ループ以外の処理が含まれると判定した場合、又は、該ループに内ループが含まれないと判定した場合に、該ループの性能計測を行う性能計測処理を追加する処理をコンピュータに実行させる。
1つの側面では、本発明は、内ループの性能計測コードが外ループの性能計測に与える影響を少なくすることができる。
図1は、実施例1に係る並列処理装置の構成を示す図である。 図2は、コンパイル装置の機能構成を示す図である。 図3は、TRGTを説明するための図である。 図4は、対象リスト記憶部の一例を示す図である。 図5は、対象リストの状態変化の一例を示す図である。 図6は、フラグ設定部による処理のフローを示すフローチャートである。 図7は、コンパイル装置の効果を説明するための図である。 図8は、実施例1に係るコンパイルプログラムを実行するコンピュータのハードウェア構成を示す図である。 図9は、実施例1と実施例2の性能計測コードの挿入箇所の違いを説明するための図である。 図10は、フラグ設定部による1回目の処理のフローを示すフローチャートである。 図11は、フラグ設定部による2回目の処理のフローを示すフローチャートである。 図12は、外ループの性能計測に関する問題を説明するための図である。
以下に、本願の開示するコンパイルプログラム、コンパイル方法及び並列処理装置の実施例を図面に基づいて詳細に説明する。なお、実施例は開示の技術を限定するものではない。
まず、実施例1に係る並列処理装置の構成について説明する。図1は、実施例1に係る並列処理装置の構成を示す図である。図1に示すように、実施例1に係る並列処理装置1は、複数の計算機2と、コンパイル装置3とを有する。複数の計算機2は1次元配置され、順番にネットワークで接続される。また、各計算機2は、コンパイル装置3とネットワークで接続される。
なお、ここでは説明の便宜上、複数の計算機2が1次元配置される場合を示したが、複数の計算機2は、2次元配置、3次元配置、6次元配置等、より高次元配置されてもよい。また、複数の計算機2は、メッシュ状又はトーラス状に配置される。
計算機2は、CPU(Central Processing Unit)21とメモリ22とを有する。CPU21は、メモリ22からプログラムを読み出して実行する中央処理装置である。CPU21は、複数のコア21aを有するが1つのコア21aだけを有してもよい。メモリ22は、プログラムやプログラムの実行途中結果などを記憶する揮発性記憶デバイスである。
コンパイル装置3は、計算機2で実行されるプログラムをコンパイルして計算機2に送信する。コンパイル装置3は、ユーザがループの性能計測を指定すると、ループの性能計測を行うコードをプログラムに挿入する。
図2は、コンパイル装置3の機能構成を示す図である。図2に示すように、コンパイル装置3は、フラグ設定部31と、プロファイリング処理部32と、コンパイル処理部33とを有する。
フラグ設定部31は、TRGTを設定する。ここで、TRGTとは、各ループについて性能計測を行うコードを追加するか否かを示すフラグである。TRGTがONである場合には、性能計測を行うコードが追加され、TRGTがOFFである場合には、性能計測を行うコードは追加されない。
図3は、TRGTを説明するための図である。図3(a)は、外ループ内に内ループ以外の処理がある例を示す。図3(a)において、a=b+cが外ループ内にある内ループ以外の処理である。図3(b)は、外ループ内に内ループ以外の処理がない例を示す。
図3(a)に示すように、外ループ内に内ループ以外の処理がある場合には、フラグ設定部31は、外ループ及び内ループのTRGTをONに設定する。一方、外ループ内に内ループ以外の処理がない場合には、図3(b)に示すように、フラグ設定部31は、内ループのTRGTをONに設定し、外ループのTRGTをOFFに設定する。
外ループ内に内ループ以外の処理がない場合には、内ループの処理時間を計測することにより、外ループの処理時間を算出することができる。このため、フラグ設定部31は、外ループのTRGTをOFFに設定する。
フラグ設定部31は、対象リスト記憶部41と、初期化部42と、判定部43と、設定部44と、対象リスト処理部45とを有する。
対象リスト記憶部41は、TRGTの設定対象のループのリストである対象リストを記憶する。図4は、対象リスト記憶部41の一例を示す図である。図4に示すように、対象リスト記憶部41は、filenameとstartとendとをループ毎に記憶する。
filenameは、ループを含むプログラムが格納されるファイルの名前である。startは、ループの開始行アドレスである。endは、ループの終了行アドレスである。例えば、ファイル「a.c」に格納されるプログラムには「0x03」で開始し「0x10」で終了するループが含まれる。ここで、「0x」は16進数を表す。
初期化部42は、TRGTの設定に必要な初期化処理を行う。具体的には、初期化部42は、各ループにTRGT=OFFを設定する。また、初期化部42は、外側にループがない全てのループを対象リストに入れる。
判定部43は、対象リストに含まれる各ループについて、内ループがあるか否かを判定し、内ループがある場合には、内ループ以外の処理があるか否かを判定する。
設定部44は、判定部43により、ループxに内ループがないと判定された場合、あるいは、ループxに内ループがあって内ループ以外の処理があると判定された場合に、ループxのTRGTをONに設定する。なお、ループxは、対象リストに含まれるループを表す。
対象リスト処理部45は、ループxに内ループがある場合に、内ループを対象リストに追加する。また、対象リスト処理部45は、ループxに対する処理が終了すると、対象リストからループxを削除する。
図5は、対象リストの状態変化の一例を示す図である。図5(a)は、性能計測の対象となるプログラムを示し、図5(b)は、初期の対象リストの状態を示し、図5(c)は、「0x03」を開始行とするループを調べ終わったときの対象リストの状態を示す。なお、性能計測の対象となるプログラムは、ファイル「a.c」に格納されている。
図5(a)に示すように、性能計測の対象となるプログラムには、外側にループのないループとして「0x03」、「0x0b」及び「0x0e」を開始行とする3つのループがある。したがって、初期の対象リストには、図5(b)に示すように、「0x03」を開始行、「0x0a」を終了行とするループ、「0x0b」を開始行、「0x0d」を終了行とするループ及び「0x0e」を開始行、「0x10」を終了行とするループが含まれる。
そして、「0x03」を開始行とするループを調べ終わったときの対象リストには、図5(c)に示すように、「0x04」を開始行、「0x06」を終了行とするループ及び「0x07」を開始行、「0x09」を終了行とするループが追加されている。また、「0x03」を開始行とするループは、対象リストから削除されている。
プロファイリング処理部32は、ループの性能計測を行うコードを追加する。プロファイリング処理部32は、TRGTがONに設定されているループについては性能計測を行うコードを追加し、TRGTがOFFに設定されているループについては性能計測を行うコードを追加しない。
コンパイル処理部33は、プログラムをコンパイルし、オブジェクトコードを生成する。すなわち、コンパイル処理部33は、語彙解析、構文解析、最適化、コード生成等の処理を行って、オブジェクトコードを生成する。コンパイル処理部33は、ループの性能計測を行うコードが追加されている場合には、追加されたコードを含めてコンパイルを行う。
次に、フラグ設定部31による処理のフローについて説明する。図6は、フラグ設定部31による処理のフローを示すフローチャートである。なお、図6では、全てのTRGTがOFFに初期設定されているとする。
図6に示すように、フラグ設定部31は、外側にループがない全てのループを対象リストに入れる(ステップS1)。そして、フラグ設定部31は、対象リストからループを1つ取り出す(ステップS2)。ここでは、取り出されたループをループxとする。また、対象リストにループがない場合には、フラグ設定部31は、処理を終了する。
そして、フラグ設定部31は、ループxに内ループがあるか否かを判定し(ステップS3)、ループxに内ループがない場合には、ループxのTRGTをONに設定し(ステップS4)、ステップS6へ移動する。
一方、ループxに内ループがある場合には、フラグ設定部31は、ループxに内ループ以外の処理があるか否かを判定し(ステップS5)、ループxに内ループ以外の処理がある場合には、ステップS4へ移動する。一方、ループxに内ループ以外の処理がない場合には、フラグ設定部31は、ステップS6へ移動する。
そして、フラグ設定部31は、ループxに内ループがあれば、内ループを対象リストに入れ(ステップS6)、ループxを対象リストから削除する(ステップS7)。そして、フラグ設定部31は、ステップS2へ戻る。
このように、フラグ設定部31は、ループxに内ループがない場合、及び、ループxに内ループがあって内ループ以外の処理がある場合にだけ、TRGTをONに設定することによって、不要な性能計測コードの追加を防ぐことができる。
次に、コンパイル装置3の効果について説明する。図7は、コンパイル装置3の効果を説明するための図である。図7(a)は、従来の性能計測コードの追加を示し、図7(b)は、実施例1に係るコンパイル装置3による性能計測コードの追加を示す。また、矢印は、性能計測コードを追加する箇所を示す。
図7(a)に示すように、従来は、loop#1〜loop#3の3つのループに対して性能計測コードが追加される。一方、コンパイル装置3は、loop#1及びloop#3に対しては性能計測コードを追加するが、loop#2には内ループがあって内ループ以外の処理がないので、loop#2に対しては性能計測コードを追加しない。
上述してきたように、実施例1では、判定部43が、プログラムに含まれるループについて該ループに内ループが含まれるか否かを判定し、内ループが含まれると判定した場合に該ループに内ループ以外の処理が含まれるか否かを判定する。そして、判定部43により、該ループに内ループ及び内ループ以外の処理が含まれると判定された場合、又は、該ループに内ループが含まれないと判定された場合にだけ、設定部44が、該ループのTRGTをONに設定する。そして、プロファイリング処理部32が、TRGTがONに設定されたループに対して性能計測コードを追加する。したがって、コンパイル装置3は、内ループの性能計測コードが外ループの性能計測に与える影響を少なくすることができる。
また、実施例1では、対象リスト処理部45が、判定部43による判定対象のループxに含まれる内ループを対象リストに追加するので、判定部43は、入れ子構造の全ループについて、性能計測コードを追加するか否かを判定することができる。
なお、実施例1では、コンパイル装置3について説明したが、コンパイル装置3が有する構成をソフトウェアによって実現することで、同様の機能を有するコンパイルプログラムを得ることができる。そこで、コンパイルプログラムを実行するコンピュータについて説明する。
図8は、実施例1に係るコンパイルプログラムを実行するコンピュータのハードウェア構成を示す図である。図8に示すように、コンピュータ50は、メインメモリ51と、CPU52と、LAN(Local Area Network)インタフェース53と、HDD(Hard Disk Drive)54とを有する。また、コンピュータ50は、スーパーIO(Input Output)55と、DVI(Digital Visual Interface)56と、ODD(Optical Disk Drive)57とを有する。
メインメモリ51は、プログラムやプログラムの実行途中結果などを記憶するメモリである。CPU52は、メインメモリ51からプログラムを読み出して実行する中央処理装置である。CPU52は、メモリコントローラを有するチップセットを含む。
LANインタフェース53は、コンピュータ50をLAN経由で他のコンピュータに接続するためのインタフェースである。HDD54は、プログラムやデータを格納するディスク装置であり、スーパーIO55は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。DVI56は、液晶表示装置を接続するインタフェースであり、ODD57は、DVDの読み書きを行う装置である。
LANインタフェース53は、PCIエクスプレス(PCIe)によりCPU52に接続され、HDD54及びODD57は、SATA(Serial Advanced Technology Attachment)によりCPU52に接続される。スーパーIO55は、LPC(Low Pin Count)によりCPU52に接続される。
そして、コンピュータ50において実行されるコンパイルプログラムは、DVDに記憶され、ODD57によってDVDから読み出されてコンピュータ50にインストールされる。あるいは、コンパイルプログラムは、LANインタフェース53を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ50にインストールされる。そして、インストールされたコンパイルプログラムは、HDD54に記憶され、メインメモリ51に読み出されてCPU52によって実行される。
また、実施例1では、コンパイルの一部としてフラグ設定部31及びプロファイリング処理部32が動作する場合について説明したが、本発明はこれに限定されるものではなく、フラグ設定部31とプロファイリング処理部32、あるいは、フラグ設定部31をコンパイルの前処理として動作させてもよい。
また、実施例1では、並列計算機のプログラムの性能計測を行う場合について説明したが、本発明はこれに限定されるものではなく、例えば1つの計算機等の他の計算機のプログラムの性能計測を行う場合にも同様に適用することができる。
ところで、上記実施例1では、外ループに1つの内ループのみ(タイトループ)の場合、性能計測コードが内ループに対して挿入されるため、性能計測コードが外ループのループ回転数実行され、性能計測のオーバーヘッドが大きい。また、タイトループでは、内ループの処理時間は、外ループの処理時間と外ループの回転数から見積もることが可能である。そこで、実施例2では、タイトループの場合に内ループの代わりに外ループに対して性能計測コードを挿入するコンパイル装置3について説明する。
図9は、実施例1と実施例2の性能計測コードの挿入箇所の違いを説明するための図である。図9では、loop#2は、loop#3を内ループとするタイトループである。実施例1では、コンパイル装置3は、外ループに内ループがあり内ループ以外の処理がないときは、内ループのTRGTをONとし、外ループのTRGTをOFFとする。したがって、図9(a)に示すように、loop#3に対して性能計測コードが挿入され、loop#2に対しては性能計測コードは挿入されない。
一方、実施例2では、コンパイル装置3は、外ループに内ループがあり内ループ以外の処理がなく、かつ、内ループが複数あるときは、内ループのTRGTをONとし、外ループのTRGTをOFFとする。また、コンパイル装置3は、外ループに内ループがあり内ループ以外の処理がなく、かつ、内ループが1つであるときは、内ループのTRGTをOFFとし、外ループのTRGTをONとする。したがって、図9(b)に示すように、loop#2に対して性能計測コードが挿入され、loop#3に対しては性能計測コードは挿入されない。
このように、実施例2では、コンパイル装置3は、外ループに内ループがあり内ループ以外の処理がなく、かつ、内ループが1つであるときは、内ループのTRGTをOFFとし、外ループのTRGTをONとする。したがって、コンパイル装置3は、性能計測コードが外ループのループ回転数実行されることを防ぎ、性能計測のオーバーヘッドを減らすことができる。
実施例2では、実施例1と比較してフラグ設定部31による処理だけが異なる。そこで、フラグ設定部31による処理のフローについて説明する。図10は、フラグ設定部31による1回目の処理のフローを示すフローチャートであり、図11は、フラグ設定部31による2回目の処理のフローを示すフローチャートである。フラグ設定部31は、図10に示す処理を行った後、図11に示す処理を行う。
図10に示すように、フラグ設定部31は、外側にループがない全てのループを対象リストに入れる(ステップS11)。そして、フラグ設定部31は、対象リストからループを1つ取り出す(ステップS12)。ここでは、取り出されたループをループxとする。また、対象リストにループがない場合には、フラグ設定部31は、1回目の処理を終了する。
そして、フラグ設定部31は、ループxに内ループがあるか否かを判定し(ステップS13)、ループxに内ループがない場合には、ループxのTRGTをONに設定し(ステップS14)、ステップS17へ移動する。
一方、ループxに内ループがある場合には、フラグ設定部31は、ループxに内ループ以外の処理があるか否かを判定し(ステップS15)、ループxに内ループ以外の処理がある場合には、ステップS14へ移動する。一方、ループxに内ループ以外の処理がない場合には、フラグ設定部31は、ループxに複数の内ループがあるか否かを判定する(ステップS16)。そして、ループxに複数の内ループがない場合には、フラグ設定部31は、ステップS14へ移動し、ループxに複数の内ループがある場合には、ステップS17へ移動する。
そして、フラグ設定部31は、ループxに内ループがあれば、内ループを対象リストに入れ(ステップS17)、ループxを対象リストから削除する(ステップS18)。そして、フラグ設定部31は、ステップS12へ戻る。
そして、フラグ設定部31は、1回目の処理を終了すると、図11に示すように、TRGTがONの全てのループを対象リストに入れる(ステップS21)。そして、フラグ設定部31は、対象リストにループがあるか否かを判定し(ステップS22)、対象リストにループがない場合には、処理を終了する。
一方、対象リストにループがある場合には、フラグ設定部31は、対象リストからループを1つ取り出す(ステップS23)。ここでは、取り出されたループをループxとする。そして、フラグ設定部31は、ループxの外ループにループx以外の処理があるか否かを判定し(ステップS24)、ループxの外ループにループx以外の処理がある場合には、ループxを対象リストから削除し(ステップS25)、ステップS22に戻る。
一方、ループxの外ループにループx以外の処理がない場合には、フラグ設定部31は、ループxのTRGTをOFFに設定し、ループxの外ループのTRGTをONに設定する(ステップS26)。そして、フラグ設定部31は、ループxを対象リストから削除し、外ループを対象リストに入れる(ステップS27)。そして、フラグ設定部31は、ステップS23に戻る。
このように、フラグ設定部31は、ループxの外ループにループx以外の処理がない場合に、ループxのTRGTをOFFに設定し、ループxの外ループのTRGTをONに設定する。したがって、コンパイル装置3は、タイトループにおいて、内ループの代わりに外ループに対して性能計測コードを挿入することができる。
上述してきたように、実施例2では、コンパイル装置3は、タイトループにおいて、内ループの代わりに外ループに対して性能計測コードを挿入するので、性能計測コードが外ループのループ回転数実行されることを防ぐことができる。したがって、コンパイル装置3は、性能計測のオーバーヘッドを減らすことができる。
1 並列処理装置
2 計算機
3 コンパイル装置
21 CPU
21a コア
22 メモリ
31 フラグ設定部
32 プロファイリング処理部
33 コンパイル処理部
41 対象リスト記憶部
42 初期化部
43 判定部
44 設定部
45 対象リスト処理部
50 コンピュータ
51 メインメモリ
52 CPU
53 LANインタフェース
54 HDD
55 スーパーIO
56 DVI
57 ODD

Claims (6)

  1. コンピュータに、
    プログラムに含まれるループについて該ループに内ループが含まれるか否かを判定し、
    内ループが含まれると判定した場合に前記ループに内ループ以外の処理が含まれるか否かを判定し、
    前記ループに内ループ及び内ループ以外の処理が含まれると判定した場合、又は、前記ループに内ループが含まれないと判定した場合に、前記ループの性能計測を行う性能計測処理を追加する
    処理を実行させることを特徴とするコンパイルプログラム。
  2. 前記性能計測処理を追加する処理は、性能計測処理を追加することを示すフラグをループに設定し、前記フラグに基づいて性能計測処理を追加することを特徴とする請求項1に記載のコンパイルプログラム。
  3. 外側にループがない全てのループをリストに入れるとともに前記内ループを前記リストに入れる処理を前記コンピュータにさらに実行させ、
    前記内ループが含まれるか否かを判定する処理を、前記リストに入れられた各ループについて行うことを特徴とする請求項1又は2に記載のコンパイルプログラム。
  4. 前記ループに内ループが含まれ、内ループ以外の処理が含まれないと判定した場合に、該ループに複数の内ループが含まれるか否かを判定し、
    複数の内ループは含まれないと判定した場合に、前記ループの性能計測を行う性能計測処理を追加することを特徴とする請求項1、2又は3に記載のコンパイルプログラム。
  5. コンピュータが、
    プログラムに含まれるループについて該ループに内ループが含まれるか否かを判定し、
    内ループが含まれると判定した場合に前記ループに内ループ以外の処理が含まれるか否かを判定し、
    前記ループに内ループ及び内ループ以外の処理が含まれると判定した場合、又は、前記ループに内ループが含まれないと判定した場合に、前記ループの性能計測を行う性能計測処理を追加する
    処理を実行することを特徴とするコンパイル方法。
  6. 複数の計算機と、該複数の計算機で実行されるプログラムをコンパイルするコンパイル装置を有する並列処理装置において、
    前記コンパイル装置は、
    前記プログラムに含まれるループについて該ループに内ループが含まれるか否かを判定し、内ループが含まれると判定した場合に前記ループに内ループ以外の処理が含まれるか否かを判定する判定部と、
    前記判定部が、前記ループに内ループ及び内ループ以外の処理が含まれると判定した場合、又は、前記ループに内ループが含まれないと判定した場合に、前記ループの性能計測を行う性能計測処理を追加する追加部と
    を有することを特徴とする並列処理装置。
JP2017196846A 2017-01-27 2017-10-10 コンパイルプログラム、コンパイル方法及び並列処理装置 Active JP6926921B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/873,559 US10534691B2 (en) 2017-01-27 2018-01-17 Apparatus and method to improve accuracy of performance measurement for loop processing in a program code

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017013450 2017-01-27
JP2017013450 2017-01-27

Publications (2)

Publication Number Publication Date
JP2018124975A true JP2018124975A (ja) 2018-08-09
JP6926921B2 JP6926921B2 (ja) 2021-08-25

Family

ID=63109678

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017196846A Active JP6926921B2 (ja) 2017-01-27 2017-10-10 コンパイルプログラム、コンパイル方法及び並列処理装置

Country Status (1)

Country Link
JP (1) JP6926921B2 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05151031A (ja) * 1991-11-29 1993-06-18 Nec Corp オーバーヘツド情報算出方式
JPH0962544A (ja) * 1995-08-24 1997-03-07 Fujitsu Ltd プロファイル計装方法およびプロファイルデータ収集方法
JPH1124969A (ja) * 1997-06-19 1999-01-29 Hewlett Packard Co <Hp> ループ作成方法
JP2006127302A (ja) * 2004-10-29 2006-05-18 Internatl Business Mach Corp <Ibm> 情報処理装置、コンパイラ、及びコンパイラプログラム
JP2010186301A (ja) * 2009-02-12 2010-08-26 Hitachi Ltd プログラム変換方法、及び装置
US20160139901A1 (en) * 2014-11-18 2016-05-19 Qualcomm Incorporated Systems, methods, and computer programs for performing runtime auto parallelization of application code

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05151031A (ja) * 1991-11-29 1993-06-18 Nec Corp オーバーヘツド情報算出方式
JPH0962544A (ja) * 1995-08-24 1997-03-07 Fujitsu Ltd プロファイル計装方法およびプロファイルデータ収集方法
JPH1124969A (ja) * 1997-06-19 1999-01-29 Hewlett Packard Co <Hp> ループ作成方法
JP2006127302A (ja) * 2004-10-29 2006-05-18 Internatl Business Mach Corp <Ibm> 情報処理装置、コンパイラ、及びコンパイラプログラム
JP2010186301A (ja) * 2009-02-12 2010-08-26 Hitachi Ltd プログラム変換方法、及び装置
US20160139901A1 (en) * 2014-11-18 2016-05-19 Qualcomm Incorporated Systems, methods, and computer programs for performing runtime auto parallelization of application code

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
安江俊明ほか: "動的コンパイラにおける実行時経路情報の構造的収集手法の提案", 情報処理学会論文誌, JPN6021025847, November 2003 (2003-11-01), JP, ISSN: 0004545725 *

Also Published As

Publication number Publication date
JP6926921B2 (ja) 2021-08-25

Similar Documents

Publication Publication Date Title
JP6116721B2 (ja) グラフに基づく計算の動的ロード
JP5681473B2 (ja) プログラムの最適化装置、最適化方法および最適化プログラム
US10824420B2 (en) Caching build graphs
JP5988444B2 (ja) 最適化したバイナリー・モジュールをテストする方法、並びに、当該最適化したバイナリー・モジュールをテストするためのコンピュータ及びそのコンピュータ・プログラム
US9009447B2 (en) Acceleration of string comparisons using vector instructions
US7779393B1 (en) System and method for efficient verification of memory consistency model compliance
US9619298B2 (en) Scheduling computing tasks for multi-processor systems based on resource requirements
US9715440B2 (en) Test scope determination based on code change(s)
US8359291B2 (en) Architecture-aware field affinity estimation
JP6164054B2 (ja) 情報処理装置、コンパイル方法およびコンパイラプログラム
JP6342129B2 (ja) 混合モードプログラムのソースコードエラー位置検出装置及び方法
JP2014225263A (ja) プロセッシング装置及びプロセッシング方法
US9766926B2 (en) Method and system for optimizing parallel program execution based on speculation that an object written to is not shared
US20150212804A1 (en) Loop distribution detection program and loop distribution detection method
KR20160098794A (ko) 디바이스 프로그램 구조 모델링 기반 골격코드 생성 장치 및 방법
WO2018032897A1 (zh) 报文转发性能评估方法、装置和计算机存储介质
KR101990603B1 (ko) 대규모 소스 코드 저장소들에서의 자동적인 임포트들 및 의존성들
JP6471615B2 (ja) 性能情報生成プログラム、性能情報生成方法及び情報処理装置
JP6926921B2 (ja) コンパイルプログラム、コンパイル方法及び並列処理装置
JP5687603B2 (ja) プログラム変換装置、プログラム変換方法、および変換プログラム
US10534691B2 (en) Apparatus and method to improve accuracy of performance measurement for loop processing in a program code
CN115599534A (zh) 数据竞争检测方法、系统、集群及介质
US8359456B2 (en) Generating random addresses for verification of distributed computerized devices
US20150082443A1 (en) System to automate compliance with licenses of software third-party content
JP2007323299A (ja) レビュー実施順序決定装置、レビュー実施順序決定プログラム、レビュー実施順序決定プログラムが格納された記録媒体およびレビュー実施順序決定方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200709

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210628

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210719

R150 Certificate of patent or registration of utility model

Ref document number: 6926921

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150