我有一个蒙特卡罗模拟,其中系统的状态是一个位串(大小为N),位随机翻转.为了加速模拟,修改了代码以使用CUDA.但是由于我需要从系统状态计算大量的统计数据(如N ^ 2),这部分需要在有更多内存的CPU上完成.目前算法如下所示:
loop
CUDA kernel making 10s of Monte Carlo steps
Copy system state back to CPU
Calculate statistics
Run Code Online (Sandbox Code Playgroud)
这是低效的,我希望内核持续运行,而CPU偶尔会查询系统状态并在内核继续运行时计算统计信息.
根据汤姆对这个问题的回答,我认为答案是双缓冲,但我无法找到解释或如何做到这一点的例子.
如何在Tom的CUDA/C++代码答案的第三段中设置双缓冲?