6

占有率は、1 つの Stream Multiprocessor でサポートされる最大ワープ数を超えるアクティブなワープ数として定義されます。1 つの SM で 4 つのブロックが実行されているとします。各ブロックには 320 のスレッド、つまり 10 のワープがあるため、1 つの SM で 40 のワープがあります。1 つの SM の最大ワープが 48 (CC 2.x) であると仮定すると、占有率は 40/48 です。

しかし、1 つの SM で合計 320 * 4 のスレッドが実行されており、1 つの SM には 48 個の CUDA コアしかありません。占有率が 100% ではないのはなぜですか? 私はすべてのCUDAコアを使用しています...

私は何かが欠けていると確信しています...

4

1 に答える 1

10

占有率はコアとは何の関係もないからです。CUDA は、パイプライン化された SIMD スタイルのアーキテクチャです。48 個のコアは、パイプラインからワープ命令ごとに供給されます (実際には、デュアル発行されます)。命令パイプラインをフルに保つには、多くのワープが必要です。そうしないと、すべてのコアが停止します。そのため、占有率は、適切なパフォーマンスを達成するのに十分な並列作業を提供する特定のカーネルの能力を定量化するための便利な指標です。

于 2013-03-06T20:10:16.613 に答える