英特尔有限责任公司的某些怪异行为

问题描述

我有一个 单线程 void函数,我称其性能为f。 f将指向大小为1.5Mb左右的浮点缓冲区的指针作为输入,我们称之为x。 f写入另一个缓冲区,比方说y。 y的大小也约为1.5Mb。所以要使用f,我们称f(x,y)。

现在我跑了1000次。在方案一中,我有一个x和一个y,所以我做f(x,y)一千次。 f读取x可以从本地缓存中获取数据,而且速度很快。

在第二种情况下,我有一个x和1000个不同的y,请考虑y0,y1 ... y999,每个缓冲区的大小约为1.5Mb。 (是否在内存中连续,显然无关紧要)当我执行f(x,y0),f(x,y1),f(x,y2)...时,不再提供f对x的读取本地缓存!我发现LLC未命中,并因DRAM延迟而成为瓶颈。

这是怎么回事?我正在运行Intel Kaby Lake四核笔记本电脑。 i5-8250。 L3缓存大小为6144K。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...