16

非常に単純な質問ですが、おそらく難しい答えです:

たとえば、並列合計/最小/最大/平均演算に SSE 命令を使用すると、他の命令 (単一の合計など) を実行するよりも多くの電力を消費しますか?

たとえば、ウィキペディアでは、この点に関する情報は見つかりませんでした。

私が見つけることができる答えの唯一のヒントはhere ですが、それは少し一般的であり、この点で公開された資料への参照はありません.

4

3 に答える 3

32

私は実際にこれについて数年前に研究を行いました。答えは、質問が正確に何であるかによって異なります。

今日のプロセッサーでは、消費電力は命令のタイプ (スカラーか SIMD か) ではあまり決定されず、次のようなその他すべてによって決まります。

  1. メモリ/キャッシュ
  2. 命令デコード
  3. OOE、登録ファイル
  4. そして他にもたくさん。

したがって、質問が次の場合:

他のすべての条件が等しい場合: SIMD 命令はスカラー命令よりも多くの電力を消費しますか。

このために、私はあえてそう言います。

私の大学院のプロジェクトの 1 つが最終的にこの答えになりました。 . (正確な数字は覚えていませんが。)

これは、SSE と AVX の間でコードが同一であるためです。命令の幅だけが異なっていました。そして、AVX バージョンでは作業が 2 倍になりました。

しかし、質問が次の場合:

コードをベクトル化して SIMD を使用すると、スカラー実装よりも多くの電力が消費されます。

ここには多くの要因が関係しているため、直接的な回答は避けます。

消費電力を削減する要因:

  • SIMD のポイントはパフォーマンスの向上であることを覚えておく必要があります。また、パフォーマンスを改善できれば、アプリの実行時間が短縮され、電力を節約できます。

  • アプリケーションと実装に応じて、SIMD は特定のタスクを実行するために必要な命令の数を減らします。これは、命令ごとに複数の操作を行っているためです。

消費電力を増加させる要因:

  • 前述のように、SIMD 命令は、同等のスカラー命令よりも多くの作業を行い、より多くの電力を使用できます。
  • SIMD を使用すると、スカラー コードには存在しないオーバーヘッド (シャッフルや並べ替え命令など) が発生します。これらも命令実行パイプラインを通過する必要があります。

それを分解する:

  • 命令が少ない -> それらを発行して実行するためのオーバーヘッドが少ない -> 消費電力が少ない
  • コードの高速化 -> 実行時間の短縮 -> 消費電力の削減
  • SIMD の実行にはより多くの電力が必要 -> より多くの電力

そのため、SIMD はアプリの所要時間を短縮することで電力を節約します。ただし、実行中は単位時間あたりの電力消費量が多くなります。どちらが勝つかは状況次第。

私の経験から、SIMD (またはその他の方法) から価値のあるスピードアップを得るアプリケーションの場合、通常は前者が勝ち、消費電力は下がります。

これは、最新の PC (ラップトップ、デスクトップ、サーバー) の電力消費において、ランタイムが支配的な要因になる傾向があるためです。その理由は、ほとんどの電力消費が CPU ではなく、マザーボード、RAM、ハード ドライブ、モニター、アイドル状態のビデオ カードなど、他のすべてのものにあるためです。これらのほとんどの消費電力は比較的固定されています。

私のコンピューターでは、オン (アイドル状態) にしておくだけで、prime95 や Linpack などの全コア SIMD ロードで描画できる量の半分以上を既に描画しています。したがって、SIMD/並列化によってアプリを 2 倍高速化できれば、ほぼ確実に電力を節約できます。

于 2013-11-01T08:18:46.143 に答える
7

Mystical の回答が示唆するように、SIMD コードはわずかに多くの電力を消費する傾向がありますが、問題がベクトル化に適している場合、適切に作成された SIMD コードは大幅に高速に実行されます。スピードアップは、ほとんどの場合、電力の増加よりも大きくなり、その結果、消費されるエネルギー量 (時間に対する電力の積分) が減少します。

これは、SIMD ベクトル化だけでなく、ほぼすべての最適化に広く当てはまります。高速なコードは高速であるだけでなく、(ほぼ普遍的に) エネルギー効率も向上します。

専門用語について: 人々は、本当に「エネルギー」について話したいときに、「パワー」について頻繁に話します。コンピューティングにおける消費電力は、電源を設計する場合 (明白な理由) または筐体を設計する場合 (熱として分散できるようにするために必要な電力量を知りたいため) にのみ関係があります。99.999% の人々はこれらの活動のいずれにも従事していないため、エネルギーを念頭に置いておきたいと考えています (計算 / エネルギーは、プログラムの効率の正しい尺度であるため)。

于 2013-11-04T03:27:25.297 に答える
3

これは、本当に知りたいことによって異なります。他のすべての消費電力 (メイン メモリなど) は気にせず、シングル コアのロジックの消費電力だけを知りたいプロセッサ設計者の考えの観点から、この質問に答えさせてください。 . そのときの答えは 2 つあります。

1.) 固定周波数の場合、より高速な結果をもたらす SIMD を備えたコアは、SIMD の実装が複雑になる (回路ロジック) ため、スカラー コアよりも多くのエネルギーを使用する可能性があります。

2.) スカラー コアが SIMD コアと同時に終了するように周波数を変更できる場合、SIMD コアははるかに少ないエネルギーを使用すると主張します。

編集:パワーはエネルギー/時間であるため、パワーという言葉をエネルギーに変更しました。比較するのに適切なのは、FLOPS/watt のようなものだと思います

説明させてください。プロセッサの電力は、C*V^2*fC が静電容量、V が電圧、f が周波数の場合に次のようになります。この論文「変換を使用した電力の最適化」を読むと、半分の周波数で 2 つのコアを使用しても、同じ時間で同じ計算を行う場合、全周波数で単一のコアの電力の 40% しか使用されないことを示すことができます。

SIMD や ILP (スーパースカラー) などの他の並列メソッドにも同じロジックが適用されると私は主張します。したがって、SIMD が実装されている場合、スカラー コアで周波数を上げる代わりに、はるかに少ないエネルギーを使用して同じ計算を同じ時間で実行できます (逆に言えば、プログラミングがはるかに困難になります)。

GPU 開発者は、この論文の原則を利用して、処理能力において Intel より数年先を行っています (ムーアの法則による)。それらは CPU よりも低い周波数で動作し、はるかに多くの「コア」を使用するため、同じ量の電気エネルギーでより多くの処理能力を得ることができます。

于 2013-11-01T12:26:44.093 に答える