我的内存块可能很大(大于L2缓存),有时我必须将它们设置为全零。memset的串行代码很好,但是并行代码呢?如果有人从并发线程中调用memset确实可以加快大型数组的运行速度,是否有人经验?甚至使用简单的openmp并行for循环?
2 回答
达令说
TA贡献1821条经验 获得超6个赞
在第一次调用malloc
该内存时,使用anonymous进行分配mmap
。这导致在进程的虚拟地址空间中进行映射,但是该映射仍然不受物理RAM帧的支持,而是在区域中的所有位置对写全复制的特殊内核页进行全写复制。因此,从刚映射的内存读取将返回零。首次写入该区域内的某个地址时,将发生页面错误,故障处理程序将找到一个可用的RAM帧并将其映射到相应的页面。
添加回答
举报
0/150
提交
取消