最佳答案
当我使用固定存储器进行 CUDA 数据传输时,我观察到数据传输的大幅加速。在 linux 上,实现这一点的底层系统调用是 mlock。在 mlock 的手册页中,它声明锁定该页可以防止将其交换出去:
Mlock ()锁定地址范围内从 addr 开始并持续为 len 字节的页面。当调用成功返回时,所有包含指定地址范围的一部分的页面都保证驻留在 RAM 中;
在我的测试中,我的系统上有几千兆的空闲内存,所以从来没有任何风险的内存页面可以被交换出来,但我仍然观察到了加速。有人能解释一下这到底是怎么回事吗?如有任何见解或信息,我们将不胜感激。