我需要在每次内核调用后将一个布尔值或整数值从设备复制到主机(我在for循环中调用相同的内核).也就是说,在每次内核调用之后,我需要将一个整数或一个布尔值发送回主机.做这个的最好方式是什么?
我应该将值直接写入RAM吗?或者我应该使用cudaMemcpy()?或者还有其他方法吗?每次内核启动后只复制1个整数会减慢我的程序吗?
与从 CPU 访问数据相比,将数据复制到 GPU 或从 GPU 复制数据要慢得多。如果您没有为此值运行大量线程,那么这将导致性能非常慢,请不要这样做。
您所描述的听起来像是一个串行算法,您的算法需要并行化才能使其值得使用 CUDA 来完成。如果你不能重写你的算法,成为单次写入多个数据到GPU,多个线程,单次将多个数据写入回CPU;那么你的算法应该在CPU上完成。
| 归档时间: |
|
| 查看次数: |
3785 次 |
| 最近记录: |