読者です 読者をやめる 読者になる 読者になる

情報は力ではない

VimとかC++とかCUDAとか。

cudaMemcpyでハマったことの覚え書き

CUDA

題名通り、cudaMemcpyの際にハマったことの覚え書き。

構造体のメンバに構造体

まず次のコードを見てください(プログラムの一部のみです)。

 

今日ハマったコードはこれではないですが、同様の問題を含んでいます。

problem_create()はsizeof(problem)バイトをホストメモリに確保した後、メンバを初期化しproblem *を返します。

 

17行目でcudaMemcpy()を用いてpをdev_pにコピーしています。
これだとランタイムエラーが生じた。

なぜならdev_p->dist.costはp->dist.costをコピーしているからだ。
すなわちdev_p->dist.costはホストのアドレスを指していることになる。

今思うと何故これでいけると思っていたのか。恥ずかしい。
改めて勉強し直さないといけないなと感じた。