7

2 つの異なる openCl カーネルを作成し、nvidia プロファイラーを使用してそれらに関する情報を取得したところ、どちらもワークアイテムごとに 63 個のレジスタを使用していることがわかりました。

この数値を下げるために考えられるすべてのことを試しました (int を ushort に置き換え、{} 内で変数を宣言して、コンパイラーがそれらを取り除くことができる時期を示すようにしました) が、この 63 を変更することは不可能のようです!

それから、彼が書いたカーネルについて別の質問を見つけました...これもまた 63 個のレジスタを使用します。

もちろん、これは純粋な偶然かもしれませんが、背後に理由があるのか​​もしれません...使用されている特定の機能、ハードウェアの制限?誰か知っていますか?

4

2 に答える 2

0

最大。レジスタ/スレッドの数はハードウェアによって制限され、デバイスの「計算能力」に依存します。表 Compute Capabilitiesを見てください。

(これは NVidia に適用されます。他のベンダーには他の制限がある場合があります)。

于 2013-05-14T05:10:24.957 に答える