スーパーコンピューティングの観点からは、CPU / GPUの負荷をパーセンテージで考えるのではなく、手元の問題で必要な操作の数を決定し、それをシステムのピークパフォーマンスと比較することをお勧めします。
CPU使用率が100%になっても、必ずしもシステムのすべてのパフォーマンスが得られるわけではありません。CPUは、多くの場合、同時に複数の異なること、たとえば分割と追加を実行できます。除算を早期に開始できる場合、追加と重複する可能性があります。ほとんどの場合、デスクトップCPUには、このような重複の恩恵を受けるためにステートメントを並べ替える順不同ユニットがあります。または、次のプログラムがある場合:
if (expr1)
expr2;
else
expr3;
再配列CPUは、3つの式を同時に計算し、そのうちの1つの結果を破棄しようとします。これにより、全体的に高速になります。プログラムに何らかのブロッカーがあり、並べ替えができない場合、CPUで使用するレーンは少なくなりますが、おそらく100%を示します。
次に、ベクトル演算であるCPUにSIMD機能があります。通常は同時に4つまたは8つの操作しか実行できないという意味で、GPGPU-lightに似ていますが、GPUは32または64のように動作します。
偽共有のようなものは、通常、Linuxのカーネル負荷として現れる同期コストが高くなる可能性があります。CPUは完全に使用されていますが、有効なスループットはあまりありません。
IBM Blue Gene / Qマシンでプログラミングを行いました。多くの階層レベル(旧式のBlue Gene / Lの概略図)があるため、効率的にプログラミングするのは困難です。パフォーマンスを引き出すには、SIMDおよびSMT(Intelはこのハイパースレッディングと呼んでいます)までの完全な階層を使用する必要があります。
そして、ネットワークはしばしばあなたを制限します。したがって、ネットワークを介して通信するのではなく、複数のCPUで同時に物事を計算する方が(ウォールクロック)時間で高速であることがわかります。これにより、CPUの負荷が増加し、プログラムの実行が高速になります。しかし、実際のプログラムのスループットは、生の数値から思われるほど良くありません。
GPUをミックスに追加すると、パフォーマンス全体を得るためにこのすべてを調整することがさらに難しくなります。これは、数か月以内にラティスQCD修士論文で始めることの1つになります。
NO-OP
sの無限ループを同時に実行することは簡単にできます。これにより、両方の負荷が100%になります。