ワーカー スレッドを使用して、メイン スレッドで作成した CUDA ホスト メモリに書き込もうとしています。このコードは非常に単純です。で記憶をつくる
unsigned char* _new;
cudaHostAlloc(&_new, _size, cudaHostAllocPortable);
ポインター _new を他のスレッドに渡します。ただし、このスレッドに書き込もうとすると、メモリ違反が発生します。
memcpy(_new, _source, _size);
また
cudaMemcpy(_new, _source, _size, cudaMemcpyHostToHost);
同じスレッドでデータを使用_new = new unsigned char[_size];
またはコピーすると、機能します。
なぜこれが起こるのか、どうすれば修正できるのか誰か知っていますか?