当我使用固定内存进行CUDA数据传输时,我观察到数据传输速度大大提高。在linux上,实现此目标的底层系统调用是mlock。从mlock的手册页中可以看出,锁定该页可防止将其换出:
mlock()将页面锁定在地址范围内,该地址范围从addr开始并持续len个字节。当调用成功返回时,保证所有包含指定地址范围一部分的页面都驻留在RAM中;
在测试中,我的系统上有几千个可用内存,因此从没有任何风险可以换出内存页面,但我仍然观察到加速。任何人都可以解释这里到底发生了什么吗?任何见解或信息都将不胜感激。