您可以尝试一些缓解PCIe瓶颈的方法:
请注意,这些技术都不会使传输更快,它们只会减少GPU等待数据到达的时间.
使用cudaMemcpyAsyncAPI函数,您可以启动传输,启动一个或多个不依赖于传输结果的内核,同步主机和设备,然后启动等待传输完成的内核.如果您可以构建算法,以便在传输过程中进行高效工作,那么异步副本是一个很好的解决方案.
使用cudaHostAllocAPI函数,您可以分配可以直接从GPU读取和写入的主机内存.更快的原因是需要主机数据的块只需要等待传输一 小部分数据.相反,通常的方法是使所有块等待,直到整个传输完成.映射内存实质上将大型单片传输分解为一堆或更小的复制操作,因此延迟减少.
您可以在CUDA编程指南的第3.2.6-3.2.7 节和CUDA最佳实践指南的第3.1 节中阅读有关这些主题的更多信息." OpenCL最佳实践指南"的第3章介绍了如何在OpenCL中使用这些功能.