首页 文章

我可以将现有的可分页内存转换为固定内存吗?

提问于
浏览
1

每当我在CUDA中使用固定内存时,这个问题就会浮现在我的脑海中 . 我已经在这个主题上搜索了很多,但没有找到任何东西 . 基本上我们必须执行两次数据传输才能使用固定内存:

Step1 - >可分页内存到固定内存

步骤2 - >将内存固定到设备内存

我也可以通过输入数据直接初始化固定内存并将其传输到GPU,这样可以节省Step1的传输时间 . 在我的情况下,我在GPU上处理非常大量的输入数据 . 过多的页面锁定内存可能会降低整体系统性能 . 所以我不能只在固定内存上进行整个分配 . 我必须迭代地进行Step1和Step2(上面)的转移 .

CUDA中是否有任何规定将您现有的主机内存(可分页)转换为固定内存?如下:

步骤1 - >按输入数据初始化可分页存储器

步骤2 - >将上述内存转换为固定内存

步骤3 - >转移到设备并执行执行

我希望我所要求的是有道理的 .

1 回答

  • 5

    是的你可以 .

    运行时API包括cudaHostRegister,它允许在CUDA上下文中注册现有的可分页内存分配 . 这可以包括固定内存,映射到虚拟地址空间或两者 . 您的CUDA上下文必须使用 cudaMapHost 标志创建,并且内存必须满足一些对齐要求,具体取决于您使用的驱动程序版本和平台 . 但原则上它可以完成 .

相关问题