我想弄清楚是否使用cudaHostAlloc(或cudaMallocHost?)是适当的。CUDA零复制内存考虑事项
我想运行一个内核,我的输入数据超过了GPU上可用的数量。
我可以cudaMallocHost比GPU上有更多的空间吗?如果没有,并且可以说我分配了1/4我需要的空间(这将适合GPU),使用固定内存有什么好处吗?
我基本上还是要从1/4大小的缓冲区复制到我的全尺寸malloc'd缓冲区,这可能不会比只使用正常的cudaMalloc快吗?
这是典型的使用场景正确使用cudaMallocHost:
- 分配固定的主机内存(可以称之为“h_p”)
- 填入h_p与输入数据 -
- 获得设备的指针上的GPU使用该设备的指针修改阵列 -
- 使用h_p像正常,它现在已修改盒内的内容h_p
- 运行内核
所以 - 第4步到第5步之间没有任何复制对吧?
如果这是正确的,那么我就可以看到了优势,将适合在GPU上一下子至少
你似乎会问几个问题... – jmilloy 2011-02-16 22:25:56