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

问题描述 投票:2回答:1

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

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

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

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

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

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

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

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

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

cuda gpgpu
1个回答
6
投票

是的你可以。

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

© www.soinside.com 2019 - 2024. All rights reserved.