JP7552405B2 - 最適化対象処理ブロック決定プログラムおよび最適化対象処理ブロック決定方法 - Google Patents

最適化対象処理ブロック決定プログラムおよび最適化対象処理ブロック決定方法 Download PDF

Info

Publication number
JP7552405B2
JP7552405B2 JP2021018328A JP2021018328A JP7552405B2 JP 7552405 B2 JP7552405 B2 JP 7552405B2 JP 2021018328 A JP2021018328 A JP 2021018328A JP 2021018328 A JP2021018328 A JP 2021018328A JP 7552405 B2 JP7552405 B2 JP 7552405B2
Authority
JP
Japan
Prior art keywords
optimization
processing block
software
information
cost
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
JP2021018328A
Other languages
English (en)
Other versions
JP2022121144A (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.)
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 JP2021018328A priority Critical patent/JP7552405B2/ja
Priority to US17/523,053 priority patent/US11842182B2/en
Publication of JP2022121144A publication Critical patent/JP2022121144A/ja
Application granted granted Critical
Publication of JP7552405B2 publication Critical patent/JP7552405B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3086Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves the use of self describing data formats, i.e. metadata, markup languages, human readable formats
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Library & Information Science (AREA)
  • Quality & Reliability (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、最適化対象処理ブロック決定プログラムおよび最適化対象処理ブロック決定方法に関する。
近年、HPC(High Performance Computing)分野においてもOSS(Open Source Software)の活用が注目されており、最新HPC環境において、OSSの性能最適化作業の短TAT(Turn Around Time)化が望まれている。
性能最適化の短TAT化には、OSSにおける最適化対象の処理ブロックの検出を高速化する必要がある。すなわち、与えられたOSSの入力データや並列条件(実行条件)の下で、最適化効果が高い処理ブロックを検出することが求められている。
例えば、プロファイラが出力する特定実行条件下におけるプロファイリングレポートに基づいて、高コストや低性能指標となる関数やコードを特定することが考えられる。高コストや低性能指標となる関数やコードをホットスポットといってもよい。
特開平9-16436号公報 特開平6-175843号公報 特開2003-44289号公報
しかしながら、このような従来のソフトウェア最適化手法においては、ホットスポットの最適化効果,要因および解決方法の検討には、最適化及びハードウェアアーキテクチャの専門的知識を有する専門家によるソースコードの分析が必要不可欠である。
そして、最適化の実現にはソースコードの変更が含まれるので、解決方法の検討にはホットスポット周辺のソースコードの処理内容を把握する必要があり、そのために膨大な時間がかかる。
また、OSSの実行条件毎に、ホットスポットの確認と、最適化効果、要因および解決方法の検討とを行なう必要がある。そのため、幅広い入力データや並列条件といった一般的な実行条件の下でのハードウェア仕様に基づく最適化効果の高い処理ブロックの検出に膨大な時間がかかる。
1つの側面では、本発明は、最適化効果の高い最適化対象処理ブロックを高速に検出できるようにすることを目的とする。
このため、この最適化対象処理ブロック決定プログラムは、情報処理装置のプロセッサに、ソフトウェアのコンパイル時に生成される最適化レポートから最適化手法と前記最適化手法が適用できない理由を示す最適化非適用条件とを抽出し、前記最適化手法と前記最適化非適用条件とに基づいて、前記ソフトウェアに含まれる複数の処理ブロック毎の最適化適用容易性指標値を決定し、前記最適化適用容易性指標値に基づいて、前記ソフトウェアに含まれる複数の処理ブロックの中から、最適化の対象とする最適化対象処理ブロックを決定する処理を実行させる。
一実施形態によれば、最適化効果の高い最適化対象処理ブロックを高速に検出できる。
実施形態の一例としての計算機システムの構成を模式的に示す図である。 実施形態の一例としての計算機システムの管理装置のハードウェア構成を例示する図である。 実施形態の一例としての計算機システムの最適化対象処理ブロック出力部の機能構成を示す図である。 実施形態の一例としての計算機システムにおける高コスト処理ブロックランキングを例示する図である。 実施形態の一例としての計算機システムにおける最適化種別毎難易度情報を例示する図である。 実施形態の一例としての計算機システムにおける最適化非適用条件を例示する図である。 実施形態の一例としての計算機システムにおける処理ブロック毎最適化指標情報を例示する図である。 実施形態の一例としての計算機システムにおけるコンパイラ最適化レポートの一部を抜粋して例示する図である。 実施形態の一例としての計算機システムにおけるコンパイラ最適化レポートの一部を抜粋して例示する図である。 実施形態の一例としての計算機システムにおけるコンパイラ最適化レポートの一部を抜粋して例示する図である。 実施形態の一例としての計算機システムにおける最適化種別毎難易度情報を説明するための図である。 実施形態の一例としての計算機システムにおける処理ブロック毎最適化指標情報の例を示す図である。 実施形態の一例としての計算機システムにおける実行条件情報を例示する図である。 実施形態の一例としての計算機システムにおける処理ブロックコスト情報を例示する図である。 実施形態の一例としての計算機システムにおけるプロファイリングレポートの一部を抜粋して例示する図である。 実施形態の一例としての計算機システムにおけるプロファイリングレポートの一部を抜粋して例示する図である。 実施形態の一例としての計算機システムにおける処理ブロックのコスト集計情報を説明するための図である。 実施形態の一例としての計算機システムにおける最適化種別毎の適用効果重みを例示する図である。 実施形態の一例としての計算機システムにおける最適化対象処理ブロック提示情報を例示する図である。 実施形態の一例としての計算機システムにおける最適化対象処理ブロック提示情報の変形例を示す図である。 実施形態の一例としての計算機システムにおける最適化対象処理ブロック提示情報を例示する図である。 実施形態の一例としての計算機システムによる最適化対象処理ブロック出力手法を説明するためのフローチャートである。 実施形態の一例としての計算機システムの管理装置により検出した最適化による結果を、従来手法を用いた専門家によるソースコード分析の結果とともに示す図である。
以下、図面を参照して本最適化対象処理ブロック決定プログラムおよび最適化対象処理ブロック決定方法にかかる実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
(A)構成
図1は実施形態の一例としての計算機システム1の構成を模式的に示す図である。
計算機システム1は、図1に示すように、計算装置2と管理装置3とを備える。計算装置2と管理装置3とは、LAN(Local Area Network)等の通信路4を介して接続されている。
計算装置2は、ソフトウェアを実行するコンピュータ(情報処理装置)である。計算装置2は、HPCを実現してもよい。
計算装置2は、複数の演算コア(プロセッサコア)を有するマルチコアプロセッサを備えてもよく、また、複数のプロセッサを備えるマルチプロセッサシステムであってもよい。さらに、計算装置2は、複数のコンピュータを接続した並列計算機システムであってもよい。
計算装置2は、複数の処理ブロックを備えるソフトウェアを実行する。処理ブロックをモジュールといってもよい。ソフトウェアはOSSであってもよい。以下に示す例においては、計算装置2がOSSを実行する例について示す。
また、計算装置2は、複数のプロセスを並列して処理する並列処理を実行してもよい。本計算機システム1においては、計算装置2が複数のプロセッサを備え、これらの複数のプロセッサにより複数のプロセスを並列処理する機能を備えるものとする。
管理装置3は、計算装置2を管理するものであり、計算装置2によって実行されるソフトウェアに対する性能最適化処理を実現する。以下、性能最適化処理の対象のソフトウェアを最適化対象ソフトウェアという場合がある。本実施形態においては、最適化対象ソフトウェアがOSSである例について示す。最適化対象ソフトウェアが複数の処理ブロックを備える。
管理装置3は、処理ブロック単位で最適化を行なってもよい。最適化をチューニングといってもよい。管理装置3は、性能最適化処理において、これらの処理ブロックの中から、最適化処理の対象とする最適化対象処理ブロックを決定して提示する最適化対象処理ブロック出力機能を実現する。
図2は実施形態の一例としての計算機システム1の管理装置3のハードウェア構成を例示する図である。
管理装置3は、情報処理装置(コンピュータ)であって、例えば、プロセッサ11,メモリ12,記憶装置13,グラフィック処理装置14,入力インタフェース15,光学ドライブ装置16,機器接続インタフェース17およびネットワークインタフェース18を構成要素として有する。これらの構成要素11~18は、バス19を介して相互に通信可能に構成される。
プロセッサ(処理部)11は、管理装置3全体を制御する。プロセッサ11は、マルチプロセッサであってもよい。プロセッサ11は、例えばCPU,MPU(Micro Processing Unit),DSP(Digital Signal Processor),ASIC(Application Specific Integrated Circuit),PLD(Programmable Logic Device),FPGA(Field Programmable Gate Array)のいずれか一つであってもよい。また、プロセッサ11は、CPU,MPU,DSP,ASIC,PLD,FPGAのうちの2種類以上の要素の組み合わせであってもよい。
そして、プロセッサ11が制御プログラム(最適化対象処理ブロック出力プログラム:図示省略)を実行することにより、図3に例示する、最適化対象処理ブロック出力部100としての機能が実現される。
なお、管理装置3は、例えばコンピュータ読み取り可能な非一時的な記録媒体に記録されたプログラム{最適化対象処理ブロック出力プログラム,OS(Operating System)プログラム}を実行することにより、最適化対象処理ブロック出力部100としての機能を実現する。
管理装置3に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、管理装置3に実行させるプログラムを記憶装置13に格納しておくことができる。プロセッサ11は、記憶装置13内のプログラムの少なくとも一部をメモリ12にロードし、ロードしたプログラムを実行する。
また、管理装置3(プロセッサ11)に実行させるプログラムを、光ディスク16a,メモリ装置17a,メモリカード17c等の非一時的な可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ11からの制御により、記憶装置13にインストールされた後、実行可能になる。また、プロセッサ11が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
メモリ12は、ROM(Read Only Memory)およびRAM(Random Access Memory)を含む記憶メモリである。メモリ12のRAMは管理装置3の主記憶装置として使用される。RAMには、プロセッサ11に実行させるプログラムの少なくとも一部が一時的に格納される。また、メモリ12には、プロセッサ11による処理に必要な各種データが格納される。
記憶装置13は、ハードディスクドライブ(Hard Disk Drive:HDD)、SSD(Solid State Drive)、ストレージクラスメモリ(Storage Class Memory:SCM)等の記憶装置であって、種々のデータを格納するものである。記憶装置13は、管理装置3の補助記憶装置として使用される。記憶装置13には、OSプログラム,制御プログラムおよび各種データが格納される。制御プログラムには最適化対象処理ブロック出力プログラムが含まれる。
なお、補助記憶装置としては、SCMやフラッシュメモリ等の半導体記憶装置を使用することもできる。また、複数の記憶装置13を用いてRAID(Redundant Arrays of Inexpensive Disks)を構成してもよい。
また、記憶装置13には、最適化対象処理ブロック出力部100が各処理を実行する際に生成される各種データを格納してもよい。
グラフィック処理装置14には、モニタ14aが接続されている。グラフィック処理装置14は、プロセッサ11からの命令に従って、画像をモニタ14aの画面に表示させる。モニタ14aとしては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置等が挙げられる。
入力インタフェース15には、キーボード15aおよびマウス15bが接続されている。入力インタフェース15は、キーボード15aやマウス15bから送られてくる信号をプロセッサ11に送信する。なお、マウス15bは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル,タブレット,タッチパッド,トラックボール等が挙げられる。
光学ドライブ装置16は、レーザ光等を利用して、光ディスク16aに記録されたデータの読み取りを行なう。光ディスク16aは、光の反射によって読み取り可能にデータを記録された可搬型の非一時的な記録媒体である。光ディスク16aには、DVD(Digital Versatile Disc),DVD-RAM,CD-ROM(Compact Disc Read Only Memory),CD-R(Recordable)/RW(ReWritable)等が挙げられる。
機器接続インタフェース17は、管理装置3に周辺機器を接続するための通信インタフェースである。例えば、機器接続インタフェース17には、メモリ装置17aやメモリリーダライタ17bを接続することができる。メモリ装置17aは、機器接続インタフェース17との通信機能を搭載した非一時的な記録媒体、例えばUSB(Universal Serial Bus)メモリである。メモリリーダライタ17bは、メモリカード17cへのデータの書き込み、またはメモリカード17cからのデータの読み出しを行なう。メモリカード17cは、カード型の非一時的な記録媒体である。
ネットワークインタフェース18は、通信路4に接続される。ネットワークインタフェース18は、通信路4を介して計算装置2との間でデータの送受信を行なう。通信路4には他の情報処理装置や通信機器等が接続されてもよい。
図3は実施形態の一例としての計算機システム1の最適化対象処理ブロック出力部100の機能構成を示す図である。
最適化対象処理ブロック出力部100は、与えられた入力データや並列条件(実行条件)の下で、最適化による効果が高い処理ブロックを検出する。
最適化対象処理ブロック出力部100は、図3に示すように、最適化指標抽出部101,実行条件設定部102,コスト性能指標抽出部103,最適化効果指標算出部104および出力制御部105としての機能を備える。
最適化対象処理ブロック出力部100には、コンパイラ最適化レポートおよびプロファイリングレポートが図示しないコンパイラから入力される。コンパイラは、計算装置2と管理装置3とのいずれにおいて実行してよく、また、これらの計算装置2および管理装置3以外の他の情報処理装置において実行してもよい。
コンパイラ最適化レポートは、コンパイラが最適化対象ソフトウェアのコンパイル時に生成するものであり、ソフトウェアに適用された最適化に関する情報や、適用されなかった最適化に関する情報(例えば不適用の理由)を示す(例えば、後述する図8~図10参照)。なお、コンパイラ最適化レポートは既知であり、その詳細な説明は省略する。
プロファイリングレポートは、コンパイラに付属のプロファイラ(性能解析ツール)が生成するものであり、プログラム実行時にプロファイラが収集した各種情報を示す(例えば、後述する図15および図16参照)。プロファイリングレポートは、例えば、関数呼び出しの頻度やそれにかかった時間を含んでもよい。なお、プロファイリングレポートは既知であり、その詳細な説明は省略する。
最適化指標抽出部101は、最適化対象ソフトウェアを構成する複数の処理ブロックのうち、コストが高い処理ブロックを最適化対象の候補として選定してよい。例えば、最適化指標抽出部101は、最適化対象ソフトウェアを構成する複数の処理ブロックの中から、プロファイラによって設定されたコストが所定の閾値以上の処理ブロックを最適化対象の候補として決定してよい。
図4は実施形態の一例としての計算機システム1における高コスト処理ブロックランキングを例示する図である。
以下においては、OSSソフトウェアを最適化対象ソフトウェアとし、コンパイラおよびプロファイラに富士通株式会社のDevelopment Studioを用いた例を示す。
図4に例示する高コスト処理ブロックランキングは、最適化対象ソフトウェアに含まれる複数の処理ブロックをコストの順応じて並べた一覧として構成されており、コストの値が最も高いものが先頭となるように配置されている。
なお、この図4に例示する高コスト処理ブロックランキングの上位のモジュール(処理ブロック)は、数学ライブラリコ-ド内(FFT,MPI等)のモジュールであり、最適化対象ソフトウェア側でのチューニングが困難なため、本管理装置3による最適化の対象外とする。
そこで、この図4に示す例においては、qvan2_およびfunc_11_の2つの処理ブロック(モジュール)が最適化対象として選択される。qvan2_およびfunc_11_の末尾の“_(アンダースコア)”は、任意の文字を表す。
これらの処理ブロックは、それぞれさらに小さな処理ブロックを備えた階層構造を有してもよい。例えば、qvan2_は、qvan2.1,qvan2.2およびqvan2.3を処理ブロックとして含み、これらの処理ブロックqvan2.1,qvan2.2およびqvan2.3の上位の処理ブロックが、qvan2に相当する。
最適化指標抽出部101は、コンパイラ最適化レポートに基づき、最適化対象ソフトウェアに含まれる複数の各処理ブロックについて、最適化種別毎にハードウェア仕様に基づく最適化指標値を設定した最適化種別毎難易度情報201を作成する。
図5は実施形態の一例としての計算機システム1における最適化種別毎難易度情報201を例示する図である。
最適化種別毎難易度情報201は、最適化種別に対する最適化非適用条件毎の実施容易度を表す。
最適化種別は、処理ブロックに対して適用される最適化手法である。図5に示す例においては、Opt-1~Opt-9の9種類の最適化種別(最適化手法)が示されている。例えば、Opt-6はソフトウェアパイプラインであり、Opt-7はSIMD(Single Instruction, Multiple Data)化である。以下、任意の最適化種別(最適化手法)をOpt-nと表してよい(nは自然数)。
最適化種別としては、図5に例示された手法に限定されるものではなく、これら以外の手法を用いてもよく、適宜変更して実施することができる。
最適化非適用条件は、最適化種別が適用できない理由(条件)を示す。最適化非適用条件は、処理ブロックに対して最適化手法を適用しようとする場合に、当該最適化手法の適用を阻害する要因(最適化疎外要因)であるといってよい。
図6は実施形態の一例としての計算機システム1における最適化非適用条件を例示する図である。この図6に示す例においては、Nc-1~Nc-6の6種類の最適化非適用条件について、それぞれの内容を示している。
図6に示す例において、例えば、Nc-5は、ループ内にSIMD化不可の実行文を含むことを示す。以下、任意の非適用条件をNc-mと表してよい(mは自然数)。
図5に例示する最適化種別毎難易度情報201は、Opt-1~Opt-9の9種類の最適化種別(最適化手法)とNc_1~Nc_6の6種類の最適化非適用条件(最適化疎外要因)とを組み合わせたマトリクスとして表わされている。また、このマトリクスにおいて、各組合せに対して最適化の適用容易性を示す数値がそれぞれ設定されている。以下、この最適化の適用容易性を表す数値(指標値)を最適化指標値という場合がある。
図5に示す例において、最適化指標値は0以上1未満の任意の数値が設定され、値が小さいほど適用が困難であり、値が大きいほど適用が容易であることを示す。最適化指標値は最適化の適用困難性を表す非適用条件といってもよい。最適化種別毎難易度情報201においては、最適化対象ソフトウェアのソースコードに対して最適化手法を適用するに際しての実現容易性を示す値が非適用条件毎に設定されている。
例えば、図5に示す例において、Opt-7(SIMD化)に対して、Nc-3(分岐(IF文あり))に最適化指標値0.8が設定されている。これは、最適化対象ソフトウェアの処理ブロックに対して最適化処理としてSIMD化を行なう場合に、分岐の観点からは適用が比較的容易であることを示している。一方、Opt-7(SIMD化)に対して、Nc-6(データ依存性、代入参照順序の変更などによりシリアル実行と結果が異なる可能性あり)には最適化指標値0.4が設定されている。これは、最適化対象ソフトウェアの処理ブロックに対して最適化処理としてSIMD化を行なうことが、データ依存性が高いことを理由で比較的困難であることを示している。なお、最適化指標値0には、最適化手法が既に適用済みであることも含まれる。
このように、最適化種別毎難易度情報201は、最適化種別と非適用条件との各組合せに対して、実現難易度を示す最適化指標値を定義することで構成されている。最適化種別毎難易度情報201を最適化指標表といってもよい。
最適化種別毎難易度情報201は、プログラマ等が経験則に基づいて予め設定しておくことが望ましい。すなわち、プログラマ等は、最適化種別のそれぞれについて、最適化種別の適用を妨げる要因となり得る最適化非適用条件(最適化疎外要因)を特定し、その影響(適用容易性,適用困難性)の度合いを最適化指標値として設定する。
最適化指標値にはハードウェア仕様が反映される。具体的には、ハードウェア仕様が最適化種別及び最適化非適用条件に反映される。
例えば、最適化種別に関して、最適化環境のハードウェア仕様としてSIMD回路が搭載されている場合に、SIMD化が最適化種別に候補として挙がる。また、SIMD回路のハードウェア仕様はSIMD長(同時に実行可能な命令数)にも反映される。最適化非適用条件に関して、例えば、ハードウェア仕様としてのレジスタ数がレジスト不足に反映される。
最適化種別毎難易度情報201は、例えば、メモリ12や記憶装置13等の所定の記憶領域に記憶される。
また、最適化指標抽出部101は、処理ブロック毎最適化指標情報202を設定する。
図7は実施形態の一例としての計算機システム1における処理ブロック毎最適化指標情報202を例示する図である。
図7に例示する処理ブロック毎最適化指標情報202は、Blk_1~Blk_pのp種類(pは自然数)の処理ブロックとOpt-1~Opt-nのn種類の最適化種別(最適化手法)とを組み合わせたマトリクスとして表されている。また、このマトリクスにおける処理ブロックと最適化種別との各組合せに相当する位置には、最適化種別毎難易度情報201から抽出された最適化指標値が設定されている。
最適化指標抽出部101は、各処理ブロックのコンパイラ最適化レポートから最適化種別と非適用条件とを抽出する。そして、最適化指標抽出部101は、これらの最適化種別と非適用条件との組み合わせに基づいて最適化種別毎難易度情報201を参照して、最適化種別と非適用条件との組み合わせに対応する最適化指標値を抽出する。
最適化指標抽出部101は、処理ブロック毎最適化指標情報202において、対応する処理ブロックと最適化種別との組み合わせ箇所に最適化種別毎難易度情報201から抽出した最適化指標値を設定する。
図8~図10は実施形態の一例としての計算機システム1におけるコンパイラ最適化レポートの一部を抜粋して例示する図である。
これらの図8~図10に一部を例示するコンパイラ最適化レポートは、処理ブロックqvan2_(図4参照)に対してコンパイラが生成したものであり、最適化適用状態を示す情報(最適化適用条件)を含む(図8の符号P1および図9の符号P2参照)。また、コンパイラ最適化レポートは、最適化手法を適用できなかったことを示す情報(最適化非適用条件)も含む(図10の符号P3参照)。
例えば、コンパイラ最適化レポートに含まれる“[OPTIMIZATON]”等の所定の単語を検索することで、コンパイラ最適化レポートから最適化適用状態や最適化非適用条件を示す情報を抽出してもよい。
また、最適化指標抽出部101は、コンパイラ最適化レポートの最適化適用状態や最適化非適用条件を示す情報から、最適化種別および非適用条件に相当する情報を抽出してもよい。
図11は実施形態の一例としての計算機システム1における最適化種別毎難易度情報201を説明するための図であり、図12はその処理ブロック毎最適化指標情報202の例を示す図である。図12においては、処理ブロックqvan2.1,qvan2.2およびqvan2.3に対応する処理ブロック毎最適化指標情報202を示す。
例えば、qvan2.2においては最適化種別Opt-6,Opt-7とNc_3との組み合わせが含まれている。最適化指標抽出部101は、図11に示すように、最適化種別毎難易度情報201における最適化種別Opt-6,Opt-7に対応する非適用条件Nc-3の各最適化指標値0.8を抽出する。そして、最適化指標抽出部101は、抽出した最適化指標値0.8を、図12に示すように、処理ブロック毎最適化指標情報202においてqvan2.2の最適化種別Opt-6,Opt-7に対応させて設定する。
qvan2.3においては最適化種別Opt-6,Opt-7とNc_6との組み合わせが含まれている。最適化指標抽出部101は、図11に示すように、最適化種別毎難易度情報201における最適化種別Opt-6,Opt-7に対応する非適用条件Nc-6の各最適化指標値0.4を抽出する。そして、最適化指標抽出部101は、抽出した最適化指標値0.4を、図12に示すように、処理ブロック毎最適化指標情報202においてqvan2.3の最適化種別Opt-6,Opt-7に対応させて設定する。
qvan2.1においては、該当処理ブロックにおいて、適用可能な最適化種別は全て適用済となるため最適化指標値0を抽出する。そして、最適化指標抽出部101は、抽出した最適化指標値0を、図12に示すように、処理ブロック毎最適化指標情報202においてqvan2.1の最適化種別Opt-1~Opt-9に対応させて設定する。
最適化指標抽出部101は、作成した処理ブロック毎最適化指標情報202をメモリ12や記憶装置13の所定の記憶領域に記憶させる。
実行条件設定部102は、実行条件情報203を作成する。
実行条件情報203は、計算装置2が最適化対象ソフトウェアを実行する際の条件(実行条件)を示す情報である。
図13は実施形態の一例としての計算機システム1における実行条件情報203を例示する図である。
この図13に例示する実行条件情報203においては、実行条件は入力データ条件と並列条件との組み合わせとして構成されている。また、入力データ条件と並列条件との各組み合わせを識別する情報としてCnd_1~Cnd_q(qは自然数)が設定されている。これらのCnd_1~Cnd_qを条件Cnd_1~Cnd_qと表してもよい。
入力データ条件は、最適化対象ソフトウェアに入力されるデータについての条件である。例えば、最適化対象ソフトウェアがシミュレータである場合には、シミュレータに入力されるデータに関する規格や条件であってもよい。実行条件設定部102は、想定される入力データの変動範囲から任意点をランダムサンプリングすることで入力データ条件を設定してもよい。
並列データ条件は、計算装置2に備えられる複数のプロセッサを用いて並列計算を行なわせるための条件であり、例えば、並列計算に使用するプロセッサの数等の情報である。実行条件設定部102は、想定される並列条件の変動範囲から任意点をランダムサンプリングすることで並列データ条件を設定してもよい。
コスト性能指標抽出部103は、プロファイラから出力されるプロファイリングレポートに基づき処理ブロックコスト情報204を作成する。
プロファイラは、最適化対象ソフトウェアの処理ブロックに対して、実行条件設定部102が設定した実行条件毎にプロファイリングを行ない、プロファイリングレポートを作成する。
コスト性能指標抽出部103は、プロファイラによって作成された実行条件毎のプロファイリングレポートから各処理ブロックのコストまたは性能指標を抽出する。
コストは、例えば、CPU時間、経過時間、電力である。性能指標は、性能を表す値であって、例えば、IPC(Instructions Per Cycle),メモリバンド幅,FLOPS,SIMD化率,平均クロック数であり、ハードウェア環境に依存する指標であってもよい。
以下、コストまたは性能指標の少なくとも一方をコスト/性能指標と表す場合がある。
図14は実施形態の一例としての計算機システム1における処理ブロックコスト情報204を例示する図である。
図14に例示する処理ブロックコスト情報204においては、処理ブロック(Blk_1~Blk_p)に対して、条件(Cnd_1~Cnd_q)毎のコストまたは性能指標(コスト/性能指標)が対応付けられている。
処理ブロックコスト情報204を構成する情報は、メモリ12や記憶装置13の所定の記憶領域に記憶される。
コスト性能指標抽出部103は、処理ブロック毎に全実行条件のコストを統計処理して、代表コストを算出する。また、コスト性能指標抽出部103は、処理ブロック毎に全実行条件の性能指標を統計処理して、代表性能指標を算出する。統計処理は、例えば、平均値の算出や中央値の算出であってもよい。代表コストまたは代表性能指標の少なくとも一方を代表コスト/性能指標と表す場合がある。また、代表コスト/性能指標を単に代表コストと表す場合がある。
コスト性能指標抽出部103は、算出したコスト,性能指標,代表コスト,代表性能指標等をメモリ12や記憶装置13の所定の記憶領域に記憶させる。
図15および図16は実施形態の一例としての計算機システム1におけるプロファイリングレポートの一部を抜粋して例示する図である。
これらの図15および図16においては、処理ブロックqvan2_(図4参照)に対してプロファイラが生成した一連のプロファイリングレポートの一部示している。
これらの図15および図16に例示するプロファイリングレポートには、処理ブロックqvan2.1~2.3のコストの情報が含まれている(図15の符号P01,P02および図16の符号P03参照)。
図17は実施形態の一例としての計算機システム1における処理ブロックのコスト集計情報を説明するための図である。この図17に例示するコスト集計情報においては、処理ブロックqvan2_に含まれる処理ブロックqvan2.1~2.3についてのコスト,コスト比率および実行時間を示す。コスト性能指標抽出部103は、プロファイリングレポートから抽出した値を用いて、処理ブロック毎にこれらの値を算出してもよい。
コスト性能指標抽出部103は、プロファイリングレポートから抽出したqvan2.1~2.3の各コストの値を取得し、必要に応じて集計等を行なって処理ブロックコスト情報204に登録してもよい。
コスト性能指標抽出部103は、プロファイリングレポートから抽出したqvan2.1~2.3の各コスト比率の値や実行時間の値を処理ブロックコスト情報204や処理ブロックのコスト集計情報にそれぞれ登録してもよい。
最適化効果指標算出部104は、各処理ブロックの最適化効果指標を算出する。最適化効果指標は処理ブロックに対して行なわれる最適化による効果を表す値である。最適化効果指標は、その処理ブロックが効果的に最適化できるものであるかを表す。
最適化効果指標算出部104は、最適化指標抽出部101が算出した処理ブロックの最適化指標値と、最適化種別毎の適用効果重みとに基づいて、各処理ブロックの最適化効果指標を算出する。最適化効果指標算出部104は、以下の式(1)に基づいて最適化効果指標を算出する。

最適化効果指標 = Σ(最適化指標値×適用効果重み) ・・・(1)
本実施形態においては、最適化効果指標が1以下の値である例について示す。
なお、適用効果重みは最適化種別毎に予め設定される。最適化種別毎の適用効果重みの総和は1.0とする{Σ(最適化種別毎の適用効果重み)=1.0}。
図18は実施形態の一例としての計算機システム1における最適化種別毎の適用効果重みを例示する図である。
例えば、A64FXプロセッサ環境の性能最適化ではSIMD化とソフトウェアパイプラインが重要である。そこで、図18に示す例においては、「Opt-6: ソフウェアパイプライン」に適用効果重み0.45が設定され、「Opt-7: SIMD化」に適用効果重み0.55が設定されている。なお、その他の最適化はコンパイラがAsisソースコードにおいて適用済であるものとする。
このように、例えば、オペレータが性能最適化に重要と考える1つ以上の最適化種別に対して、予め、適用効果重みを設定することが望ましい。
最適化効果指標算出部104は、算出した最適化効果指標をメモリ12や記憶装置13の所定の記憶領域に記憶させる。
出力制御部105は、最適化効果指標算出部104が算出した最適化効果指標に基づいて、最適化対象ソフトウェアに含まれる複数の処理ブロックの中から、効果的に最適化を実現できる処理ブロック(最適化対象処理ブロック)を1つ以上選択する。そして、出力制御部105は、選択した最適化対象処理ブロックに関する情報を提示情報として出力する。最適化対象処理ブロックは、最適化の対象候補として推奨される処理ブロックであるといってもよい。
出力制御部105は、最適化対象ソフトウェアに含まれる複数の処理ブロックの中から最適化効果指標の値が閾値以上の処理ブロック(最適化対象処理ブロック)を抽出する。
最適化対象処理ブロック提示情報205は、これらの最適化対象処理ブロックを含む最適化対象処理ブロック提示情報205を作成する。
図19は実施形態の一例としての計算機システム1における最適化対象処理ブロック提示情報205を例示する図である。
図19に例示する最適化対象処理ブロック提示情報205は、複数の最適化対象ソフトウェアを構成する複数の処理ブロックを最適化効果指標の値に応じて並べた一覧として構成されており、最適化効果指標の値が最も高いものが先頭となるように配置されている。
また、図19に例示する最適化対象処理ブロック提示情報205は、各処理ブロックに対応させて、代表コストと最適化効果指標と最適化指標値(最適化種別毎)とを備えている。
この図19において、各処理ブロックの最適化効果指標は、それぞれその右側に示した同一処理ブロックに関する複数の最適化指標値の各値を用いて、上記の式(1)により算出される。
出力制御部105は、コスト性能指標抽出部103が算出した処理ブロック毎の代表コスト/性能指標(代表コスト)を取得し、最適化対象処理ブロック提示情報205において、対応する処理ブロックに対応させて設定する。
また、出力制御部105は、最適化効果指標算出部104が算出した処理ブロックの最適化効果指標を取得し、最適化対象処理ブロック提示情報205において、対応する処理ブロックに対応させて設定する。
さらに、出力制御部105は、処理ブロック毎最適化指標情報202を参照して、処理ブロックに対応する最適化指標値の情報を取得し、最適化対象処理ブロック提示情報205において、対応する処理ブロックに対応させて設定する。
出力制御部105は、最適化効果指標が所定の閾値(例えば、0.5)以上の処理ブロックのみを抽出して、最適化対象処理ブロック提示情報205に提示することが望ましい。
オペレータは、最適化対象処理ブロック提示情報205を参照し、最適化効果指標の値が高い処理ブロックを最適化対象の処理ブロック(最適化対象処理ブロック)として選択することで、最適化効果が高い処理ブロックを決定することができる。
また、オペレータは、最適化対象処理ブロック提示情報205を参照し、代表コストの値が高い(高コストの)処理ブロックを選択することで、コスト面において効率的な処理ブロックを最適化対象の処理ブロックとして決定することができる。なお、コストが高いとは、全体コストに対する該当ブロックのコスト割合が高いことを表す。
なお、最適化対象処理ブロックを選択する基準として、最適化効果指標と代表コスト(コスト)とのいずれか一方を優先して採用してもよい。例えば、複数の処理ブロックにおいて、最適化効果指標が高い処理ブロックを優先して選択するとともに、最適化効果指標が同じ処理ブロックがある場合には、これらのうち代表コストが高い処理ブロックを優先して選択してもよい。また、複数の処理ブロックにおいて、代表コストが高い処理ブロックを優先して選択するとともに、代表コストが同じ処理ブロックがある場合には、これらのうち最適化効果指標が高い処理ブロックを優先して選択してもよい。
オペレータは、最適化対象処理ブロック提示情報205を参照し、最適化指標値を参照し、最適化指標値が高い最適化種別(最適化手法)を選択することで、処理ブロックに対して最適化手法の適用が容易な最適化種別(最適化手法)を決定することができる。
なお、図19に示す例においては、最適化対象処理ブロック提示情報205が、処理ブロックに対応させて最適化指標値が設定されているが、これに限定されるものではなく、適宜変更して実施することができる。
図20は実施形態の一例としての計算機システム1における最適化対象処理ブロック提示情報205の変形例を示す図である。
この図20に示す例においては、図19に例示した最適化対象処理ブロック提示情報205の最適化種別毎の最適化指標値に代えて、最適化種別毎のソースコード変更内容を備えている。
ソースコード変更内容は、最適化種別を実現するためにソースコードに対して行なわれるべき具体的な変更内容を示す情報であり、例えば、ループの分割や統合を示唆する情報等であってもよい。
例えば、ソースコード変更内容として使用可能な情報をデータベース等に最適化種別に対応させて登録しておき、出力制御部105が、これらの情報をデータベースから抽出して用いてもよい
オペレータは、最適化対象処理ブロック提示情報205を参照し、最適化種別毎のソースコード変更前構成内容を参照することで、最適化種別(最適化手法)を実現するためにソースコードに対して行なうべき変更内容を知ることができ利便性が高い。
図21は実施形態の一例としての計算機システム1における最適化対象処理ブロック提示情報205を例示する図である。
この図21に示す例においては、処理ブロックqvan2.1~2.3に関する最適化対象処理ブロック提示情報205を示しており、最適化効果指標が閾値(本例では0.5)以上の処理ブロックを最適化対象として検出した例を示す。
この図21に例示する最適化対象処理ブロック提示情報205においては、qvan2.2の最適化効率指標およびコストの各値がそれぞれ最も高い。従って、オペレータは、このqvan2.2の最適化を最適化対象として決定してもよい。また、出力制御部105は、最適化対象処理ブロック提示情報205を参照して、最適化効率指標およびコストの各値がそれぞれ最も高い処理ブロックを最適化対象処理ブロックとしてオペレータ等に提示してもよい。
(B)動作
上述の如く構成された実施形態の一例としての計算機システム1による最適化対象処理ブロック出力手法を、図22に示すフローチャート(ステップA1~A8)に従って説明する。
ステップA1において、コンパイラが最適化対象ソフトウェアのコンパイルを行なう。コンパイラはコンパイラ最適化レポートを作成する。また、プロファイラがプロファイリングレポートを作成する。
ステップA2において、最適化指標抽出部101は、コンパイラ最適化レポートに基づき、最適化対象ソフトウェアに含まれる複数の各処理ブロックについて、最適化種別毎難易度情報201からハードウェア仕様に基づく最適化指標値を抽出し、処理ブロック毎最適化指標情報202を作成する。
ステップA3において、実行条件設定部102が、実行条件の設定を行ない実行条件情報203を作成する。実行条件設定部102は、例えば、入力データ条件および並列条件の各変動範囲を設定する。
ステップA4において、コスト性能指標抽出部103が、プロファイラによって作成された実行条件毎のプロファイリングレポートから各処理ブロックのコスト/性能指標を抽出する。
ステップA5において、コスト性能指標抽出部103は、全ての実行条件に対して各処理ブロックのコスト/性能指標の抽出を行なったかを確認する。確認の結果、全実行条件に対する各処理ブロックのコスト/性能指標の抽出が終了していない場合には(ステップA5の“未終了”ルート参照)、ステップA4に戻る。
一方、全実行条件に対する各処理ブロックのコスト/性能指標の抽出が終了した場合には(ステップA5の“終了”ルート参照)、ステップA6に移行する。
ステップA6において、最適化効果指標算出部104は、各処理ブロックの最適化効果指標を算出する。
ステップA7において、出力制御部105は、最適化対象ソフトウェアに含まれる複数の処理ブロックの中から最適化効果指標の値が閾値以上の処理ブロック(最適化対象処理ブロック)を抽出する。
ステップA8において、出力制御部105は、代表コストまたは代表性能指標によりソートした最適化対象処理ブロックの一覧を最適化対象処理ブロック提示情報205として出力する。その後、処理を終了する。
(C)効果
このように、実施形態の一例としての計算機システム1によれば、最適化指標抽出部101が、コンパイラ最適化レポートに基づき、最適化対象ソフトウェアに含まれる複数の各処理ブロックについて、最適化種別毎難易度情報201からハードウェア仕様に基づく最適化指標値を抽出し、処理ブロック毎最適化指標情報202を作成する。
また、最適化効果指標算出部104が、上記の式(1)に基づき、各処理ブロックの最適化効果指標を算出する。最適化効果指標は、その処理ブロックが効果的に最適化できるものであるかを表す。
そして、出力制御部105が、最適化対象ソフトウェアに含まれる複数の処理ブロックの中から最適化効果指標の値が閾値以上の処理ブロック(最適化対象処理ブロック)を抽出し、これらの最適化対象処理ブロックを最適化効果指標の値に応じて一覧にして示す最適化対象処理ブロック提示情報205を作成する。
オペレータは、この最適化対象処理ブロック提示情報205を参照することで、最適化による効果を得られる最適化対象処理ブロックを高速に検索することができる。
また、コスト性能指標抽出部103が、プロファイラによって作成された実行条件毎のプロファイリングレポートから各処理ブロックのコスト/性能指標を抽出し、処理ブロック毎に全実行条件のコスト/性能指標を統計処理して、代表コスト/性能指標を算出する。
出力制御部105は、このように算出された代表コスト/性能指標を最適化対象処理ブロック提示情報205に処理ブロックに対応させて設定する。
オペレータは、最適化対象処理ブロック提示情報205を参照し、代表コストの値が高い処理ブロックを選択することで、コスト面において効率的な処理ブロックを最適化対象の処理ブロックとして決定することができる。また、オペレータは、最適化対象処理ブロック提示情報205を参照し、代表性能指標の値が高い処理ブロックを選択することで、高い性能を得られる(例えば処理時間が短い)処理ブロックを最適化対象の処理ブロックとして決定することができる。
本計算機システム1によれば、最適化対象ソフトウェアのコンパイル時に生成されるコンパイラ最適化レポートと、コンパイラ付属プロファイラの実行時に生成されるプロファイリングレポートとを用いることで、実行条件の下で、ハードウェア仕様に基づく最適化効果の高い、最適化対象処理ブロックを高速に検出することができる。
図23は実施形態の一例としての計算機システム1の管理装置3により検出した最適化による結果を、従来手法を用いた専門家によるソースコード分析の結果とともに示す図である。
図23においては、処理ブロックqvan2.2に対して最適化を行なう例を示し、例えば、項番0は、現状の状態(Asis)を示し、最適化オプション“-Kfast”を用いて最適化を行なった結果を示す。
また、項番1,2,4,5は、それぞれ専門家が決定した手法により最適化を行なった結果を示し、いずれも項番1の結果に比べて経過時間が短縮し高速化していることがわかる。これらの項番1,2,4,5のうち、項番5の結果が最も高速化を実現している。
そして、項番3が本計算機システム1の管理装置3により検出した最適化による結果を示す。この項番3による結果は、項番1,2,4,5に示した専門家による最適化結果と遜色がなく、最も高速化を実現している項番5の結果と同等のものとなっている。
このように、本計算機システム1によれば、専門家による性能最適化と同等の高性能化を実現することができる。
(D)その他
本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態では、最適化効果指標算出部104が、式(1)を用いて最適化効果指標を算出し、コスト性能指標抽出部103が処理ブロック毎に全実行条件のコスト/性能指標を統計処理して、代表コスト/性能指標を算出するが、これに限定されるものではない。
例えば、最適化効果指標算出部104は、処理ブロックのコストを反映させた最適化効果指標を算出してもよい。
具体的には、最適化効果指標算出部104は、以下の式(2)に基づいて最適化効果指標を算出してもよい。
最適化効果指標 = Σ(最適化指標値×適用効果重み)×処理ブロックのコスト指標
・・・(2)
処理ブロックのコスト指標は、例えば、該当処理ブロックの経過時間またはクロック数である。また、適用効果重みは最適化種別毎に予め設定される。最適化種別毎の適用効果重みの総和は1.0とする{Σ(最適化種別毎の適用効果重み)=1.0}。
このように、最適化効果指標にコストが反映されているので、最適化効果指標の値が高い処理ブロックを最適化対象の処理ブロックとして選択することで、最適化効果が高く、且つ高コストの処理ブロックを効率的に決定することができる。
また、管理装置3としての機能の少なくとも一部を計算装置2に備えてもよく、適宜変更して実施することができる。
上述した実施形態においては、最適化対象ソフトウェアがOSSである例を示しているが、これに限定されるものではなく、OSS以外のソフトウェアを最適化対象ソフトウェアとしてもよく、種々変形して実施することができる。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
(E)付記
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
情報処理装置のプロセッサに、
ソフトウェアのコンパイル時に生成される最適化レポートから最適化手法と前記最適化手法が適用できない理由を示す最適化非適用条件とを抽出し、
前記最適化手法と前記最適化非適用条件とに基づいて、前記ソフトウェアに含まれる複数の処理ブロック毎の最適化適用容易性指標値を決定し、
前記最適化適用容易性指標値に基づいて、前記ソフトウェアに含まれる複数の処理ブロックの中から、最適化の対象とする最適化対象処理ブロックを決定する
処理を実行させることを特徴とする最適化対象処理ブロック決定プログラム。
(付記2)
複数種類の最適化手法のそれぞれに対して、複数種類の非適用条件毎に実施容易度を規定した最適化種別毎難易度情報から抽出する、前記最適化手法と前記最適化非適用条件とに対応する実施容易度に基づいて、前記最適化適用容易性指標値を算出する
処理を前記プロセッサに実行させることを特徴とする付記1記載の最適化対象処理ブロック決定プログラム。
(付記3)
前記ソフトウェアに含まれる複数の処理ブロックの中から、前記最適化適用容易性指標値が閾値以上である複数の処理ブロックを前記最適化対象処理ブロックとして決定し、
前記最適化対象処理ブロックとして決定した前記複数の処理ブロックを、前記最適化適用容易性指標値とともに一覧として出力する
処理を前記プロセッサに実行させることを特徴とする、付記1または2に記載の最適化対象処理ブロック決定プログラム。
(付記4)
前記ソフトウェアに対する複数種類の実行条件で生成されるプロファイリングレポートから、前記複数の処理ブロックのコスト情報を抽出し、
前記複数種類の実行条件で得られた各コスト情報に基づき、前記複数の処理ブロックそれぞれの代表コストを算出し、
前記代表コストに基づいて、前記ソフトウェアに含まれる複数の処理ブロックの中から、前記代表コストが高い処理ブロックを最適化の対象とする最適化対象処理ブロックとして優先して決定する
処理を前記プロセッサに実行させることを特徴とする、付記1~3のいずれか1項に記載の最適化対象処理ブロック決定プログラム。
(付記5)
ソフトウェアのコンパイル時に生成される最適化レポートから最適化手法と前記最適化手法が適用できない理由を示す最適化非適用条件とを抽出する処理と、
前記最適化手法と前記最適化非適用条件とに基づいて、前記ソフトウェアに含まれる複数の処理ブロック毎の最適化適用容易性指標値を決定する処理と、
前記最適化適用容易性指標値に基づいて、前記ソフトウェアに含まれる複数の処理ブロックの中から、最適化の対象とする最適化対象処理ブロックを決定する処理と
を情報処理装置が実行することを特徴とする最適化対象処理ブロック決定方法。
(付記6)
複数種類の最適化手法のそれぞれに対して、複数種類の非適用条件毎に実施容易度を規定した最適化種別毎難易度情報から抽出する、前記最適化手法と前記最適化非適用条件とに対応する実施容易度に基づいて、前記最適化適用容易性指標値を算出する
処理を前記情報処理装置が実行することを特徴とする付記5記載の最適化対象処理ブロック決定方法。
(付記7)
前記に含まれる複数の処理ブロックの中から、前記最適化適用容易性指標値が閾値以上である複数の処理ブロックを前記最適化対象処理ブロックとして決定する処理と、
前記最適化対象処理ブロックとして決定した前記複数の処理ブロックを、前記最適化適用容易性指標値とともに一覧として出力する処理と
を前記情報処理装置が実行することを特徴とする、付記5または6に記載の最適化対象処理ブロック決定方法。
(付記8)
前記ソフトウェアに対する複数種類の実行条件で生成されるプロファイリングレポートから、前記複数の処理ブロックのコスト情報を抽出する処理と、
前記複数種類の実行条件で得られた各コスト情報に基づき、前記複数の処理ブロックそれぞれの代表コストを算出する処理と、
前記代表コストに基づいて、前記ソフトウェアに含まれる複数の処理ブロックの中から、前記代表コストが高い処理ブロックを最適化の対象とする最適化対象処理ブロックとして優先して決定する処理と
を前記情報処理装置が実行することを特徴とする、付記5~7のいずれか1項に記載の最適化対象処理ブロック決定方法。
1 計算機システム
2 計算装置
3 管理装置
4 通信路
11 プロセッサ
12 メモリ
13 記憶装置
14 グラフィック処理装置
14a モニタ
15 入力インタフェース
15a キーボード
15b マウス
16 光学ドライブ装置
16a 光ディスク
17 機器接続インタフェース
17a メモリ装置
17b メモリリーダライタ
17c メモリカード
18 ネットワークインタフェース
18a ネットワーク
19 バス
100 最適化対象処理ブロック出力部
101 最適化指標抽出部
102 実行条件設定部
103 コスト性能指標抽出部
104 最適化効果指標算出部
105 出力制御部
201 最適化種別毎難易度情報
203 実行条件情報
204 処理ブロックコスト情報
205 最適化対象処理ブロック提示情報

Claims (5)

  1. 情報処理装置のプロセッサに、
    ソフトウェアのコンパイル時に生成される最適化レポートから最適化手法と前記最適化手法が適用できない理由を示す最適化非適用条件とを抽出し、
    前記最適化手法と前記最適化非適用条件とに基づいて、前記ソフトウェアに含まれる複数の処理ブロック毎の最適化適用容易性指標値を決定し、
    前記最適化適用容易性指標値に基づいて、前記ソフトウェアに含まれる複数の処理ブロックの中から、最適化の対象とする最適化対象処理ブロックを決定する
    処理を実行させることを特徴とする最適化対象処理ブロック決定プログラム。
  2. 複数種類の最適化手法のそれぞれに対して、複数種類の非適用条件毎に実施容易度を規定した最適化種別毎難易度情報から抽出する、前記最適化手法と前記最適化非適用条件とに対応する実施容易度に基づいて、前記最適化適用容易性指標値を算出する
    処理を前記プロセッサに実行させることを特徴とする請求項1記載の最適化対象処理ブロック決定プログラム。
  3. 前記ソフトウェアに含まれる複数の処理ブロックの中から、前記最適化適用容易性指標値が閾値以上である複数の処理ブロックを前記最適化対象処理ブロックとして決定し、
    前記最適化対象処理ブロックとして決定した前記複数の処理ブロックを、前記最適化適用容易性指標値とともに一覧として出力する
    処理を前記プロセッサに実行させることを特徴とする、請求項1または2に記載の最適化対象処理ブロック決定プログラム。
  4. 前記ソフトウェアに対する複数種類の実行条件で生成されるプロファイリングレポートから、前記複数の処理ブロックのコスト情報を抽出し、
    前記複数種類の実行条件で得られた各コスト情報に基づき、前記複数の処理ブロックそれぞれの代表コストを算出し、
    前記代表コストに基づいて、前記ソフトウェアに含まれる複数の処理ブロックの中から、前記代表コストが高い処理ブロックを最適化の対象とする最適化対象処理ブロックとして優先して決定する
    処理を前記プロセッサに実行させることを特徴とする、請求項1~3のいずれか1項に記載の最適化対象処理ブロック決定プログラム。
  5. ソフトウェアのコンパイル時に生成される最適化レポートから最適化手法と前記最適化手法が適用できない理由を示す最適化非適用条件とを抽出する処理と、
    前記最適化手法と前記最適化非適用条件とに基づいて、前記ソフトウェアに含まれる複数の処理ブロック毎の最適化適用容易性指標値を決定する処理と、
    前記最適化適用容易性指標値に基づいて、前記ソフトウェアに含まれる複数の処理ブロックの中から、最適化の対象とする最適化対象処理ブロックを決定する処理と
    を情報処理装置が実行することを特徴とする最適化対象処理ブロック決定方法。
JP2021018328A 2021-02-08 2021-02-08 最適化対象処理ブロック決定プログラムおよび最適化対象処理ブロック決定方法 Active JP7552405B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021018328A JP7552405B2 (ja) 2021-02-08 2021-02-08 最適化対象処理ブロック決定プログラムおよび最適化対象処理ブロック決定方法
US17/523,053 US11842182B2 (en) 2021-02-08 2021-11-10 Method of determining processing block to be optimized and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021018328A JP7552405B2 (ja) 2021-02-08 2021-02-08 最適化対象処理ブロック決定プログラムおよび最適化対象処理ブロック決定方法

Publications (2)

Publication Number Publication Date
JP2022121144A JP2022121144A (ja) 2022-08-19
JP7552405B2 true JP7552405B2 (ja) 2024-09-18

Family

ID=82703798

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021018328A Active JP7552405B2 (ja) 2021-02-08 2021-02-08 最適化対象処理ブロック決定プログラムおよび最適化対象処理ブロック決定方法

Country Status (2)

Country Link
US (1) US11842182B2 (ja)
JP (1) JP7552405B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142718A (ja) 1999-11-18 2001-05-25 Fujitsu Ltd プログラム実行装置
JP2010113384A (ja) 2008-11-04 2010-05-20 Fujitsu Ltd 設計支援プログラム、設計支援装置、および設計支援方法
JP2015194881A (ja) 2014-03-31 2015-11-05 富士通株式会社 コンパイル装置、コンパイラプログラム、コンパイル方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2789977B2 (ja) 1992-12-07 1998-08-27 日本電気株式会社 実行情報採取用プログラム生成装置
JPH0916436A (ja) 1995-06-30 1997-01-17 Hitachi Ltd 並列プログラム最適化支援方法
JP4131909B2 (ja) 2001-07-26 2008-08-13 株式会社東芝 コンパイル方法
US7730469B1 (en) * 2004-05-04 2010-06-01 Oracle America, Inc. Method and system for code optimization
US11301218B2 (en) * 2020-07-29 2022-04-12 Bank Of America Corporation Graph-based vectorization for software code optimization references

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142718A (ja) 1999-11-18 2001-05-25 Fujitsu Ltd プログラム実行装置
JP2010113384A (ja) 2008-11-04 2010-05-20 Fujitsu Ltd 設計支援プログラム、設計支援装置、および設計支援方法
JP2015194881A (ja) 2014-03-31 2015-11-05 富士通株式会社 コンパイル装置、コンパイラプログラム、コンパイル方法

Also Published As

Publication number Publication date
US11842182B2 (en) 2023-12-12
US20220253299A1 (en) 2022-08-11
JP2022121144A (ja) 2022-08-19

Similar Documents

Publication Publication Date Title
US10705795B2 (en) Duplicate and similar bug report detection and retrieval using neural networks
US10346292B2 (en) Software component recommendation based on multiple trace runs
JP5988444B2 (ja) 最適化したバイナリー・モジュールをテストする方法、並びに、当該最適化したバイナリー・モジュールをテストするためのコンピュータ及びそのコンピュータ・プログラム
US10983904B1 (en) Test automation for data processing
Dai et al. Reveal training performance mystery between TensorFlow and PyTorch in the single GPU environment
US11068247B2 (en) Vectorizing conditional min-max sequence reduction loops
Hayashi et al. Machine-learning-based performance heuristics for runtime cpu/gpu selection
US20160364220A1 (en) Method for optimizing loop processing under constraint on processors to be used
Bilal et al. Finding the right cloud configuration for analytics clusters
Ogilvie et al. Fast automatic heuristic construction using active learning
JP6911059B2 (ja) Cpu利用およびコードリファクタリングのためのクエリオプティマイザー
US20130262835A1 (en) Code generation method and information processing apparatus
KR102013582B1 (ko) 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법
US20150095626A1 (en) Trace method and information processing apparatus
US20220058064A1 (en) Api selection system and api selection method
US20130262824A1 (en) Code generation method, and information processing apparatus
O'Neal et al. HALWPE: Hardware-assisted light weight performance estimation for GPUs
US11983097B2 (en) Ranking tests based on code change and coverage
de Oliveira Castro et al. Fine-grained benchmark subsetting for system selection
JP7552405B2 (ja) 最適化対象処理ブロック決定プログラムおよび最適化対象処理ブロック決定方法
Al Shoaibi et al. Understanding software performance challenges an empirical study on stack overflow
Févotte et al. Debugging and optimization of HPC programs in mixed precision with the Verrou tool
Sachan et al. Learning based compilation of embedded applications targeting minimal energy consumption
US20200034502A1 (en) Architecture selection device, architecture selection method, and computer readable medium
US8966483B2 (en) Method and device for optimizing execution of software applications in a multiprocessor architecture comprising several input/output controllers and secondary computing units

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231012

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240717

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240819

R150 Certificate of patent or registration of utility model

Ref document number: 7552405

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150