JP2017033452A - 計算機、動作周波数決定プログラム及び動作周波数決定方法 - Google Patents

計算機、動作周波数決定プログラム及び動作周波数決定方法 Download PDF

Info

Publication number
JP2017033452A
JP2017033452A JP2015155254A JP2015155254A JP2017033452A JP 2017033452 A JP2017033452 A JP 2017033452A JP 2015155254 A JP2015155254 A JP 2015155254A JP 2015155254 A JP2015155254 A JP 2015155254A JP 2017033452 A JP2017033452 A JP 2017033452A
Authority
JP
Japan
Prior art keywords
program
information
feature information
loop
instruction
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
JP2015155254A
Other languages
English (en)
Other versions
JP6439623B2 (ja
Inventor
一繁 佐賀
Kazushige Saga
一繁 佐賀
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 JP2015155254A priority Critical patent/JP6439623B2/ja
Priority to US15/204,266 priority patent/US10025368B2/en
Publication of JP2017033452A publication Critical patent/JP2017033452A/ja
Application granted granted Critical
Publication of JP6439623B2 publication Critical patent/JP6439623B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Power Sources (AREA)

Abstract

【課題】プログラムを実行する際の動作周波数を推測する動作周波数決定プログラム及び動作周波数決定方法を提供する。
【解決手段】第1プログラムの実行前において、第1プログラムに対応するプログラム特徴情報である第1プログラム特徴情報を取得し、情報記憶部に記憶されたプログラム特徴情報のうち、取得した第1プログラム特徴情報に含まれる情報と最も近い情報を含む第2プログラム特徴情報を特定し、情報記憶部に記憶された最小動作周波数のうち、特定した第2プログラム特徴情報と対応する動作周波数を、第1プログラムを実行する際の消費電力量が最小である第1動作周波数として推測する。
【選択図】図10

Description

本発明は、計算機、動作周波数決定プログラム及び動作周波数決定方法に関する。
近年、情報処理システムである並列計算機システム(以下、HPC(High Performance Computing)システムとも呼ぶ)では、高性能化を目的として、計算ノード数が10万ノードを超えるシステムが開発されている。
上記のようなシステムにおいて、例えば、EFLOPS(Exa Floating point number Operations Per Second)級の処理を行う場合、処理実行時における消費電力量が膨大になる(例えば、毎時50(MW)以上)。そのため、システムの開発者(以下、単に開発者とも呼ぶ)は、各プログラムの実行時におけるシステムの省電力化を考慮した上で、システムの構築やジョブの実行制御等を行う必要がある。
特表2014−527248号公報 特開2008−040734号公報 特開2007−305148号公報 特開2013−242604号公報 特開2004−182512号公報
上記のようなシステム(以下、対象システムとも呼ぶ)の省電力化を行うための手法として、例えば、DVFS(Dynamic Voltage and Frequency Scaling)機能を利用して消費電力を低減する方法が知られている。DVFSは、CPU(Central Processing Unit)の動作電圧やクロック周波数(以下、動作周波数とも呼ぶ)、または、その両方を制御する機能である。この機能を利用して動作電圧や動作周波数を制御することにより、CPUの消費電力を変化させることが可能になる。そのため、この機能を利用することにより、対象システム(例えば、分散メモリ型のHPCシステム)の消費電力量の低減(省電化)を行うことが可能になる(以下、対象システムの省電化を管理するシステムを省電力管理システムとも呼ぶ)。
具体的には、以下のような手法によって、対象システムの省電化が行われる。システム構築者やシステム管理者(以下、これらを総称して管理者とも呼ぶ)は、対象システムの運用の準備段階として、複数のテストプログラム(以下、サンプルプログラムとも呼ぶ)を、対象システムのCPUの動作周波数を変化させながら実行させ、各テストプログラムの実行に関する各種情報を取得する。そして、管理者は、取得した情報を省電力管理システムに入力する。その後、省電力管理システムは、取得情報からテストプログラム以外のプログラムの消費電力量を推測する推測式で使用する係数を求め、例えば、データベース等に記憶する。
一方、対象システムの運用時において、新たなプログラムを対象システムで実行(以下、初回実行とも呼ぶ)する場合、対象システムの利用者(以下、単に利用者とも呼ぶ)は、その実行が初回実行である旨の指定と、新たなプログラムを一意に識別できる利用者定義の識別情報の付加を行うことにより、ジョブ管理プログラムに対して新たなプログラム(新たなプログラムを含むジョブ)の実行を依頼する。そして、ジョブ管理システムは、CPU周波数をシステムが定義する初回実行のための動作周波数(以下、デフォルト動作周波数とも呼ぶ)により、新たなプログラムを含むジョブの実行を行う。これにより、省電力管理システムは、新たなプログラムについて、テストプログラムの実行時に取得した情報と同種の情報を取得することが可能になる。
その後、利用者は、新たなプログラムを2回目以降に実行する場合、新たなプログラムの識別情報を付加してジョブ管理システムに実行を依頼する。この場合、省電力管理システムは、指定された識別情報をキーとしてデータベースから新たなプログラムの初回実行時において取得した各情報を抽出し、テストプログラムの実行時に取得した推測式の係数に基づき、新たなプログラムの実行に伴う消費電力量が最小になる動作周波数(以下、消費電力最小周波数とも呼ぶ)を推測する。そして、省電力管理システムは、推測した消費電力最小周波数をCPUに設定して、新たなプログラム実行する。これにより、省電力管理システムは、新たなプログラムの実行を2回目以降に行う場合における消費電力量を抑えることが可能になる。
しかしながら、上記の方法では、プログラムが新たに作成された場合のみでなく、プログラムの主要部分の改修が行われる毎に、再度初回実行を行う必要がある。そのため、新たなプログラムの改修頻度によっては、初回実行の実行に伴う消費電力量によって、新たなプログラムの実行に伴う消費電力量の省電化を行うことができない場合がある。
そこで、一つの側面では、プログラムを実行する際の動作周波数を推測する動作周波数決定プログラム及び動作周波数決定方法を提供することを目的とする。
実施の形態の一つの態様によれば、複数のサンプルプログラムのそれぞれを複数の動作周波数において実行した結果に基づき、サンプルプログラム内のループに含まれる命令のうち、最内ループに含まれる命令の種類毎の数を含む最内ループ特徴情報と、サンプルプログラム内のループに含まれる命令のうち、前記最内ループ以外のループに含まれる命令の種類毎の数を含む他ループ特徴情報とを含むプログラム特徴情報と、前記複数の動作周波数のうち、サンプルプログラムを実行した際の消費電力量が最小であった動作周波数を示す最小動作周波数とを、前記複数のサンプルプログラム毎に対応付けて記憶する情報記憶部と、前記サンプルプログラム以外のプログラムである第1プログラムの実行前において、前記第1プログラムに対応する前記プログラム特徴情報である第1プログラム特徴情報を取得する情報取得部と、前記情報記憶部に記憶された前記プログラム特徴情報のうち、取得した前記第1プログラム特徴情報に含まれる情報と最も近い情報を含む第2プログラム特徴情報を特定し、前記情報記憶部に記憶された前記最小動作周波数のうち、特定した前記第2プログラム特徴情報と対応する動作周波数を、第1プログラムを実行する際の消費電力量が最小である第1動作周波数として推測する動作周波数推測部と、を有する。
一つの側面によれば、プログラムを実行する際の動作周波数を推測する。
情報処理システム10の全体構成を示す図である。 DVFSによる省電力化の具体例を説明する図である。 DVFSによる省電力化の具体例を説明する図である。 DVFSによる省電力化の具体例を説明する図である。 DVFSによる省電力化の具体例を説明する図である。 DVFSによる省電力化の具体例を説明する図である。 管理ノード1のハードウエア構成を説明する図である。 図7の管理ノード1の機能ブロック図である。 第1の実施の形態における動作周波数決定処理の概略を説明するフローチャートである。 第1の実施の形態における動作周波数決定処理の概略を説明するフローチャートである。 第1の実施の形態における動作周波数決定処理の概略を説明する図である。 第1の実施の形態における動作周波数決定処理の概略を説明する図である。 第1の実施の形態における動作周波数決定処理の概略を説明する図である。 第1の実施の形態における動作周波数決定処理の概略を説明する図である。 第1の実施の形態における動作周波数決定処理の詳細を説明するフローチャートである。 第1の実施の形態における動作周波数決定処理の詳細を説明するフローチャートである。 第1の実施の形態における動作周波数決定処理の詳細を説明するフローチャートである。 第1の実施の形態における動作周波数決定処理の詳細を説明するフローチャートである。 命令情報134の具体例を説明する図である。 命令情報134の具体例を説明する図である。 命令情報134の具体例を説明する図である。 命令情報134の具体例を説明する図である。 最内ループ特徴情報131の具体例を説明する図である。 他ループ特徴情報132の具体例を説明する図である。 周波数情報133の具体例を説明する図である。 対応情報142の具体例を説明する図である。 第1命令情報134aの具体例を説明する図である。 第1最内ループ特徴情報131aの具体例を説明する図である。 第1他ループ特徴情報132aの具体例を説明する図である。 第1対応情報142aの具体例を説明する図である。 第2の実施の形態における他ループ特徴情報132の具体例を説明する図である。 第3の実施の形態におけるニューラルネットワークの具体例を説明する図である。
[情報処理システムの構成]
図1は、情報処理システム10の全体構成を示す図である。図1に示す情報処理システム10(以下、対象システム10とも呼ぶ)は、管理ノード1(以下、計算機1または情報処理装置1とも呼ぶ)と、計算ノード群2と、作業端末11とを有している。なお、情報処理システム10は、例えば、HPCシステムである。
計算ノード群2は、例えば、物理マシンによって構成される。各計算ノードは、例えば、それぞれCPUやメモリ等の物理リソースを有している。
管理ノード1は、計算ノード群2において新たなプログラム(新たに作成または追加されたプログラムや改修されたプログラム)の実行を開始する前に、新たなプログラムの実行に伴う消費電力最小周波数を決定する処理を行う。また、管理ノード1は、各プログラムの動作周波数を決定するための処理を行うために必要な情報を記憶する記憶部1aを有する。なお、以下、管理ノード1には、省電力管理システムやジョブ管理システムが構築されているものとして説明を行う。
作業端末11は、利用者、管理者または開発者等が管理ノード1に処理の実行の指示を行うための端末である。作業端末11は、例えば、管理ノード1や計算ノード群2が配備されているデータセンター(図示しない)と異なる場所に設置されるものであってもよい。
[DVFS機能を利用した省電力化の具体例]
次に、DVFS機能を利用した省電力化の具体例について説明を行う。図2から図6は、DVFSによる省電力化の具体例を説明する図である。なお、図2から図4の内容は、例えば、非特許文献1の内容に関連する。また、図5及び図6の内容は、例えば、非特許文献2の内容に関連する。
初めに、テストプログラムの動作周波数と、テストプログラムの実行に伴う消費電力量の関係について説明を行う。図2から図4は、テストプログラムの実行時における動作周波数毎の消費電力量の具体例である。具体的に、図2から図4は、それぞれテストプログラムA、B及びCをそれぞれ複数の動作周波数で実行した場合を説明する図である。なお、図2から図4に示すグラフにおいて、横軸は、動作周波数(GHz)を示しており、縦軸は、消費電力量(Wh)を示している。
図2に示すように、テストプログラムAの実行に伴う消費電力量は、動作周波数が大きくなるにしたがって大きくなる。そのため、図2に示す例において、テストプログラムAの実行に伴う消費電力量は、動作周波数が「1.2(GHz)」であるときに最小になる。また、図3に示すように、テストプログラムBの実行に伴う消費電力量は、動作周波数が大きくなるにしたがって小さくなる。そのため、図3に示す例において、テストプログラムBの実行に伴う消費電力量は、動作周波数が「2.1(GHz)」であるときに最小になる。一方、図4に示すように、テストプログラムCの実行に伴う消費電力量は、動作周波数が「2.0(GHz)」であるときに最小になる。
すなわち、プログラムの実行時における動作周波数を下げた場合、一般的に、プログラムの実行時間が長くなる。そのため、プログラムの実行に伴う消費電力量(単位時間当たりの消費電力とプログラムの実行時間との積)は、動作周波数を下げることによっては必ずしも減少しない。したがって、開発者は、新たなプログラム(以下、第1プログラムとも呼ぶ)を実行する動作周波数を単純に下げただけでは、プログラムの実行に伴う消費電力量を最小にすることができない場合がある。または、図3や図4に示すように、消費電力量としては逆効果になることがある。
そこで、省電力管理システムは、図5及び図6に示すように、例えば、対象システム10がテストプログラムを実行した場合における動作周波数に対する消費電力量の傾向を把握し、第1プログラムの消費電力最小周波数を推測する。
具体的に、消費電力最小周波数の推測は、対象システム10の構築時等の準備段階と、対象システム10の運用時に動作が分かれる。対象システム10の準備段階において、管理者は、図5に示すように、予め用意された複数のテストプログラムを、複数の動作周波数において計算ノード群2のCPUに実行させる(図5の(1))。複数の動作周波数は、例えば、計算ノード群2のCPUがサポートする複数の動作周波数である。
この場合、管理者は、例えば、各テストプログラムの実行時における単位時間あたりの実行命令数(GIPS:Giga Instractions Per Second)と、単位時間あたりのメモリバンド幅(GBS:Giga Bites per Second)と、実行した命令あたりの平均サイクル数(CIPS:Cycles Per Instrucrion)と、単位時間あたりの消費電力と、実行時間とを測定する。そして、管理者は、測定した情報をテストプログラム毎に対応させ、記憶部1aに記憶する(図5の(2))。
その後、管理者は、図5の(2)において記憶した各情報に基づき、動作周波数毎に、対象システムにおいて第1プログラムを実行した場合における消費電力量を推測するための式(以下、単に推測式とも呼ぶ)の係数を決定する(図5(3))。この推測式は、例えば、対象システム10の構築時に、管理者によって決定されるものであってよい。
一方、対象システム10の運用時において、利用者は、図6に示すように、計算ノード群2において第1プログラムの初回実行を行う(図6の(4))。ここで、利用者は、今回の第1プログラムの実行が初回実行である旨の指定と、第1プログラムをその更新状態まで含めて一意に特定できる情報を付加することにより、ジョブ管理システムに実行を依頼する。なお、利用者は、この場合、システムデフォルトとして事前に定義された動作周波数を使用することにより、第1プログラムの初回実行を行う。
そして、省電力管理システムは、第1プログラムの初回実行に伴い、例えば、第1プログラムの実行時における単位時間あたりの実行命令数(GIPS)と、単位時間あたりのメモリバンド幅(GBS)と、実行した命令あたりの平均サイクル数(CIPS)と、単位時間あたりの消費電力と、実行時間とを測定する。また、省電力管理システムは、測定された情報を、第1プログラムを識別する情報を検索キーとして記憶部1aに記録する。この測定された情報は、2回目以降の実行の際、第1プログラムの実行に伴う消費電力最小周波数を決定するために利用される。すなわち、利用者が対象システム10に対して第1プログラムの2回目以降の実行の依頼する場合、利用者は、既に測定されている情報を利用するために、第1プログラムの識別情報を付加して実行の依頼を行う。なお、第1プログラムの識別情報等の情報は、利用者が管理するものであってよい。
続いて、管理ノード1の省電力管理システムは、図6の(4)で取得した情報と、図5の(3)で決定した推測式の係数に基づき、第1プログラムを各動作周波数で実行した場合の消費電力量を推測する(図6(5))。そして、管理ノード1の省電力管理システムは、図6の(5)で推測した消費電力量のうち、最小の消費電力量に対応する動作周波数を決定する(図6(6))。
これにより、省電力管理システムは、第1プログラムを複数の動作周波数において動作させることなく、第1プログラムの消費電力最小周波数を推測することが可能になる。そのため、対象システム10は、第1プログラムの2回目以降の実行を行う際に、消費電力量を抑えることが可能になる。
しかしながら、上記の方法の場合、利用者は、プログラムが新たに作成された場合のみでなく、プログラムの改修が行われる毎に初回実行を行う必要がある。また、初回実行を行うプログラムには、実行に膨大な時間を有するプログラムが存在する場合がある。そのため、プログラムの改修頻度やプログラムの実行時間等によっては、初回実行時の消費電力量を無視することができない場合がある。また、各プログラムの初回実行が行われたか否かに関する情報や、第1プログラムを特定するための識別情報は、利用者が生成や管理を行う場合がある。そのため、管理者は、利用者の負担増加や、利用者による作業ミスの発生の可能性等を考慮する必要がある。
さらに、新たなプログラムの初回実行を行う場合、新たなプログラムの消費電力最小周波数の推測ができない。そのため、利用者は、対象システム10のデフォルト動作周波数によって、新たなプログラムを実行する。したがって、対象システムのデフォルト動作周波数と、新たなプログラムの消費電力最小周波数とが異なる場合、新たなプログラムの2回目以降の実行に伴う消費電力量を最小にすることができない場合がある。
そこで、本実施の形態では、対象システム10の運用段階において、第1プログラムの初回実行を行うことなく、第1プログラムの消費電力最小周波数の推測を行うことを可能とする。そのため、本実施の形態では、第1プログラムの初回実行が行われたか否かを示す情報や、第1プログラムと特定する識別情報等の管理を行う必要がなくなる。
具体的に、本実施の形態における管理ノード1の省電力管理システムは、事前準備として、各テストプログラムの静的解析を行い、第1プログラムの電力消費において支配的なループ(例えば、第1プログラムの実行に伴って、第1プログラムの所定以上の割合の電力消費量を消費するループ)を検出し、そのループに含まれる命令に関する情報(以下、プログラム特徴情報とも呼ぶ)と、各テストプログラムを様々な周波数で実行させ、消費電力最小周波数との対応情報を作成する。
一方、対象システム10の運用時において、利用者が第1プログラムの実行を指示した場合、本実施の形態における管理ノード1の省電力管理システムは、第1プログラムの静的解析を行って、事前準備でテストプログラムから抽出した同種のプログラム特徴情報を抽出する。そして、上記テストプログラムで抽出した対応情報に含まれるプログラム特徴情報のうち、第1プログラムのプログラム特徴情報(以下、第1プログラム特徴情報とも呼ぶ)と最も近いプログラム特徴情報に対応する動作周波数を、第1プログラムの消費電力最小周波数として推測する。
すなわち、プログラムの実行に伴う対象システム全体の消費電力量は、そのプログラムを並列ジョブとして実行する計算ノード群の消費電力量の総和である。そのため、各計算ノードのプログラムの実行に伴うCPUの消費電力量は、プログラム実行時におけるCPUの動作によって定まる。したがって、管理ノード1は、テストプログラムの記述のうちのCPUの動作に関する記述(テストプログラム内の消費電力量の支配ループに含まれる命令に関する記述)を解析し、その解析結果であるプログラム特徴情報とテストプログラムの消費電力最小周波数との対応情報を作成する。
一方、管理ノード1は、対象システム10の運用時において、第1プログラムを実行する前に、第1プログラムの記述のうちのCPUの動作に関する記述(第1プログラム内の消費電力量の支配ループに含まれる命令に関する記述)を解析し、その解析結果である第1プログラム特徴情報を取得する。そして、管理ノード1は、テストプログラムのうち、取得した第1プログラム情報の内容に最も近いプログラム特徴情報を有するテストプログラムを特定する。その後、管理ノード1は、特定したテストプログラムの消費電力最小周波数を、第1プログラムの消費電力最小周波数として推測する。
これにより、管理ノード1は、初回実行を行うことなく、第1プログラムの消費電力最小周波数を決定することが可能になる。そのため、利用者は、初回実行を行うことなく、第1プログラムを消費電力最小周波数において実行させることが可能になる。
なお、対象システム10(例えば、HPCシステム)で動作するプログラムは、消費電力量を支配するループが多重ループになる場合が多い。また、多重ループにおける計算に関する記述は、最内ループに記述されていることが多い。そのため、多重ループに含まれるループのうち消費電力量が最も大きいループは、多くの場合、最内ループになる。
また、消費電力量を支配する多重ループのうち、最内ループ以外のループ(以下、他ループとも呼ぶ)では、計算する配列のアドレスを決定や、分散並列プログラムにおける他の計算ノードとの計算結果の通信や、I/O処理等が行われる。これらの処理が実行される間、処理の待ち時間が発生するため、一般的に、プログラムの実行に伴う消費電力量は低下する。
すなわち、上記の最内ループは、電力を多く消費するループであり、上記の他ループは、最内ループの電力消費の間隔(リズム)を作り出し、プログラム毎の消費電力量の推移を特徴付けるものとして解釈できる。
このため、以下の説明では、消費電力量を支配するループは、最内ループと、他ループとからなるものとして説明を行う。また、プログラム特徴情報は、最内ループに関する特徴情報である最内ループの特徴情報と、他ループに関する特徴情報である他ループの特徴情報とを含むものとして説明を行う。なお、上記のように、最内ループと他ループとを区別しないものであってもよい。
[管理ノードのハードウエア構成]
次に、管理ノード1のハードウエア構成について説明する。図7は、管理ノード1のハードウエア構成を説明する図である。
管理ノード1は、プロセッサであるCPU101と、メモリ102と、外部インターフェース(I/Oユニット)103と、記憶媒体(ストレージ)104とを有する。各部は、バス105を介して互いに接続される。
記憶媒体104は、記憶媒体104内のプログラム格納領域(図示しない)に、第1プログラムを実行する際の動作周波数を決定する処理(以下、動作周波数決定処理とも呼ぶ)を行うためのプログラム110を記憶する。
CPU101は、図7に示すように、プログラム110の実行時に、プログラム110を記憶媒体104からメモリ102にロードし、プログラム110と協働して動作周波数決定処理を行う。
記憶媒体104は、例えば、動作周波数決定処理を行う際に用いられる情報を記憶する情報格納領域130(以下、情報記憶部130とも呼ぶ)を有する。また、外部インターフェース103は、計算ノード群2や作業端末11と通信を行う。なお、図1で説明した記憶部1aは、記憶媒体104に対応するものであってよい。
[管理ノードのソフトウエア構成]
次に、管理ノード1のソフトウエア構成について説明する。図8は、図7の管理ノード1の機能ブロック図である。CPU101は、プログラム110と協働することにより、特徴情報管理部111と、特徴情報取得部112(以下、単に情報取得部112とも呼ぶ)と、動作周波数推測部113として動作する。また、CPU101は、プログラム110と協働することにより、特徴情報作成部114(以下、他ループ特徴情報作成部114とも呼ぶ)と、開発者通知部115として動作する。
また、図8に示すように、情報格納領域130には、最内ループ特徴情報131と、他ループ特徴情報132と、周波数情報133(以下、最小動作周波数133とも呼ぶ)と、命令情報134と、重み付け情報135とが記憶されている。なお、以下、互いに対応する最内ループ特徴情報131と他ループ特徴情報132とを合わせてプログラム特徴情報141とも呼ぶ。また、互いに対応する最内ループ特徴情報131と他ループ特徴情報132と周波数情報133とを合わせて対応情報142とも呼ぶ。
特徴情報管理部111は、複数のテストプログラムのそれぞれを複数の動作周波数において実行した結果を参照する。複数のテストプログラムを実行した結果は、例えば、情報格納領域130に記憶されるものであってよい。そして、特徴情報管理部111は、テストプログラム内の各ループに含まれる命令のうち、最内ループに含まれる命令の種類毎の数(出現回数)を含む最内ループ特徴情報131を取得する。また、特徴情報管理部111は、テストプログラム内の各ループに含まれる命令のうち、最内ループ以外のループに含まれる命令の種類毎の数(出現回数)を含む他ループ特徴情報132を取得する。
さらに、特徴情報管理部111は、テストプログラムを動作させた複数の動作周波数のうち、テストプログラムを実行した際の消費電力量が最小であった動作周波数を示す周波数情報133を取得する。そして、特徴情報管理部111は、最内ループ特徴情報131と、他ループ特徴情報132と、周波数情報133とを複数のテストプログラム毎に対応付けた対応情報142を作成し、情報格納領域130に記憶する。
なお、特徴情報管理部111は、例えば、 テストプログラム内のループに含まれるCPU命令に関する情報である命令情報134を作成し、作成した命令情報134に基づき、最内ループ特徴情報131及び他ループ特徴情報132を作成する。最内ループ特徴情報131、他ループ特徴情報132、周波数情報133及び命令情報134の具体例については後述する。
特徴情報取得部112は、第1プログラムの実行前において、第1プログラムに対応する最内ループ特徴情報(以下、第1最内ループ特徴情報131aとも呼ぶ)及び他ループ特徴情報(以下、第1他ループ特徴情報132aとも呼ぶ)を取得する。なお、以下、第1最内ループ特徴情報131aと第1他ループ特徴情報132aとを合わせて第1プログラム特徴情報141aとも呼ぶ。
動作周波数推測部113は、情報格納領域130に記憶されたプログラム特徴情報141のうち、第1プログラム特徴情報141aに含まれる情報と最も近い情報を含むプログラム特徴情報(以下、第2プログラム特徴情報141bとも呼ぶ)を特定する。そして、動作周波数推測部113は、情報格納領域130に記憶された周波数情報133のうち、第2プログラム特徴情報141bと対応する周波数情報を、第1プログラムを実行する際の消費電力量が最小である周波数情報(以下、第1周波数情報133aまたは第1動作周波数133aとも呼ぶ)として推測する。
なお、動作周波数推測部113は、情報格納領域130に記憶されたプログラム特徴情報141のうち、第1プログラム特徴情報141aに含まれる情報との一致率が所定の閾値よりも大きい情報が存在しない場合、第1周波数情報133aの推測を中止するものであってよい。
特徴情報作成部114は、テストプログラム内のループのうち、最内ループ以外の各ループに含まれる命令の種類毎の命令の数に、各ループの深さに応じた重み付け情報135をそれぞれ乗算する。そして、特徴情報作成部114は、重み付け情報135を乗算して算出した値に、命令の種類毎に加算することにより、他ループ特徴情報132を作成する。
開発者通知部115は、情報格納領域130に記憶されたプログラム特徴情報141に、第2プログラム特徴情報141bが存在しない場合に、その旨を開発者に通知する。
[第1の実施の形態の概略]
次に、第1の実施の形態の概略について説明する。図9及び図10は、第1の実施の形態における動作周波数決定処理の概略を説明するフローチャートである。また、図11から図14は、第1の実施の形態における動作周波数決定処理の概略を説明する図である。図11から図14を参照しながら、図9及び図10の動作周波数決定処理について説明を行う。
[情報記憶処理の概略]
初めに、動作周波数決定処理のうち、プログラム特徴情報141を情報格納領域130に記憶する処理(以下、情報記憶処理とも呼ぶ)について説明を行う。
管理ノード1は、図9に示すように、テストプログラムの実行タイミングまで待機する(S1のNO)。テストプログラムの実行タイミングとは、例えば、新たなシステムが構築されたタイミングであってよい。
そして、テストプログラムの実行タイミングになった場合(S1のYES)、管理者は、対象システム10において、複数の動作周波数によるテストプログラムの実行を行う。そして、管理ノード1は、テストプログラム内の各ループに含まれる命令のうち、最内ループに含まれる命令の種類毎の数を含む最内ループ特徴情報131を、テストプログラム毎に取得する(S2)。また、管理ノード1は、この場合、テストプログラム内の各ループに含まれる命令のうち、最内ループ以外のループに含まれる命令の種類毎の数を含む他ループ特徴情報132を、テストプログラム毎に取得する(S3)。
さらに、管理ノード1は、この場合、テストプログラムの実行を行った複数の動作周波数のうち、テストプログラムを実行した際の消費電力量が最小であった動作周波数を示す周波数情報133を、テストプログラム毎に取得する(S4)。そして、管理ノード1は、図11に示すように、最内ループ特徴情報131及び他ループ特徴情報132(プログラム特徴情報141)と周波数情報133とを、テストプログラム毎に対応付けて作成した対応情報142を情報格納領域130に記憶する(S5)。
すなわち、プログラム(例えば、テストプログラムや第1プログラム)の実行に伴うシステム全体の消費電力量は、プログラムの実行に伴うCPUの消費電力量に依存する。そして、プログラムの実行に伴うCPUの消費電力量は、プログラム実行時におけるCPUの動作によって決まる。そのため、管理ノード1は、テストプログラム内の各ループに含まれる命令に関する記述を解析し、その解析結果であるプログラム特徴情報141とテストプログラムの消費電力最小周波数である周波数情報133とを対応させて対応情報142を作成する。
これにより、管理ノード1は、後述するように、第1プログラムのプログラム特徴情報141aと、情報格納領域130に記憶されたプログラム特徴情報141とを比較することが可能になる。
なお、第1プログラムが多重化配列を含む場合、第1プログラム内のループが多重化する。そして、第1プログラムの実行に伴って実行される演算は、最も深さが深いループである最内ループに集中する。そのため、管理ノード1は、S2の処理において、最内ループに関する情報である最内ループ特徴情報131の取得を行う。
管理ノード1は、S3の処理において、最内ループ特徴情報131のみでなく、他ループに関する情報である他ループ特徴情報132の取得を行う。そして、管理ノード1は、S5の処理において、最内ループ特徴情報131のみでなく、他ループ特徴情報132を周波数情報133と対応させることにより、対応情報142を作成する。
[動作周波数推測処理の概略]
次に、動作周波数決定処理のうち、第1プログラムを実行する際に消費電力量を最小にする動作周波数を推測する処理(以下、動作周波数推測処理とも呼ぶ)について説明を行う。
管理ノード1は、図10に示すように、第1プログラムの実行タイミングまで待機する(S11のNO)。第1プログラムの実行タイミングとは、例えば、計算ノード群2において第1プログラムが実行される前のタイミングである。
そして、第1プログラムの実行タイミングになった場合(S11のYES)、管理ノード1は、第1プログラムの実行前において、第1プログラムに対応するプログラム特徴情報である第1プログラム特徴情報141aを取得する(S12)。
さらに、管理ノード1は、情報格納領域130に記憶されたプログラム特徴情報141のうち、S12で取得した第1プログラム特徴情報141aに含まれる情報と最も近い情報を含む第2プログラム特徴情報141bを特定する(S13)。そして、管理ノード1は、図12に示すように、情報格納領域130に記憶された周波数情報133のうち、S13で特定した第2プログラム特徴情報141bと対応する周波数情報133を、第1周波数情報133aとして推測する(S14)。
すなわち、管理ノード1は、第1プログラムが作成された際に、第1プログラム内の各ループに含まれる命令に関する記述を解析し、その解析結果である第1プログラム特徴情報141aを取得する。その後、管理ノード1は、テストプログラムのうち、第1プログラム特徴情報141aの内容に最も近いプログラム特徴情報141に対応するテストプログラムを特定する。そして、管理ノード1は、特定したテストプログラムに対応する周波数情報133を、第1プログラムの第1周波数情報133aとして推測する。これにより、管理ノード1は、計算ノード群2において第1プログラムの初回実行を行うことなく、第1プログラムの第1周波数情報133aを推測することが可能になる。
このように、管理ノード1は、プログラム特徴情報141(最内ループ特徴情報131及び他ループ特徴情報132)と周波数情報133とを、複数のテストプログラム毎に対応付けて情報格納領域130に記憶する特徴情報管理部111を有する。また、管理ノード1は、第1プログラムの実行前において、第1プログラムに対応するプログラム特徴情報である第1プログラム特徴情報141aを取得する情報取得部112を有する。さらに、管理ノード1は、プログラム特徴情報141のうち、第1プログラム特徴情報141aに含まれる情報と最も近い情報を含む第2プログラム特徴情報141bと対応する周波数情報133を、第1プログラムの第1周波数情報133aとして推測する動作周波数推測部113と、を有する。
これにより、開発者は、第1プログラムの初回実行を行うことなく、第1プログラムの消費電力最小周波数(第1周波数情報133a)を決定することが可能になる。
[プログラム実行時の条件が第1周波数情報の推測結果に与える影響]
ここで、各プログラム実行時の条件が第1周波数情報133aの推測結果に与える影響について説明を行う。
上記のように、第1プログラムの初回実行を行うことなく第1周波数情報133aの推測を行う場合(第1プログラムの静的解析を行う場合)、推測される第1周波数情報133aは、第1プログラムの実行時の条件等によって、推測結果が変わらないものである必要がある。具体的に、第1周波数情報133aは、例えば、第1プログラムの実行時において用いられる配列のサイズ(以下、単に配列サイズとも呼ぶ)の大きさに依らず、推測結果が同じになる必要がある。
この点、第1プログラムの配列サイズがプログラムを実行するCPUのキャッシュサイズよりも大きく、プログラムの実行時においてページングが発生するページングサイズよりも小さい場合、第1周波数情報133aの推測結果、すなわち、消費電力最小周波数は、配列サイズによってほぼ変わらない。
すなわち、第1プログラムの配列サイズがページングサイズよりも大きい場合、第1プログラムの実行時におけるページングの発生頻度によって、第1プログラムの実行に伴う消費電力量は変化する。これは、ページングのためのディスクの回転待ちやシーク動作待ち等が、タイミングにより処理時間が変化するためである。また、第1プログラムの配列サイズがCPUのキャシュサイズよりも小さい場合、CPUのキャッシュメモリに対するヒットミスの発生頻度は、配列データの演算ではヒットミスは基本的に発生しないが、OS等の第1プログラム以外のプログラム(以下、他のプログラムとも呼ぶ)の動作の影響によりヒットミスが発生する。また、他のプログラムによるヒットミスは、演算ループのサイクルに比べ低頻度で発生するため、測定の度に消費電力量が変化するなどの影響を与える。したがって、配列サイズがページングサイズよりも大きい場合、または、配列サイズがCPUのキャシュサイズよりも小さい場合、第1周波数情報133aの推測結果、すなわち、消費電力最小周波数は、測定のタイミングによって変化する可能性がある。
一方、第1プログラムの配列サイズがCPUのキャッシュサイズよりも大きく、かつ、ページングサイズよりも小さい場合、最内ループの配列データの演算処理において、配単位時間に発生するキャッシュメモリのヒットミスの回数は高頻度であり、かつ、単位時間当たりの発生回数は、ほぼ一定になる。また、ヒットミスは、OSなど他のプロセスの影響でも発生するが、配列データの演算ループにおけるヒットミスより低頻度である。そのため、この場合、第1周波数情報133aの推測結果、すなわち、消費電力最小周波数は、第1プログラムの配列サイズに影響を受けない。以下、CPUのキャッシュサイズよりも大きく、かつ、ページングサイズよりも小さい範囲内において、配列サイズの変化させた場合のプログラムの実行時における動作周波数と消費電力量との関係について説明を行う。
なお、分散メモリ型のHPCシステムでは、一般的に、演算する配列データのサイズは、キャッシュよりも大きい。また、分散メモリ型のHPCシステムでは、一般的に、性能低下を防ぐため、ページングが発生しないように、分散する計算ノード数を決定される。
図13及び図14は、CPUのキャッシュサイズよりも大きく、かつ、ページングサイズよりも小さい範囲内において、配列サイズを変化させた場合のプログラムの実行時における動作周波数と消費電力量との関係を説明する図である。図13及び図14に示すグラフにおいて、横軸は、動作周波数(GHz)を示しており、縦軸は、動作周波数が「2.0(GHz)」である場合における消費電力量を「1.0」とした場合の相対消費電力量を示している。なお、図13は、図2で説明したテストプログラムAの配列サイズを変化させた場合における動作周波数と相対消費電力量との関係を説明する図である。また、図14は、図3で説明したテストプログラムBの配列サイズを変化させた場合における動作周波数と相対消費電力量との関係を説明する図である。
図13及び図14に示すように、各図に示す2つの折れ線グラフが示す相対消費電力量は、対応する動作周波数の値に依らず概ね近い値を取る。例えば、図13に示す例において、図13に示す2つの折れ線グラフが示す消費電力最小周波数は、ともに「1.2(GHz)」である。
したがって、第1プログラムの利用者は、配列サイズがプログラムを実行するCPUのキャッシュサイズよりも大きく、プログラムの実行時においてページングが発生するページングサイズよりも小さくなるように、分割するノード数を調整する必要がある。
[第1の実施の形態の詳細]
次に、第1の実施の形態の詳細について説明する。図15から図18は、第1の実施の形態における動作周波数決定処理の詳細を説明するフローチャートである。また、図19から図30は、第1の実施の形態における動作周波数決定処理の詳細を説明する図である。図19から図30を参照しながら、図15から図18の動作周波数決定処理を説明する。
[情報記憶処理の詳細]
初めに、情報記憶処理の詳細について説明を行う。図15は、第1の実施の形態における情報記憶処理の詳細を説明するフローチャートである。
特徴情報管理部111は、図15に示すように、テストプログラムの実行タイミングまで待機する(S21のNO)。そして、テストプログラムの実行タイミングになった場合(S21のYES)、管理者は、対象システム10において、複数の動作周波数によるテストプログラムの実行を行う。そして、特徴情報管理部111は、テストプログラム内のループに含まれる各命令に関する情報である命令情報134をテストプログラム毎に作成する(S22)。以下、S22の処理の詳細について説明を行う。
[S22の処理の詳細]
図17は、S22の処理の詳細を説明するフローチャートである。特徴情報管理部111は、 テストプログラム内のループに含まれる各命令のアドレス、命令クラス及びオペランドに対応する値に基づき、テストプログラム毎の命令情報134を作成する(S41)。すなわち、特徴情報管理部111は、最内ループ特徴情報131及び他ループ特徴情報132を作成する前に、最内ループ特徴情報131及び他ループ特徴情報132を作成する際に参照する必要がある情報を含む命令情報134を作成する。なお、特徴情報管理部111は、例えば、テストプログラムのオブジェクトプログラムに対して逆アセンブルを行うことにより、命令情報134を作成するために必要な情報(テストプログラムに含まれる各命令のアドレス、命令クラス及びオペランドに対応する情報)を取得する。以下、S41の処理において作成された命令情報134の具体例について説明を行う。
[命令情報の具体例]
図19から図22は、命令情報134の具体例を説明する図である。なお、図19から図22は、S41の処理においてテストプログラム毎に作成された命令情報134のうち、ある1つのテストプログラムに関する命令情報134を説明する図である。
図19に示す命令情報134は、命令情報134に含まれる各情報を識別する「項番」と、テストプログラムに含まれる各命令の格納位置を示す「アドレス」と、各命令の種類を示す「命令クラス」とを項目として有する。また、図19に示す命令情報134は、各命令を実行する際に用いる情報を格納する「オペランド」と、テストプログラム内における各命令が含まれるループの深さを格納する「ループ深さ」を項目として有する。なお、図19の命令情報134における「ループ深さ」には、初期値である「0」が設定されている。
「命令クラス」には、例えば、CPUの分岐命令または条件付分岐命令に対応する「000」、CPUのコール命令に対応する「010」が設定される。また、「命令クラス」には、例えば、レジスタアクセスを伴うCPUのコピー命令、論理演算命令、整数加減算命令、整数掛算命令、整数割算命令にそれぞれ対応する「020」、「030」、「040」、「050」、「060」が設定される。また、「命令クラス」には、例えば、メモリアクセスを伴うCPUのコピー命令、論理演算命令、整数加減算命令、整数掛算命令、整数割算命令にそれぞれ対応する「021」、「031」、「041」、「051」、「061」が設定される。
同様に、「命令クラス」には、例えば、レジスタアクセスを伴うFPU(Floating Point Unit)のコピー命令、論理演算命令、浮動小数点加減算命令、浮動小数点掛算命令、浮動小数点割算命令にそれぞれ対応する「120」、「130」、「140」、「150」、「160」が設定される。また、「命令クラス」には、例えば、メモリアクセスを伴うFPUのコピー命令、論理演算命令、浮動小数点加減算命令、浮動小数点掛算命令、浮動小数点割算命令にそれぞれ対応する「121」、「131」、「141」、「151」、「161」が設定される。
さらに、「命令クラス」には、例えば、レジスタアクセスを伴うSIMD(Single Instruction Multiple Data)機構のコピー命令、論理演算命令、SIMD加減算命令、SIMD掛算命令、SIMD割算命令、SIMD複合命令にそれぞれ対応する「220」、「230」、「240」、「250」、「260」、「270」が設定される。また、「命令クラス」には、例えば、メモリアクセスを伴うSIMD機構のコピー命令、SIMD論理演算命令、SIMD加減算命令、SIMD掛算命令、SIMD割算命令、SIMD複合命令にそれぞれ対応する「221」、「231」、「241」、「251」、「261」、「271」が設定される。
すなわち、テストプログラムに含まれる各命令の実行に伴う消費電力量は、各命令の実行時に動作するCPU等の部位の規模や構造の違いによって定まる。具体的に、例えば、加減算と掛け算とでは、動作する回路の規模(例えば、トランジスタ数)の違いから、掛け算を実行した場合の消費電力量の方が、加減算を実行した場合の消費電力量よりも大きい。また、例えば、整数演算と浮動小数点演算とでは、浮動小数点演算を実行した場合の消費電力量の方が、整数演算を実行した場合の消費電力量よりも大きい。さらに、例えば、メインメモリに多用されるDRAM(Dynamic Random Access Memory)とレジスタに多用されるSRAM(Static Random Access Memory)とでは、構成部品数についてはSRAMの方が多いが、DRAMはコンデンサのリフレッシュが必要になる。そのため、DRAMへのアクセスを伴う命令を実行した場合の消費電力量の方が、SRAMへのアクセスを伴う命令を実行した場合の消費電力量よりも消費電力量が大きい。
そのため、各命令の実行に伴う消費電力量は、命令の種類毎(実行時に同じ部位が動作する命令毎)に分類することが可能になる。一方で、全ての命令の実行に伴う実際の消費電力量を測定等することにより取得することは、処理負担等からの観点から困難である。
そこで、特徴情報管理部111は、命令情報134を作成する際に、テストプログラムに含まれる各命令を命令の種類毎に分類することにより、命令情報134に、各テストプログラムの実行時における消費電力量の特性を特定するための情報を設定する。そして、動作周波数推測部113は、後述するように、第1プログラムの作成等が行われた際に、命令情報134に基づいて作成された最内ループ特徴情報131及び他ループ特徴情報132を参照する。
これにより、動作周波数推測部113は、後述するように、第1周波数情報133aを推測することが可能になる。また、特徴情報管理部111は、例えば、テストプログラムに含まれる各命令の実行に伴う実際の消費電力量を取得する必要がなくなる。
具体的に、図19に示す命令情報134において、「項番」が「1」である情報には、「アドレス」として「4004e8」が設定されており、「命令クラス」として「021(メモリアクセスを伴うCPUのコピー命令)」が設定されている。なお、オブジェクトプログラムには、オペランドとしてアクセスするメモリアドレスが指定されているが、命令情報134ではメモリアドレスの考慮は不要であるため、記載を省略している。
また、図19に示す命令情報134において、「項番」が「1」である情報の「オペランド」には、通常レジスタ番号や即値が指定されているが、命令情報134における考慮は不要のため、記載を省略している。さらに、図19に示す命令情報134において、「ループ深さ」には、初期値である「0」が設定されている。
なお、以下、「オペランド」には、「命令クラス」が「000(CPUの分岐命令または条件付分岐命令)」、もしくは「命令クラス」が「010(CPUのサブルーチンコール命令)」である場合に限り、ジャンプ先またはコール先の命令の「アドレス」を示す情報が設定されるものとして説明を行う。したがって、図19に示す命令情報134においては、「項番」が「11」、「13」及び「15」である情報の「オペランド」にのみ情報が設定されている。図19に含まれる他の情報については説明を省略する。
なお、上記「命令クラス」の分類は、CPUアーキテクチャの違いや、同一CPUアーキテクチャでも設計の違いに依存しており、さらに、詳細に分類が必要な場合や、分類をまとめて少なくできる場合や、SIMDなどの機能的な分類の追加や削除が必要な場合があるため、上記分類に限定されるものではない。基本的には、似た消費電力量のクラスはまとめることが可能であり、消費電力量がある程度異なる命令はクラスを分ける必要がある。
図17に戻り、特徴情報管理部111は、S41で作成した命令情報134に含まれる情報を参照する(S42)。具体的に、特徴情報管理部111は、命令情報134に含まれる情報を先頭から順に1行分ずつ参照する。そして、特徴情報管理部111は、参照した情報の「命令クラス」が「000(CPUの分岐命令または条件付分岐命令)」であるか否かを判定する(S43)。
その結果、参照した情報の「命令クラス」が「000」である場合(S43のYES)、特徴情報管理部111は、参照した情報の「アドレス」に設定された値が「オペランド」に設定された値よりも大きいか否かを判定する(S44)。そして、「アドレス」に設定された値が「オペランド」に設定された値よりも大きい場合(S44のYES)、特徴情報管理部111は、「オペランド」に設定された値から「アドレス」に設定された値に対応する情報の「ループ深さ」に設定された値をカウントアップする(S45)。
すなわち、CPUの分岐命令または条件付分岐命令において、「アドレス」に設定された値が「オペランド」に設定された値よりも大きい場合、特徴情報管理部111は、「アドレス」に設定された値が「オペランド」に設定された値までを範囲とするループが存在すると判定する。そのため、特徴情報管理部111は、この場合、「オペランド」に設定された値が「アドレス」である情報から現在参照している情報(CPUの分岐命令または条件付分岐命令に対応する情報)までの「ループ深さ」に設定された値に「1」を加算する。これにより、命令情報134は、テストプログラムに含まれる各命令のループの深さに関する情報を保持することが可能になる。
なお、「アドレス」に設定された値が「オペランド」に設定された値よりも大きい場合でも、実際には、ループではなく通常の処理の流れとして分岐を行う場合も考えられる。これは、オブジェクトプログラムを詳細に解析することにより判別することができる。しかし、一般的には、消費電力量を支配するループ内であり、通常の処理の流れとしての分岐は少ない。また、通常の処理の流れとしての分岐を行う場合であっても、その処理の流れに含まれる命令数は少ない場合が多い。そのため、本実施の形態において、「アドレス」に設定された値が「オペランド」に設定された値よりも大きい場合は、ループが存在しているものと判定するものとする。
一方、参照した情報の「命令クラス」が「000」でない場合(S43のNO)、または、「アドレス」に設定された値が「オペランド」に設定された値よりも大きくない場合(S44のNO)、特徴情報管理部111は、S45の処理を実行しない。
そして、特徴情報管理部111は、S42の処理において、S41で作成した各命令情報134に含まれる情報の全てを参照したか否かについて判定を行う(S46)。その結果、S41で作成した各命令情報134に含まれる情報の全てを参照していない場合(S46のNO)、特徴情報管理部111は、S42以降の処理を再度実行する。一方、S41で作成した各命令情報134に含まれる情報の全てを参照している場合(S46のYES)、特徴情報管理部111は、S22の処理を終了する。以下、S42からS46の処理の具体例について説明を行う。
[S42からS46の処理の具体例]
図19に示す命令情報134において、特徴情報管理部111は、「項番」が「1」である情報から順に参照する(S42、S46のNO)。そして、「項番」が「1」から「10」である情報の「命令クラス」が「000」ではないため(S43のNO)、特徴情報管理部111は、S44及びS45の処理を行わない。
次に、特徴情報管理部111は、「項番」が「11」である情報を参照する(S46のNO、S42)。その結果、「項番」が「11」である情報の「命令クラス」が「000」であるため(S43のYES)、特徴情報管理部111は、「アドレス」の値である「400525」が、「オペランド」の値である「40050a」よりも大きいか否を判定する(S44)。そして、「アドレス」の値が「オペランド」の値よりも大きいため(S44のYES)、特徴情報管理部111は、「アドレス」が「40050a」である情報から「アドレス」が「400525」である情報の「ループ深さ」に設定された値に「1」を加算する(S45)。したがって、特徴情報管理部111は、図20の下線部分に示すように、「項番」が「7」である情報から「項番」が「11」である情報の「ループ深さ」に設定された値に「1」を加算する。
続いて、特徴情報管理部111は、「項番」が「12」である情報を参照する(S46のNO、S42)。そして、「項番」が「12」である情報の「命令クラス」が「000」ではないため(S43のNO)、特徴情報管理部111は、S44及びS45の処理を行わない。
その後、特徴情報管理部111は、「項番」が「13」である情報を参照する(S46のNO、S42)。その結果、「項番」が「13」である情報の「命令クラス」が「000」であるため(S43のYES)、特徴情報管理部111は、「アドレス」の値である「400540」が、「オペランド」の値である「4004fb」よりも大きいか否を判定する(S44)。そして、「アドレス」の値が「オペランド」の値よりも大きいため(S44のYES)、特徴情報管理部111は、「アドレス」が「4004fb」である情報から「アドレス」が「400540」である情報の「ループ深さ」に設定された値に「1」を加算する(S45)。そのため、特徴情報管理部111は、図21の下線部分に示すように、「項番」が「5」である情報から「項番」が「13」である情報の「ループ深さ」に設定された値に「1」を加算する。
続いて、特徴情報管理部111は、「項番」が「14」である情報を参照する(S46のNO、S42)。そして、「項番」が「14」である情報の「命令クラス」が「000」ではないため(S43のNO)、特徴情報管理部111は、S44及びS45の処理を行わない。
その後、特徴情報管理部111は、「項番」が「15」である情報を参照する(S46のNO、S42)。その結果、「項番」が「15」である情報の「命令クラス」が「000」であるため(S43のYES)、特徴情報管理部111は、「アドレス」の値である「40054c」が、「オペランド」の値である「4004f6」よりも大きいか否を判定する(S44)。そして、「アドレス」の値が「オペランド」の値よりも大きいため(S44のYES)、特徴情報管理部111は、「アドレス」が「4004f6」である情報から「アドレス」が「40054c」である情報の「ループ深さ」に設定された値に「1」を加算する(S45)。そのため、特徴情報管理部111は、図22の下線部分に示すように、「項番」が「4」である情報から「項番」が「15」である情報の「ループ深さ」に設定された値に「1」を加算する。
続いて、特徴情報管理部111は、「項番」が「16」である情報を参照する(S46のNO、S42)。そして、「項番」が「16」である情報の「命令クラス」が「000」ではないため(S43のNO)、特徴情報管理部111は、S44及びS45の処理を行わない。その後、命令情報134に含まれる全ての情報が取得済になったため、特徴情報管理部111は、S22の処理を終了する(S46のYES)。
図15に戻り、特徴情報管理部111は、S22で作成した命令情報134より、最内ループに含まれる各命令の出現回数を含む最内ループ特徴情報131をテストプログラム毎に作成する(S23)。以下、最内ループ特徴情報131の具体例について説明を行う。
[最内ループ特徴情報の具体例]
図23は、最内ループ特徴情報131の具体例を説明する図である。図23に示す最内ループ特徴情報131は、図22に示す命令情報134に基づいて作成された情報である。すなわち、図23に示す最内ループ特徴情報131は、図22に示す命令情報134のループに含まれる命令に関する情報(「ループ深さ」が「1」から「3」である情報)のうち、「ループ深さ」が「3」である情報(最内ループに関する情報)に基づく情報である。
図23に示す最内ループ特徴情報131は、最内ループ特徴情報131内の情報を識別する「項番」と、各命令の種類を示す「命令クラス」と、各命令の種類毎の出現回数を示す「出現回数」とを項目として有する。
具体的に、図22に示す命令情報134に含まれる情報のうち、「ループ深さ」が「3」である情報(「項番」が「7」から「11」である情報)の「命令クラス」には、それぞれ「020」、「020」、「030」、「021」及び「000」が設定されている。そのため、特徴情報管理部111は、図23に示すように、「命令クラス」が「000」、「020」、「021」及び「030」である情報の「出現回数」に、それぞれ「1」、「2」、「1」及び「1」を設定する。
図15に戻り、特徴情報管理部111は、S22で作成した命令情報134より、最内ループ以外のループに含まれる各命令の出現回数を含む他ループ特徴情報132をテストプログラム毎に作成する(S24)。以下、他ループ特徴情報132の具体例について説明を行う。
[他ループ特徴情報の具体例]
図24は、他ループ特徴情報132の具体例を説明する図である。図24に示す他ループ特徴情報132は、図22に示す命令情報134に基づいて作成された情報である。すなわち、図24に示す他ループ特徴情報132は、図22に示す命令情報134のループに含まれる命令に関する情報(「ループ深さ」が「1」から「3」である情報)のうち、「ループ深さ」が「1」及び「2」である情報に基づく情報である。
図24に示す他ループ特徴情報132は、図23で説明した最内ループ特徴情報131と同じ項目を有している。具体的に、図22に示す命令情報134に含まれる情報のうち、「ループ深さ」が「1」である情報(「項番」が「4」、「14」及び「15」である情報)の「命令クラス」には、それぞれ「020」、「021」及び「000」が設定されている。また、図22に示す命令情報134に含まれる情報のうち、「ループ深さ」が「2」である情報(「項番」が「5」、「6」、「12」及び「13」である情報)の「命令クラス」には、それぞれ「020」、「020」、「020」及び「000」が設定されている。そのため、特徴情報管理部111は、図24に示すように、「命令クラス」が「000」、「020」及び「021」である情報の「出現回数」に、それぞれ「2」、「4」及び「1」を設定する。
なお、命令情報134に独立した複数のループに関する情報が含まれている場合、特徴情報管理部111は、例えば、それぞれの最内ループのうち、「ループ深さ」に設定された値が大きい方のループ(ループ深さが深い方のループ)を最内ループとするものであってよい。
図15に戻り、特徴情報管理部111は、各サンプルプログラムを動作させた複数の動作周波数のうち、テストプログラムを実行した際の消費電力量が最小であった動作周波数を示す周波数情報133をテストプログラム毎に作成する(S25)。以下、周波数情報133の具体例について説明を行う。
[周波数情報の具体例]
図25は、周波数情報133の具体例を説明する図である。図25に示す周波数情報133において、周波数情報133に含まれる各情報を識別する「項番」と、テストプログラムを実行した際の消費電力量が最小であった動作周波数を格納する「動作周波数」とを項目として有する。具体的に、図25に示す周波数情報133において、「項番」が「1」である情報には、「動作周波数情報」として「1.4(GHz)」が設定されている。
図15に戻り、特徴情報管理部111は、S23等で作成した最内ループ特徴情報131及び他ループ特徴情報132を含むプログラム特徴情報141と、S25で作成した周波数情報133とをテストプログラム毎に対応付けた対応情報142を作成する(S26)。そして、特徴情報管理部111は、作成した対応情報142を情報格納領域130に記憶する(S26)。以下、対応情報142に具体例について説明を行う。
[対応情報の具体例]
図26は、対応情報142の具体例を説明する図である。図26に示す対応情報142は、対応情報142に含まれる各情報を識別する「項番」と、各命令の種類を示す「命令クラス」と、最内ループ特徴情報131の「出現回数」に設定された値が設定される「最内ループ特徴情報」とを項目として有する。また、図26に示す対応情報142は、他ループ特徴情報132の「出現回数」に設定された値が設定される「他ループ特徴情報」と、周波数情報133に設定された値が設定される「動作周波数」とを項目として有する。なお、図26に示す対応情報142において、「項番」が「1」である情報は、図23で説明した最内ループ特徴情報131と、図24で説明した他ループ特徴情報132と、図25で説明した周波数情報133とに対応する情報である。
具体的に、図23に示す最内ループ特徴情報131において、「命令クラス」が「000」、「020」、「021」及び「030」である情報の「出現回数」には、それぞれ「1」、「2」、「1」及び「1」が設定されている。そのため、特徴情報管理部111は、図26の対応情報142に示すように、「項番」が「1」である情報の「命令クラス」が「000」、「020」、「021」、「030」及び「031」である情報の「最内ループ特徴情報」に、それぞれ「1」、「2」、「1」、「1」及び「0」を設定する。
同様に、図24に示す他ループ特徴情報132において、「命令クラス」が「000」、「020」及び「021」である情報の「出現回数」には、それぞれ「2」、「4」及び「1」が設定されている。そのため、特徴情報管理部111は、図26の対応情報142に示すように、「項番」が「1」である情報の「命令クラス」が「000」、「020」、「021」、「030」及び「031」である情報の「最内ループ特徴情報」に、それぞれ「2」、「4」、「1」、「0」及び「0」を設定する。
さらに、図25に示す周波数情報133の「動作周波数」には、「1.4(GHz)」が設定されている。そのため、特徴情報管理部111は、図26の対応情報142に示すように、「項番」が「1」である情報の「動作周波数」に「1.4(GHz)」を設定する。
すなわち、特徴情報管理部111は、図26に示す対応情報142を作成することにより、最内ループ特徴情報131と、他ループ特徴情報132と、周波数情報133とをテストプログラム毎に対応させた状態で管理することが可能になる。そのため、動作周波数推測部113は、後述するように、第1プログラムの第1最内ループ特徴情報131a及び第1他ループ特徴情報132aに基づき、第1プログラムの第1周波数情報133aを推測することが可能になる。
[動作周波数推測処理の詳細]
次に、動作周波数推測処理の詳細について説明を行う。図16は、第1の実施の形態における動作周波数推測処理の詳細を説明するフローチャートである。
特徴情報取得部112は、図16に示すように、第1プログラムの実行タイミングまで待機する(S31のNO)。その後、第1プログラムの実行タイミングになった場合(S31のYES)、特徴情報取得部112は、第1プログラム内のループに含まれる各命令に関する情報である第1命令情報134aを作成する(S32)。なお、S32の処理の詳細は、図17で説明したS22の処理の詳細と同じ内容であるため説明を省略する。以下、第1命令情報134aの具体例について説明を行う。
[第1命令情報の具体例]
図27は、第1命令情報134aの具体例を説明する図である。図27に示す第1命令情報134aは、図19で説明した命令情報134と同じ項目を有する。具体的に、図27に示す第1命令情報134aにおいて、「項番」が「1」である情報には、「アドレス」として「4006d2」が設定されており、「命令クラス」として「021(メモリアクセスを伴うCPUのコピー命令)」が設定されている。また、図27に示す第1命令情報134aにおいて、「項番」が「1」である情報の「オペランド」は、情報が設定されていない状態であり、「ループ深さ」には、初期値である「0」が設定されている。図27に含まれる他の情報については説明を省略する。
図16に戻り、特徴情報取得部112は、S32で作成した第1命令情報134aより、最内ループに含まれる各命令の出現回数を含む第1最内ループ特徴情報131aに作成する(S33)。以下、第1最内ループ特徴情報131aの具体例について説明を行う。
[第1最内ループ特徴情報の具体例]
図28は、第1最内ループ特徴情報131aの具体例を説明する図である。図28に示す第1最内ループ特徴情報131aは、図27に示す第1命令情報134aに基づいて作成された情報である。すなわち、図28に示す第1最内ループ特徴情報131aは、図27に示す命令情報134aに含まれる情報のうち、「ループ深さ」が「2」である情報(最内ループに関する情報)に基づいて作成された情報である。
図28に示す第1最内ループ特徴情報131aは、図23で説明した最内ループ特徴情報131と同じ項目を有する。具体的に、図27に示す第1命令情報134aに含まれる情報のうち、「ループ深さ」が「2」である情報(「項番」が「4」から「6」である情報)の「命令クラス」には、それぞれ「020」、「020」及び「000」が設定されている。そのため、特徴情報取得部112は、図28に示すように、「命令クラス」が「000」及び「020」である情報の「出現回数」に、それぞれ「1」及び「2」を設定する。
図16に戻り、特徴情報取得部112は、S32で作成した第1命令情報134aより、最内ループ以外のループに含まれる各命令の出現回数を含む第1他ループ特徴情報132aを作成する(S34)。以下、第1他ループ特徴情報132aの具体例について説明を行う。
[第1他ループ特徴情報の具体例]
図29は、第1他ループ特徴情報132aの具体例を説明する図である。図29に示す第1他ループ特徴情報132aは、図27に示す第1命令情報134aに基づいて作成された情報である。すなわち、図29に示す第1他ループ特徴情報132aは、図27に示す第1命令情報134aに含まれる情報のうち、「ループ深さ」が「1」である情報に基づいて作成された情報である。
図29に示す第1他ループ特徴情報132aは、図23で説明した最内ループ特徴情報131と同じ項目を有している。具体的に、図27に示す第1命令情報134aに含まれる情報のうち、「ループ深さ」が「1」である情報(「項番」が「2」、「3」及び「7」から「9」である情報)の「命令クラス」には、それぞれ「020」、「031」、「021」、「020」及び「000」が設定されている。そのため、特徴情報取得部112は、図29に示すように、「命令クラス」が「000」、「020」、「021」及び「031」である情報の「出現回数」に、それぞれ「1」、「2」、「1」及び「1」を設定する。
図16に戻り、特徴情報取得部112は、S26で記憶されたプログラム特徴情報141のうち、S33及びS34で取得した第1プログラム特徴情報141aに含まれる情報と最も近い情報を含む第2プログラム特徴情報141bを特定する(S25)。これにより、特徴情報取得部112は、後述するように、第2プログラム特徴情報141bと対応付けて記憶された周波数情報133を、第1プログラムの実行に伴う消費電力量を最も小さくする第1周波数情報133aとして推測することが可能になる。
具体的に、特徴情報取得部112は、例えば、図30に示すように、第1最内ループ特徴情報131aと、第1他ループ特徴情報132aとを含む第1対応情報142aを作成する。以下、第1対応情報142aの具体例について説明を行う。
[第1対応情報の具体例]
図30は、第1対応情報142aの具体例を説明する図である。図30に示す第1対応情報142aは、第1対応情報142aに含まれる各情報を識別する「項番」と、各命令の種類を示す「命令クラス」と、最内ループ特徴情報131の「出現回数」に設定された値が設定される「最内ループ特徴情報」とを項目として有する。また、図30に示す第1対応情報142aは、他ループ特徴情報132の「出現回数」に設定された値が設定される「他ループ特徴情報」を項目として有する。なお、図30に示す第1対応情報142aにおいて、「項番」が「1」である情報は、図28で説明した第1最内ループ特徴情報131aと、図29で説明した第1他ループ特徴情報132aとに対応する情報である。
そして、特徴情報取得部112は、図26で説明した対応情報142のうち、「最内ループ特徴情報」及び「他ループ特徴情報」に設定された情報が、第1対応情報142の「最内ループ特徴情報」及び「他ループ特徴情報」に設定された情報と最も近い情報を取得する。
具体的に、図26に示す対応情報142に含まれる情報のうち、「最内ループ特徴情報」及び「他ループ特徴情報」に設定された情報の第1対応情報142aに対する一致率が最も高い情報は、「項番」が「3」である情報である。そのため、特徴情報取得部112は、例えば、図26に示す対応情報142のうち、第2プログラム特徴情報141bとして「項番」が「3」である情報を特定する。
図16に戻り、特徴情報取得部112は、S26で記憶された周波数情報133のうち、S35で特定した第2プログラム特徴情報141bと対応する周波数情報133を、第1プログラムの実行に伴う消費電力量を最小にする第1周波数情報133aとして推測する(S36)。
具体的に、図26に示す例において、特徴情報取得部112は、「項番」が「3」である情報(S35の処理で特定した情報)の「動作周波数」である「1.6(GHz)」を特定する。これにより、特徴情報取得部112は、第1プログラムの第1周波数情報133aを推測することが可能になる。
なお、S35の処理において、対応情報142に含まれる情報のうち、第2プログラム特徴情報141bが存在しないと判定された場合、開発者通知部115は、動作周波数推測処理を中止し、その旨を開発者に通知するものであってもよい。
[第2の実施の形態]
次に、第2の実施の形態における情報記憶処理について説明を行う。図31は、第2の実施の形態における他ループ特徴情報132の具体例を説明する図である。
第2の実施の形態における情報記憶処理は、他ループ特徴情報132を作成する際に、命令情報134に含まれる「ループ深さ」に設定された情報を考慮する。具体的に、特徴情報管理部111は、「ループ深さ」に設定された各情報に対し、「ループ深さ」に設定された情報毎に定められた重み付けを付けることにより、「出現回数」に設定すべき情報を決定する。これにより、特徴情報管理部111は、例えば、「ループ深さ」に設定された値が大きい命令ほど、「出願回数」に設定される情報を大きくすることが可能になる。
例えば、「ループ深さ」が「2」であるループと、「ループ深さ」が「3」であるループとで、静的解析で同一数の演算命令が検出された場合、実行時には同じ数の命令を実行するのではなく、「ループ深さ」が「3」であるループの方が、そのループの回数を掛けた命令数を実行することになる。すなわち、「ループ深さ」が「2」であるループの命令の出現回数と、「ループ深さ」が「3」であるループの命令の出現回数とを、同一回とすることは現実の状況に沿わない。そのため、ループ深さが異なる場合、静的解析で求められた命令数に、ループの実行回数に応じた係数を掛ける必要がある。しかしながら、ループの実行回数は、プログラムを実行することにより、判定可能になるものである。そのため、静的分析においては、ループの実行回数の判定を行うことができない。
そこで、本実施の形態における静的解析では、ループ深さに従った重み付けを行う。これにより、特徴情報管理部111は、ループ深さが深いほど演算の出現が実行される回数が多くなり、「出願回数」に設定される情報を大きくすることが可能になる。
なお、第2の実施の形態における情報記憶処理は、第1の実施の形態における情報記憶処理と比較して、S24の処理のみが異なる。そのため、以下、第2の実施の形態におけるS24の処理についての説明を行う。
[第2の実施の形態におけるS24の処理]
図18は、第2の実施の形態におけるS24の処理を説明するフローチャートである。特徴情報管理部111は、S22で作成した命令情報134に基づき、最内ループ以外の各ループに含まれる各命令の出現回数に、各ループの深さに応じた重み付け係数をそれぞれ乗算する(S51)。そして、特徴情報管理部111は、S51で算出した値を命令の種類毎にそれぞれ加算する(S52)。
この場合、特徴情報管理部111は、例えば、底を「2」がであり、指数を「「ループ深さ」に設定された情報」である値を重み付け係数とするものであってよい。すなわち、この場合、「ループの深さ」が「0」である情報の重み付け係数は「2」になり、「ループの深さ」が「1」である情報の重み付け係数は「2」になり、「ループの深さ」が「2」である情報の重み付け係数は「2」になる。
具体的に、図22に示す命令情報134において、例えば、「命令クラス」が「020」である情報のうち、「ループ深さ」が「1」である情報の数は「1」であり、「ループ深さ」が「2」である情報の数は「3」である。そのため、特徴情報管理部111は、この場合、「ループ深さ」が「1」である情報の数である「1」に、重み付け係数である「2」した値と、「ループ深さ」が「2」である情報の数である「3」に、重み付け係数である「2」した値とを加算した「14」を算出する。
そして、特徴情報管理部111は、図31に示すように、「命令クラス」が「020」である情報(「項番」が「2」である情報)に対応する「出現回数」に、「14」を設定する。図31の他の情報については説明を省略する。これにより、特徴情報管理部111は、他ループ特徴情報132を作成する際に、命令情報134に含まれる「ループ深さ」に設定された情報を反映させることが可能になる。
なお、特徴情報管理部111は、情報格納領域130に記憶された重み付け情報135(開発者等が管理ノード1に予め設定した情報)が示す値を、重み付け係数として利用するものであってもよい。
[第3の実施の形態]
次に、第3の実施の形態における情報記憶処理及び動作周波数推測処理について説明を行う。図32は、第3の実施の形態におけるニューラルネットワークの具体例を説明する図である。
第3の実施の形態における情報記憶処理及び動作周波数推測処理は、ニューラルネットワークを用いることにより、最内ループ特徴情報131と、他ループ特徴情報132と、周波数情報133との記憶を行う。
ニューラルネットワークは、人間の脳における神経回路の情報処理を模擬した計算手法であり、既知の入力情報と出力情報との関係を学習し、未学習の入力情報から出力情報を推測することに使用される。なお、第3の実施例では、例えば、ニューラルネットワークモデルとして階層型ニューラルネットワーク、学習方法として教師付き学習方法であるバックプロパゲーション法を採用する。
具体的に、第3の実施の形態における特徴情報管理部111(ニューラルネットワークで構成される特徴情報管理部111)は、最内ループ特徴情報131に含まれる命令の種類のそれぞれに対応する入力ユニット(図32における「000(最内)」から「031(最内)」と記載された白抜きの丸)を有する。また、第3の実施の形態における特徴情報管理部111は、他ループ特徴情報132に含まれる命令の種類のそれぞれに対応する入力ユニット(図32における「000(他)」から「031(他)」と記載された白抜きの丸)を有する。さらに、第3の実施の形態における特徴情報管理部111は、テストプログラムを実行した際の複数の動作周波数のそれぞれに対応する出力ユニット(図32における「1.2(GHz)」から「2.0(GHz)」と記載された白抜きの丸)を有する。
具体的に、特徴情報管理部111は、例えば、図23で説明した最内ループ特徴情報131における「出現回数」に設定された値と、図24で説明した他ループ特徴情報132における「出現回数」に設定された値を、ニューラルネットワークの入力側教師データとして学習する。また、特徴情報管理部111は、図25で説明した周波数情報133における「動作周波数」に設定された値に対応する出力ユニットに、「1」(以下、第1の情報とも呼ぶ)を出力側教師データとして学習させ、図25で説明した周波数情報133における「動作周波数」に設定された値以外の値に対応する出力ユニットに、「0」(以下、第2の情報とも呼ぶ)を出力側教師データとして学習する。
一方、第3の実施の形態における特徴情報取得部112は、第1最内ループ特徴情報131a及び第1他ループ特徴情報132aにおける「出現回数」に設定された値を、それぞれ対応する情報管理部111に入力する。そして、第3の実施の形態における特徴情報管理部111は、出力ユニットから出力される情報を、第1プログラムの第1周波数情報133aとして推測する。
すなわち、プログラム特徴情報141には、第1プログラム特徴情報141aと同じ内容を有する情報が存在しない場合がある。そして、この場合、特徴情報取得部112は、単純比較によっては第1周波数情報133aを推測することができない。
そこで、第3の実施の形態における特徴情報管理部111は、最内ループ特徴情報131と、他ループ特徴情報132と、周波数情報133とをニューラルネットワークに学習させることによって記憶する。これにより、第3の実施の形態における特徴情報取得部112は、第1プログラム特徴情報141aと同じ内容を有する情報が存在しない場合であっても、ニューラルネットワークの汎化機能により、学習した周波数情報133のうち、第1周波数情報133aとして最も適した周波数情報を取得することが可能になる。したがって、特徴情報取得部112は、第1プログラム特徴情報141aと同じ内容を有する情報がプログラム特徴情報141に存在しない場合であっても、第1周波数情報133aの推測を行うことが可能になる。
以上の実施の形態をまとめると、以下の付記のとおりである。
(付記1)
複数のサンプルプログラムのそれぞれを複数の動作周波数において実行した結果に基づき、サンプルプログラム内のループに含まれる命令のうち、最内ループに含まれる命令の種類毎の数を含む最内ループ特徴情報と、サンプルプログラム内のループに含まれる命令のうち、前記最内ループ以外のループに含まれる命令の種類毎の数を含む他ループ特徴情報とを含むプログラム特徴情報と、前記複数の動作周波数のうち、サンプルプログラムを実行した際の消費電力量が最小であった動作周波数を示す最小動作周波数とを、前記複数のサンプルプログラム毎に対応付けて記憶する情報記憶部と、
前記サンプルプログラム以外のプログラムである第1プログラムの実行前において、前記第1プログラムに対応する前記プログラム特徴情報である第1プログラム特徴情報を取得する情報取得部と、
前記情報記憶部に記憶された前記プログラム特徴情報のうち、取得した前記第1プログラム特徴情報に含まれる情報と最も近い情報を含む第2プログラム特徴情報を特定し、前記情報記憶部に記憶された前記最小動作周波数のうち、特定した前記第2プログラム特徴情報と対応する動作周波数を、第1プログラムを実行する際の消費電力量が最小である第1動作周波数として推測する動作周波数推測部と、を有する、
ことを特徴とする計算機。
(付記2)
付記1において、
前記動作周波数推測部は、前記情報記憶部に記憶された前記プログラム特徴情報のうち、各プログラム特徴情報に含まれる情報と、前記第1プログラム特徴情報に含まれる情報との一致率が最も高いプログラム特徴情報を、第2プログラム特徴情報として特定する、
ことを特徴とする計算機。
(付記3)
付記1において、
前記動作周波数推測部は、前記情報記憶部に記憶された前記プログラム特徴情報のうち、各プログラム特徴情報に含まれる情報と、前記第1プログラム特徴情報に含まれる情報との一致率が所定の閾値よりも大きい情報が存在しない場合、前記第2プログラム特徴情報に対応する動作周波数の推測を中止する、
ことを特徴とする計算機。
(付記4)
付記1において、
前記情報記憶部は、前記プログラム特徴情報を入力側教師データとし、前記最小周波数を出力側教師データとして、ニューラルネットワークに学習させることによって情報の記憶を行う、
ことを特徴とする計算機。
(付記5)
付記4において、
前記ニューラルネットワークは、前記最内ループ特徴情報に含まれる命令の種類及び前記他ループ特徴情報に含まれる命令の種類のそれぞれに対応する複数の入力ユニットと、前記複数の動作周波数のそれぞれに対応する複数の出力ユニットとを有し、
前記情報記憶部は、前記最内ループ特徴情報に含まれる命令の種類毎の数と、前記他ループ特徴情報に含まれる命令の種類毎の数とを前記複数の入力ユニットから入力し、前記複数の出力ユニットのうち、前記最小動作周波数に対応する出力ユニットに第1の情報を入力し、前記複数の出力ユニットのうち、前記最小動作周波数以外の動作周波数に対応する出力ユニットに第2の情報を入力する、
ことを特徴とする計算機。
(付記6)
付記1において、さらに、
サンプルプログラム内のループのうち、前記最内ループ以外のループに含まれる命令の種類毎の命令の数に、各ループの深さに応じた重み付け係数をそれぞれ乗算し、前記命令の種類毎に加算することにより、前記他ループ特徴情報を作成する他ループ特徴情報作成部と、を有する、
ことを特徴とする計算機。
(付記7)
付記1において、
前記命令の種類は、前記命令を実行した場合の消費電力量の差異によって区分けされる、
ことを特徴とする計算機。
(付記8)
付記7において、
前記消費電力量は、前記命令のそれぞれが実行される際に動作するプロセッサ内の部位の構造及び規模によって決定される、
ことを特徴とする計算機。
(付記9)
付記7において、
前記命令の種類は、レジスタアクセスを行う命令とメモリアクセスを行う命令とによって区分けされた同一の命令を含む、
ことを特徴とする計算機。
(付記10)
複数のサンプルプログラムのそれぞれを複数の動作周波数において実行した結果に基づき、サンプルプログラム内のループに含まれる命令のうち、最内ループに含まれる命令の種類毎の数を含む最内ループ特徴情報と、サンプルプログラム内のループに含まれる命令のうち、前記最内ループ以外のループに含まれる命令の種類毎の数を含む他ループ特徴情報とを含むプログラム特徴情報と、前記複数の動作周波数のうち、サンプルプログラムを実行した際の消費電力量が最小であった動作周波数を示す最小動作周波数とを、前記複数のサンプルプログラム毎に対応付けて記憶し、
前記サンプルプログラム以外のプログラムである第1プログラムの実行前において、前記第1プログラムに対応する前記プログラム特徴情報である第1プログラム特徴情報を取得し、
前記情報記憶部に記憶された前記プログラム特徴情報のうち、取得した前記第1プログラム特徴情報に含まれる情報と最も近い情報を含む第2プログラム特徴情報を特定し、前記情報記憶部に記憶された前記最小動作周波数のうち、特定した前記第2プログラム特徴情報と対応する動作周波数を、第1プログラムを実行する際の消費電力量が最小である第1動作周波数として推測する、
ことを特徴とする動作周波数決定方法。
(付記11)
コンピュータに、
複数のサンプルプログラムのそれぞれを複数の動作周波数において実行した結果に基づき、サンプルプログラム内のループに含まれる命令のうち、最内ループに含まれる命令の種類毎の数を含む最内ループ特徴情報と、サンプルプログラム内のループに含まれる命令のうち、前記最内ループ以外のループに含まれる命令の種類毎の数を含む他ループ特徴情報とを含むプログラム特徴情報と、前記複数の動作周波数のうち、サンプルプログラムを実行した際の消費電力量が最小であった動作周波数を示す最小動作周波数とを、前記複数のサンプルプログラム毎に対応付けて記憶し、
前記サンプルプログラム以外のプログラムである第1プログラムの実行前において、前記第1プログラムに対応する前記プログラム特徴情報である第1プログラム特徴情報を取得し、
前記情報記憶部に記憶された前記プログラム特徴情報のうち、取得した前記第1プログラム特徴情報に含まれる情報と最も近い情報を含む第2プログラム特徴情報を特定し、前記情報記憶部に記憶された前記最小動作周波数のうち、特定した前記第2プログラム特徴情報と対応する動作周波数を、第1プログラムを実行する際の消費電力量が最小である第1動作周波数として推測する、
処理を実行させることを特徴とする動作周波数決定プログラム。
1:管理ノード 1a:記憶部
2:計算ノード群 10:情報処理システム
11:開発者端末

Claims (7)

  1. 複数のサンプルプログラムのそれぞれを複数の動作周波数において実行した結果に基づき、サンプルプログラム内のループに含まれる命令のうち、最内ループに含まれる命令の種類毎の数を含む最内ループ特徴情報と、サンプルプログラム内のループに含まれる命令のうち、前記最内ループ以外のループに含まれる命令の種類毎の数を含む他ループ特徴情報とを含むプログラム特徴情報と、前記複数の動作周波数のうち、サンプルプログラムを実行した際の消費電力量が最小であった動作周波数を示す最小動作周波数とを、前記複数のサンプルプログラム毎に対応付けて記憶する情報記憶部と、
    前記サンプルプログラム以外のプログラムである第1プログラムの実行前において、前記第1プログラムに対応する前記プログラム特徴情報である第1プログラム特徴情報を取得する情報取得部と、
    前記情報記憶部に記憶された前記プログラム特徴情報のうち、取得した前記第1プログラム特徴情報に含まれる情報と最も近い情報を含む第2プログラム特徴情報を特定し、前記情報記憶部に記憶された前記最小動作周波数のうち、特定した前記第2プログラム特徴情報と対応する動作周波数を、第1プログラムを実行する際の消費電力量が最小である第1動作周波数として推測する動作周波数推測部と、を有する、
    ことを特徴とする計算機。
  2. 請求項1において、
    前記動作周波数推測部は、前記情報記憶部に記憶された前記プログラム特徴情報のうち、各プログラム特徴情報に含まれる情報と、前記第1プログラム特徴情報に含まれる情報との一致率が最も高いプログラム特徴情報を、第2プログラム特徴情報として特定する、
    ことを特徴とする計算機。
  3. 請求項1において、
    前記情報記憶部は、前記プログラム特徴情報を入力側教師データとし、前記最小周波数を出力側教師データとして、ニューラルネットワークに学習させることによって情報の記憶を行う、
    ことを特徴とする計算機。
  4. 請求項3において、
    前記ニューラルネットワークは、前記最内ループ特徴情報に含まれる命令の種類及び前記他ループ特徴情報に含まれる命令の種類のそれぞれに対応する複数の入力ユニットと、前記複数の動作周波数のそれぞれに対応する複数の出力ユニットとを有し、
    前記情報記憶部は、前記最内ループ特徴情報に含まれる命令の種類毎の数と、前記他ループ特徴情報に含まれる命令の種類毎の数とを前記複数の入力ユニットから入力し、前記複数の出力ユニットのうち、前記最小動作周波数に対応する出力ユニットに第1の情報を入力し、前記複数の出力ユニットのうち、前記最小動作周波数以外の動作周波数に対応する出力ユニットに第2の情報を入力する、
    ことを特徴とする計算機。
  5. 請求項1において、さらに、
    サンプルプログラム内のループのうち、前記最内ループ以外のループに含まれる命令の種類毎の命令の数に、各ループの深さに応じた重み付け係数をそれぞれ乗算し、前記命令の種類毎に加算することにより、前記他ループ特徴情報を作成する他ループ特徴情報作成部と、を有する、
    ことを特徴とする計算機。
  6. 複数のサンプルプログラムのそれぞれを複数の動作周波数において実行した結果に基づき、サンプルプログラム内のループに含まれる命令のうち、最内ループに含まれる命令の種類毎の数を含む最内ループ特徴情報と、サンプルプログラム内のループに含まれる命令のうち、前記最内ループ以外のループに含まれる命令の種類毎の数を含む他ループ特徴情報とを含むプログラム特徴情報と、前記複数の動作周波数のうち、サンプルプログラムを実行した際の消費電力量が最小であった動作周波数を示す最小動作周波数とを、前記複数のサンプルプログラム毎に対応付けて記憶し、
    前記サンプルプログラム以外のプログラムである第1プログラムの実行前において、前記第1プログラムに対応する前記プログラム特徴情報である第1プログラム特徴情報を取得し、
    前記情報記憶部に記憶された前記プログラム特徴情報のうち、取得した前記第1プログラム特徴情報に含まれる情報と最も近い情報を含む第2プログラム特徴情報を特定し、前記情報記憶部に記憶された前記最小動作周波数のうち、特定した前記第2プログラム特徴情報と対応する動作周波数を、第1プログラムを実行する際の消費電力量が最小である第1動作周波数として推測する、
    ことを特徴とする動作周波数決定方法。
  7. コンピュータに、
    複数のサンプルプログラムのそれぞれを複数の動作周波数において実行した結果に基づき、サンプルプログラム内のループに含まれる命令のうち、最内ループに含まれる命令の種類毎の数を含む最内ループ特徴情報と、サンプルプログラム内のループに含まれる命令のうち、前記最内ループ以外のループに含まれる命令の種類毎の数を含む他ループ特徴情報とを含むプログラム特徴情報と、前記複数の動作周波数のうち、サンプルプログラムを実行した際の消費電力量が最小であった動作周波数を示す最小動作周波数とを、前記複数のサンプルプログラム毎に対応付けて記憶し、
    前記サンプルプログラム以外のプログラムである第1プログラムの実行前において、前記第1プログラムに対応する前記プログラム特徴情報である第1プログラム特徴情報を取得し、
    前記情報記憶部に記憶された前記プログラム特徴情報のうち、取得した前記第1プログラム特徴情報に含まれる情報と最も近い情報を含む第2プログラム特徴情報を特定し、前記情報記憶部に記憶された前記最小動作周波数のうち、特定した前記第2プログラム特徴情報と対応する動作周波数を、第1プログラムを実行する際の消費電力量が最小である第1動作周波数として推測する、
    処理を実行させることを特徴とする動作周波数決定プログラム。
JP2015155254A 2015-08-05 2015-08-05 計算機、動作周波数決定プログラム及び動作周波数決定方法 Active JP6439623B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015155254A JP6439623B2 (ja) 2015-08-05 2015-08-05 計算機、動作周波数決定プログラム及び動作周波数決定方法
US15/204,266 US10025368B2 (en) 2015-08-05 2016-07-07 Computation apparatus and frequency determination method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015155254A JP6439623B2 (ja) 2015-08-05 2015-08-05 計算機、動作周波数決定プログラム及び動作周波数決定方法

Publications (2)

Publication Number Publication Date
JP2017033452A true JP2017033452A (ja) 2017-02-09
JP6439623B2 JP6439623B2 (ja) 2018-12-19

Family

ID=57988430

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015155254A Active JP6439623B2 (ja) 2015-08-05 2015-08-05 計算機、動作周波数決定プログラム及び動作周波数決定方法

Country Status (2)

Country Link
US (1) US10025368B2 (ja)
JP (1) JP6439623B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018142112A (ja) * 2017-02-27 2018-09-13 日本電気株式会社 クロック装置、中央演算処理装置、計数装置、計数方法及びプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013025508A (ja) * 2011-07-19 2013-02-04 Fujitsu Ltd 情報処理装置、制御プログラムおよび制御方法
JP2014167761A (ja) * 2013-02-28 2014-09-11 Toshiba Corp 環境評価装置、方法およびプログラム
JP2015099494A (ja) * 2013-11-19 2015-05-28 日本電気株式会社 情報処理装置、情報処理方法およびプログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101250329B1 (ko) 2002-11-26 2013-04-03 쇼와 덴코 가부시키가이샤 전극 재료, 및 제조방법 및 그 용도
JP4298988B2 (ja) 2002-12-02 2009-07-22 昭和電工株式会社 炭素材料の製造方法
JP4082706B2 (ja) 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
JP4231516B2 (ja) 2006-08-04 2009-03-04 株式会社日立製作所 実行コードの生成方法及びプログラム
JP2007305148A (ja) 2007-06-25 2007-11-22 Univ Waseda マルチプロセッサシステム
US7831608B2 (en) * 2008-02-28 2010-11-09 International Business Machines Corporation Service identification in legacy source code using structured and unstructured analyses
JP2013242604A (ja) 2010-09-10 2013-12-05 Fixstars Multi Core Labo Corp 実行モジュール最適化装置、実行モジュール最適化方法、およびプログラム
US8799693B2 (en) 2011-09-20 2014-08-05 Qualcomm Incorporated Dynamic power optimization for computing devices
JP6090850B2 (ja) * 2013-03-29 2017-03-08 Necソリューションイノベータ株式会社 ソースプログラム解析システム、ソースプログラム解析方法およびプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013025508A (ja) * 2011-07-19 2013-02-04 Fujitsu Ltd 情報処理装置、制御プログラムおよび制御方法
JP2014167761A (ja) * 2013-02-28 2014-09-11 Toshiba Corp 環境評価装置、方法およびプログラム
JP2015099494A (ja) * 2013-11-19 2015-05-28 日本電気株式会社 情報処理装置、情報処理方法およびプログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KENNETH HOSTE, 他5名: "Performance Prediction based on Inherent Program Similarity", PROCEEDINGS OF THE 15TH INTERNATIONAL CONFERENCE ON PARALLEL ARCHITECTURES AND COMPILATION TECHNIQUE, JPN6018040887, September 2006 (2006-09-01), US, pages 114-122 *
佐々木広、他4名: ""統計情報に基づく動的電源電圧制御手法"", 先進的計算基盤システムシンポジウム SACSIS2006, vol. 第2006巻 第5号, JPN6018040885, 22 May 2006 (2006-05-22), JP, pages 67−74 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018142112A (ja) * 2017-02-27 2018-09-13 日本電気株式会社 クロック装置、中央演算処理装置、計数装置、計数方法及びプログラム

Also Published As

Publication number Publication date
US10025368B2 (en) 2018-07-17
JP6439623B2 (ja) 2018-12-19
US20170038818A1 (en) 2017-02-09

Similar Documents

Publication Publication Date Title
Bailey et al. Adaptive configuration selection for power-constrained heterogeneous systems
CN107515663B (zh) 调整中央处理器内核运行频率的方法和装置
JP5859639B2 (ja) 異種コア用の自動負荷バランシング
US8533719B2 (en) Cache-aware thread scheduling in multi-threaded systems
Wang et al. Asymo: scalable and efficient deep-learning inference on asymmetric mobile cpus
Dao et al. A performance model for GPUs with caches
US8578355B1 (en) Scenario based optimization
KR20170054485A (ko) 운영체제에서의 휴리스틱 프로세서 전력 관리
CN108664367B (zh) 一种基于处理器的功耗控制方法及装置
Diener et al. Locality and balance for communication-aware thread mapping in multicore systems
Liang et al. Performance characterization of hadoop and data mpi based on amdahl's second law
Sundriyal et al. Modeling of the CPU frequency to minimize energy consumption in parallel applications
Hiebel et al. Machine learning for fine-grained hardware prefetcher control
Diener et al. Communication-aware process and thread mapping using online communication detection
Moradi et al. Adaptive performance modeling and prediction of applications in multi-tenant clouds
Hoffmann et al. Online machine learning for energy-aware multicore real-time embedded systems
JP6439623B2 (ja) 計算機、動作周波数決定プログラム及び動作周波数決定方法
Liu et al. A study on modeling and optimization of memory systems
Sundriyal et al. Runtime power-aware energy-saving scheme for parallel applications
Machina et al. Predicting cache needs and cache sensitivity for applications in cloud computing on cmp servers with configurable caches
Velásquez et al. BADCO: Behavioral Application-Dependent Superscalar Core Models
Park et al. RPPC: A holistic runtime system for maximizing performance under power capping
Farooqui et al. Accelerating graph applications on integrated GPU platforms via instrumentation-driven optimizations
US20230205517A1 (en) Automated use of computational motifs via deep learning detection
Alexandersson et al. Implementing online performance modelling in OpenMP—Adding an energy aware scheduler for increased energy efficiency

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181011

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181105

R150 Certificate of patent or registration of utility model

Ref document number: 6439623

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150