我正在尝试使用工作线程写入 CUDA 主机内存(我在主线程中创建)。代码非常简单。我用
unsigned char* _new;
cudaHostAlloc(&_new, _size, cudaHostAllocPortable);
并将指针 _new 传递给另一个线程。但是,该线程在尝试写入时会创建内存冲突
memcpy(_new, _source, _size);
或者
cudaMemcpy(_new, _source, _size, cudaMemcpyHostToHost);
当我_new = new unsigned char[_size];
在同一个线程中使用或复制数据时,它可以工作。
有谁知道为什么会发生这种情况以及我该如何解决这个问题?