将整数从GPU复制到CPU

liz*_*liz 5 cuda

我需要在每次内核调用后将一个布尔值或整数值从设备复制到主机(我在for循环中调用相同的内核).也就是说,在每次内核调用之后,我需要将一个整数或一个布尔值发送回主机.做这个的最好方式是什么?

我应该将值直接写入RAM吗?或者我应该使用cudaMemcpy()?或者还有其他方法吗?每次内核启动后只复制1个整数会减慢我的程序吗?

koa*_*oan 0

与从 CPU 访问数据相比,将数据复制到 GPU 或从 GPU 复制数据要慢得多。如果您没有为此值运行大量线程,那么这将导致性能非常慢,请不要这样做。

您所描述的听起来像是一个串行算法,您的算法需要并行化才能使其值得使用 CUDA 来完成。如果你不能重写你的算法,成为单次写入多个数据到GPU,多个线程,单次将多个数据写入回CPU;那么你的算法应该在CPU上完成。

  • 我认为它可以是一个串行算法,内部由复杂的并行块组成。 (2认同)