使用cudaHost注册移动地址范围(窗口)或复制到固定的已注册地址范围是否更快? cudaHostRegister固定主机内存(使可分页的内存不可分页)以加速从主机到设备内存的传输。可以注册一个范围的主机存储器,然后进行传输,然后注册另一个范围,依此类推。或者,可以注册一个范围的主机存储器,复制到该范围并进行传输,然后对第二个数据集重复该过程而无需重新注册地址范围。
答案 0 :(得分:1)
就花费的时间而言,主机注册过程(涉及CUDA与操作系统的交互)是昂贵的。根据经验,第一次使用缓冲区可能会花费与传输数据所花费的时间(一次)相同的时间,实际上使传输数据所花费的时间加倍。
因此,仅从性能角度来看,注册缓冲区并使用一次很少会获得显着的性能优势(不过,您可能还是希望这样做,以实现诸如并发之类的其他功能)。
如果将缓冲区重复使用,则固定(即注册)缓冲区通常是性能上的胜利,与固定单个连续区域并使用一次相比,其收益随着缓冲区重用程度的增加而增加。但是,如果需要的话,这没有考虑将数据复制到固定缓冲区或从固定缓冲区复制数据的成本。
这里的好处,如果有的话,pinnning的,将根据您的具体使用模式各不相同,使用的正是形成你会比较它。然而,重复,钉扎的缓冲液,并用它正好一次很少是显著性能取胜,相比于在传送使用非固定内存。