我刚刚开始使用 Julia 的 CUDArt 包来管理 GPU 计算。我想知道如何确保如果我从 gpu 中提取数据(例如 using to_host()
),我不会在对其执行所有必要的计算之前这样做。
通过一些实验,似乎to_host(CudaArray)
在更新特定的 CudaArray 时会滞后。那么,也许仅仅使用它就足以确保安全?但这似乎有点偶然。
现在,我正在使用该launch()
函数来运行我的内核,如包文档中所述。
CUDArt 文档给出了一个使用 Julia@sync
宏的示例,看起来很可爱。但是出于我的目的,@sync
我已经完成了我的“工作”,并准备在内核启动后立即继续launch()
,而不是一旦完成。据我了解launch()
- 没有办法改变这个特性(例如让它等待接收它“启动”的函数的输出)。
我怎样才能完成这样的同步?