如何解决数据传输速度慢问题

我尝试用以下方法提高数据传输与拷贝的速度,但效果不明显,请教大家
1.使用流和异步,程序有问题,还没调通
2.使用了锁定内存pinned(page-locked)分配主机端存储器,但效果并不好
程序对比:
h_RawImg=(unsigned char )malloc(size); //2.8ms
cudaHostAlloc((void
*)&h_RawImg,size,cudaHostAllocWriteCombined); //38ms
cutilSafeCall(cudaMemcpyToArray(cuArray,0,0,h_RawImg,size,cudaMemcpyHostToDevice)); //–WriteCombined—1.22ms;–malloc—2.75ms
使用页锁定内存,虽然提高了从host到device的数据传输速度(1.22ms),但cudaHostAlloc函数分配内存比malloc耗时(38ms),所以使用锁定内存后,程序整体速度并没有改善3.使用cudaMallocHost()耗时37ms,malloc耗时2ms,那资料说使用cudaMallocHost()分配主机端存储器,可以获得更大的带宽,这种优化在哪里体现那?
4.使用zero-copy是从kernel直接访问内存,省去了主机端与设备端的数据拷贝。不知有没有人实验过,我的显卡是GeForce 8600 GT,计算能力是1.0,不支持zero-copy(1.2,1.3)

zero-copy:根据我的试验,效果很烂!不知道其他人的试验情况如何?

这异构计算的问题真让人烦啊!

:stuck_out_tongue:

还是使用流吧

可以提高编程性能啊