3

何が良いですか?いくつかのステップでデータを処理する必要があり、2つのオプションがあるように見えます:1)1つの大きなカーネルを使用する2)各ステップに1つのカーネルでストリームを使用する

カーネルが実行されるまでにある程度の待ち時間がありますが、この場合は本当に重要ですか?大きなカーネルのレイテンシーは、いくつかの小さなカーネルのレイテンシーの合計と同じですか?

他の方法と比較して、一方の方法に利点はありますか?

みんなありがとう。

4

1 に答える 1

3

Fermiカードのカーネルの起動遅延は10usのオーダーであるため、心配する必要はありません。それは理にかなっています-ゲームでシーンをレンダリングするには、多くの異なるシェーダー(カーネル)を実行する必要があります。

カーネルは、処理するデータをグローバルメモリから読み取り、結果をグローバルメモリに書き戻す必要があります。したがって、それぞれの個別のカーネルは、完全な読み取り/書き込みサイクルを意味します。単一の読み取り/書き込みサイクルで囲まれたまま、大きなカーネルで複数のステップをチェーンできる場合は、処理を高速化できる可能性があります。

例として、操作A、B、Cを実行する必要がある場合、それらをチェーンするとREAD --A --B --C --WRITEが得られ、別々のカーネルではREAD --A --WRITE --READ --B --WRITE--READ-が得られます。 C-書き込み。

単一のカーネルを実行している場合でも、個別のステップを個別のデバイス機能に分割することで、コードを読みやすくすることができます。

于 2012-05-06T02:59:49.297 に答える