草庐IT

c++ - cuda在gpu和主机之间统一内存

我正在编写一个基于cuda的程序,需要定期将一组项目从GPU传输到主机内存。为了保持进程异步,我希望使用cuda的UMA在主机内存中有一个内存缓冲区和标志(这样GPU和CPU都可以访问它)。GPU将确保标志已清除,将其项目添加到缓冲区,然后设置标志。CPU等待设置标志,从缓冲区中复制内容,然后清除标志。据我所知,这不会产生任何竞争条件,因为它会强制GPU和CPU轮流,始终读取和写入彼此相对的标志。到目前为止,我还没有能够让它工作,因为似乎确实存在某种竞争条件。我想出了一个具有类似问题的更简单的示例:#include__global__voiduva_counting_test(intn