cudaMemcpyでハマったことの覚え書き
題名通り、cudaMemcpyの際にハマったことの覚え書き。
構造体のメンバに構造体
まず次のコードを見てください(プログラムの一部のみです)。
今日ハマったコードはこれではないですが、同様の問題を含んでいます。
problem_create()はsizeof(problem)バイトをホストメモリに確保した後、メンバを初期化しproblem *を返します。
17行目でcudaMemcpy()を用いてpをdev_pにコピーしています。
これだとランタイムエラーが生じた。
なぜならdev_p->dist.costはp->dist.costをコピーしているからだ。
すなわちdev_p->dist.costはホストのアドレスを指していることになる。
今思うと何故これでいけると思っていたのか。恥ずかしい。
改めて勉強し直さないといけないなと感じた。