-6

私の目標は、特別な状況に対応するグリーン アルゴリズムを開発して実装することです。同じアルゴリズムを 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    

  {
4

5 に答える 5

1

実際の消費電力を測定するには、電源に電力量計を追加する必要があります(ノートブックを使用している場合はバッテリーを取り外してください)。

システム全体の消費電力を測定することに注意してください。したがって、迷惑なパラメータ(他のシステムアクティビティ、つまり、ウイルス対策の更新、グラフィカルデスクトップ環境、インデックスサービス、(内部)ハードウェアデバイス)を避け、測定を繰り返し実行してください。 「バックグラウンド」消費をキャンセルするためにアルゴリズムを実行している場合と実行していない場合。可能であれば、組み込みシステムを使用してください。


アルゴリズムに関しては、実際のエネルギー効率は、Cコードだけでなく、コンパイラーのパフォーマンスや、周囲のシステムとの相互作用における実行時の動作にも依存します。ただし、これを支援するために開発者としてできるリソースを次に示します。

特に、上記の「チェックリスト」の「ツール」の段落を見てください。これは、(アプリケーションのプロファイリングに基づいて)大まかな見積もりに役立つ可能性のあるいくつかのツールをリストしているためです。それは(他のものを除いて)リストします:

  • パフォーマンス
  • PwrTest/Windowsドライバーキット
  • Windowsイベントビューア(タイマーティック変更イベント、Microsoft-Windows-Kernel-PowerDiagnosticログ)
  • Intel PowerInformer
  • Windows ETW(パフォーマンス監視フレームワーク)
  • インテルアプリケーションエネルギーツールキット
于 2012-06-13T09:17:04.920 に答える
1

コメント投稿者が指摘したように、パワーメーターを使用してみてください。最新のスーパースカラーアーキテクチャでは、生のアセンブリコードからでも電力使用量を見積もることは不可能ではないにしても困難です。

于 2012-06-13T09:08:22.497 に答える
0

さて、私は予備調査とエレクトロニクス専攻との議論を終えました。

大まかなアイデアは、次の 2 つの要素を考慮することで得られます。

1- 関連する電流: より多くの電流、より多くの消費電力。

2- クロック レートによる消費電力。消費電力は周波数の 2 乗で変化します。

スニペット a) では、DRAM とメモリはほとんど電流を消費しないため、それぞれの動作中の消費電力は非常に小さくなります。

  a[i]= b[i];

手術。上記の操作はデータの読み書きに他なりません。

また、メモリのクロッキングは通常、CPU に比べて非常に小さいです。CPU のクロックは 3 GHz ですが、メモリのクロックは約 133 MHz 程度です。(すべてのコンポーネントが定格クロックで動作しているわけではありません)。したがって、クロックが低いため、消費電力が低くなります。

スニペット b) では、より多くの計算を行っていることがわかります。クロック周波数が数桁高いため、これにはより多くの電力消費が伴います。

別の要因は、乗算自体が数桁高い数で構成されることです。データの読み書きと比較した場合のサイクル数 (メモリが結合されている場合)。

また、以下に示すように、一部のコードの消費電力 (「コード エネルギー」) を測定または大まかに把握するためのオプションがあると便利です (色はコードのエネルギー効率を表します。赤は非常に貧弱で、緑は緑です)。エネルギー効率が高い):

ここに画像の説明を入力

要するに、今日の技術を考えると、ソフトウェアがこのように電力を見積もることはそれほど難しくありません (そして、上記で説明した方法に加えて、他の多くのパラメーターを使用する可能性があります)。これは、グリーン アルゴリズムの迅速な開発と評価に役立ちます。

于 2012-06-16T06:57:19.827 に答える
0

CPU とメモリのみが関係している限り、消費電力は実行時間に比例すると見なすことができます。

これは 100% 正確ではないかもしれませんが、実際の測定なしで取得できる限り近いものです。

于 2012-06-13T09:12:33.600 に答える
0

いくつかの CPU 監視ツールを使用して、どのアルゴリズムが CPU をより加熱しているかを確認できます。確かなデータは得られませんが、消費電力に関してこれら 2 つのアルゴリズムに大きな違いがあるかどうかが示されます。

ここでは、主要な電力消費者は CPU であり、アルゴリズムは大量の I/O を必要としないと想定しています。

于 2012-06-13T09:16:20.573 に答える