cuda - cudaHost注册移动地址范围或复制到固定注册范围是否更快
问题描述
cudaHostRegister 移动地址范围(窗口)或复制到固定的注册地址范围是否更快?cudaHostRegister 固定主机内存(使可分页内存不可分页)以加速从主机到设备内存的传输。可以注册一个主机内存范围,然后传输,然后注册另一个范围,等等。或者,可以注册一个主机内存范围,复制到该范围并传输,然后使用第二个数据集重复该过程重新注册地址范围。
解决方案
主机注册过程(涉及 CUDA 与操作系统的交互)在所花费的时间方面成本很高。根据经验,它可能会花费与传输数据(一次)所花费的时间一样多的时间,有效地使传输数据所花费的时间增加一倍,第一次使用缓冲区。
因此,仅从性能的角度来看,注册一个缓冲区并使用它一次很少能带来显着的性能提升(但是,您可能仍然希望这样做,以启用诸如并发之类的其他事情)。
如果一个缓冲区将被重复使用,那么固定(即注册)缓冲区通常会带来性能优势,与固定单个连续区域并使用一次相比,该缓冲区的重用程度会随着缓冲区的重复使用而增加。但是,如果有必要,这并没有考虑将数据复制到固定缓冲区和从固定缓冲区复制数据的成本。
固定的好处(如果有的话)将根据您的特定使用模式以及您将与之比较的确切使用形式而有所不同。然而,重复一遍,与在传输中使用非固定内存相比,固定缓冲区并仅使用一次很少能显着提高性能。
推荐阅读
- javascript - 在 React Native 中添加新消息时,Firestore 侦听器从分页中删除消息
- algorithm - 给定多个图找到两个节点之间的最短距离
- php - 如何从多个 HTML 表单中获取 PHP 输入?
- swift - 如何在 Swift 中以错误标签格式向用户显示错误的本地化描述?
- wso2 - 如何为特定服务提供商上的特定用户定义 SSO 异常?
- html - 即使宽度为 100% 且高度为自动,也无法在移动设备中响应图像
- javascript - 想在js中匹配来自firestore数据库的电子邮件和密码
- pytest - pytest mock patch side_effect 与 pytest.mark.parametrize 一起使用时不会迭代
- linux - 如何从 Web 服务关闭 linux
- css - CSS 选择具有特定字体的所有文本