【发布时间】:2023-04-04 20:32:01
【问题描述】:
我有一个被多次调用的 cuda 内核,它将一些值添加到分配大小为 N 的数组中。我使用设备变量跟踪插入的元素,我在其中应用 atomicAdd。
当添加值的数量接近 N 时,我希望能够知道它,以便我可以再次调用 cudaMalloc 并重新分配数组。最明显的解决方案是每次调用内核时对该设备变量执行 cudaMemcpy,从而跟踪主机中数组的大小。我想知道的是,是否有一种方法可以仅在值接近 N 时对主机执行 cudaMemcpy。
我想到的一个可能的解决方案是,如果我可以将 cudaError_t 返回值设置为 30 (cudaErrorUnknown),或者一些自定义错误,我可以稍后检查。但我还没有找到怎么做,我想这是不可能的。有什么方法可以做我想做的事,只有当设备发现内存不足时才执行 cudaMemcpy?
【问题讨论】:
标签: cuda