松尾の現在の研究テーマ
Last Update: 2016/12/09, Written by Hiroyuki Matsuo
研究内容の概要
プログラムやアルゴリズムの電力消費量と実行時間やメモリ使用量などとの関係を調査・整理する.
Energy Consumption Optimization(電力消費最適化)に関する研究.
そもそも「最適化」とは
ソフトウェア工学における最適化で考えなければならない様々な観点:
- 実行時間
- メモリ使用量
- プログラムサイズ
- 電力消費量
- …
すべてを最適にすることはできないため,ある観点を犠牲にして,別の観点を最適化することになる.
つまり,上記のような様々な観点の間での妥協点を探ることが「最適化」である.
近年の「最適化」に関する研究と,それに関する仮説
電力消費量の最適化に関する先行研究が増えてきている.
ところが,前述したように様々な観点を絡めて考察できているものは少ないのではないか.
つまり,以下のような仮説を考える.
電力消費量だけでなく,実行時間,メモリ使用量など,その他の観点を総合的に考慮している先行研究は少ないのではないか.
また,以下のような仮説も考える.
結局のところ,電力消費量を最適化するには,実行時間を最適化すればよいのではないか.
Research Questions
- [RQ1.] 電力消費量の最適化に関する先行研究の多くは,実行時間やメモリ使用量を考慮出来ていないのではないか.
- [RQ2.] [RQ1.] で確認した「“悪い”先行研究」について,実行時間やメモリ使用量を加味して実験し直すと,どのようなことが分かるか.
- [RQ3.] 電力消費量を最適化する(少なくする)には,実行時間を最適化すれば(短くすれば)よいのではないか.
- [RQ3a.] 実行時間は電力消費にどのように影響するのか.
- [RQ3b.] メモリ使用量は電力消費にどのように影響するのか.
やること
Step 1. 既存研究の調査([RQ1.])
電力消費量の最適化に関する先行研究のシステマティック・レビューを実施.
Empirical studies of agile software development: A systematic review に記載されている手法に基づき,以下の要領で論文の選定を行う.
- 電子ジャーナルデータベースを,後述するキーワードで検索.
- タイトルに基づき,関係のないものを排除.
- Abstract に基づき,関係のないものを排除.
- 残った論文について,内容を確認して分類.
検索クエリ(キーワード)は,次のような候補を考えている.
energy
,power
, …consumption
,aware
, …software
,source
,program
, …- 対象はハードウェアではなくソフトウェアなので注意
検索対象とする電子ジャーナルデータベースは,次の通り.
- ACM Digital Library
- IEEE Xplore
選定した論文の内容を確認し,以下のように分類.Excel ファイル等でまとめる.
Titles | Abstract | Stage 1 | Stage 2 | Stage 3 | Stage 4 |
---|---|---|---|---|---|
Energy… | We created… | o | o | o | o |
Green… | Power con-… | o | x | - | - |
Paper X | We search… | o | o | x | - |
… |
Titles | Abstract | Duration | Memory | … | Eval | Memo |
---|---|---|---|---|---|---|
A | Hoge | Level 2 | Level 2 | … | Bad | 電力消費,メモリ,速度すべてちゃんと考慮されている |
B | Fuga | Level 0 | Level 1 | … | Good | 実行時間のことが無視されている |
C | Piyo | Level 1 | Level 0 | … | Bad | 再現不可能 |
… |
なお,Eval の “Good” は,この研究にとって都合が良い(実行時間を考慮しておらず,かつ実験が再現可能,など)ことを表す.
また,”Level 0” はまったく議論されていない,”Level 1” は少し触れられているが議論が十分ではない,”Level 2” はよく議論されていることを表す.
Step 2. 先行研究の実験の再現,および独自実験の実施([RQ2.], [RQ3.])
先行研究の実験の再現
Step 1. で分類した結果 “Good” だった先行研究について,実行時間やメモリ使用量など,電力消費量以外の観点も加味して,再度実験を行う.
電力消費量の計測には,オリジナルツール eTracker (※プライベートリポジトリ)を用いる.
独自実験の実施
別途,独自に用意した実験も行う.
- メモリを大量に喰うが,速いアルゴリズム
- Bead sort など
- 演習 D のコンパイラも良い実験題材になりそう
- 同じ機能でも,実装によって消費電力が変わることのよい例になりそう
また,時間があれば,下記の各要素が電力消費量にどの程度影響するのか実験を行ってみると,面白い結果が得られそう.
- ディスク I/O
- Wi-Fi 通信
- ディスプレイへの出力
実験のポイント
[RQ3.] の実験が難しい.現状考えられる実験は,以下のようなもの.
- 同じ実行時間(オーダー)で,アルゴリズムが違う場合の電力消費量を比較する.
- つまり,入出力はまったく同じだが,その “how”(実装)が違うものを比較する.
その他
- 例外が見つかると面白い.
- 相関関係を表す近似式のようなものが分かれば嬉しい.
- \( \text{EnergyConsumption} = \text{Speed}^{a} + b \cdot \text{Memory} + \dots \)
本研究の最終的な結論(例)
消費電力を考慮した,電力-aware なプログラムを作る際は,結局のところ,実行時間を最適化するように作ればよい. ただし,I/O の影響は大変大きいため,...