私のCUDAカーネルは 'theory'で計算されたスペースの2倍のスペースしか使用していないことに気付きました。例えばCUDA共有メモリが必要以上に2倍のスペースを占める
__global__ void foo()
{
__shared__ double t;
t = 1;
}
PTX情報を示しています。
ptxas情報:_Z3foovための機能性を、0バイトが、フレーム、0バイト流出格納、0バイト流出負荷をスタック
ptxas情報:4つのレジスタ、16バイトSMEM、32バイトを使用しCMEM [0]
しかし、二重の大きさのみ8
詳細例である:
__global__ void foo()
{
__shared__ int t[1024];
t[0] = 1;
}
ptxas info:使用された3つのレジスタ、8192バイトsmem、32バイトcmem [0]
誰かが理由を説明できますか?
@ Fr34K:実行時の設定は、コンパイラやアセンブラで行われた静的な代入*の大きさと関係がありますか? – talonmies
詳細が必要です。いくつのブロックを初期化しましたか? – Fr34K
@talonmies:説明をありがとう。私はその点を逃した。 :) – Fr34K