私の目標は、特別な状況に対応するグリーン アルゴリズムを開発して実装することです。同じアルゴリズムを 2 つ開発しました。
1つは大きな番号を持っています。メモリアクセス(ロードとストア)の。パターンは合体する場合もあれば、合体しない場合もあります。ほとんどのアクセスでキャッシュ障害が発生するという最悪のケースを想定しています。サンプル コード スニペット a) を参照してください。
もう1つは、大きな番号を持っていることです。以下のコード スニペット b) とほぼ同じです。
それぞれのケースで消費電力を見積もる方法を教えてください。どちらがエネルギー効率が高く、その理由は?
プラットフォーム:これらのコードは、Intel I3 プロセッサ、Windows 7、4 GB DRAM、3 MB キャッシュで実行します。
注: 外部パワー メーターは使用したくありません。また、コードが建設的な仕事をしていない場合は無視してください。これは、完全なアルゴリズムの一部にすぎないためです。
アップデート:
難しいですが、不可能ではありません。DRAM を読み取り、CPU の ALU で乗算を実行する際に発生するコストを十分に計算できます。唯一のことは、DRAM と CPU のエレクトロニクスの必要な知識が必要であり、現時点では不足しています。少なくとも最悪の場合、これは非常にうまく確立できると思います。最悪の場合は、結合されたアクセスがなく、コンパイラの最適化が行われないことを意味します。
DRAM にアクセスして float 乗算を実行するコストを見積もることができる場合、電流を見積もることができないのはなぜですか。また、私の投稿を参照してください。消費電力がどれくらいかを尋ねているのではなく、どちらのコードが消費電力が少ない/多いか、またはどちらがエネルギー効率が高いかを尋ねています。
a) for(i=0; i<1000000; i++)
{
a[i]= b[i]; //a, b floats in RAM.
{
b) for(i=1; i<1000000; i++)
{
float j= j * i; //j has some value. which is used later in the program , not
// shown here
{