CUDA C プロジェクトでは、"p" という構造体の内部に float へのポインターがあります。これはデバイス メモリへのポインタであり、「p->deviceOutput」と呼ばれます。CUDA-GDB を使用して、実行中にこのポインターの内容を確認しています。印刷しようとすると、次のようになります。
(gdb) p *p->deviceOutput
$1 = 0
ご覧のとおり、print は int のようなものを返しますが、float ではありません。ポインターが float へのポインターであると確信しているので、この動作に本当に混乱しています。float 形式を指定しても役に立ちません。
(gdb) p/f *p->deviceOutput
$2 = 0
実際、GDB を使用しても同じ動作が得られます。私は Ubuntu 14.10 で作業しており、コードは -O0 および -g オプションを使用して nvcc でコンパイルされています。
何が起こっているのか、このメモリの場所を正しく調べるにはどうすればよいのか、誰か説明してもらえますか? ありがとう