提高cache命中率有经验的请指导。

hztj2005 2012-09-27 11:55:27
编程对汉语语句进行语法分析,测试文件语句数量: 398002,文件大小9m

硬件是:双 E5-2670 cpu ;每cpu 八核,16线程(任务管理器每cpu显示16个小核,共32个小核)

内存32G,实际使用仅7G。

omp_set_num_threads设置线程数量

#pragma omp for schedule(static,80)//给分配工作量

一、SetThreadAffinityMask绑定;


线程数量:1,执行用时 128732秒 绑定0核(任务管理器显示绑定)

线程数量:2,执行用时 110043秒 绑定0-1核(任务管理器显示绑定)

线程数量:4,执行用时 111837秒 绑定0-3核(任务管理器显示绑定)

线程数量:8,执行用时 142554秒 绑定0-7核(任务管理器显示绑定)

线程数量:16,执行用时 205469秒 绑定0-15核(任务管理器显示绑定)


二、不绑定;

线程数量:1,执行用时 122726秒 不设绑定

线程数量:2,执行用时 99654秒 不设绑定

线程数量:4,执行用时 114239秒 不设绑定

线程数量:8,执行用时 156469秒 不设绑定

线程数量:16,执行用时 236576秒 不设绑定


运行最快竟然是2线程,如何解释?


用VTune发现 4线程是 L2 replacement 是 45% ,这个词语是命中率 还是 失效率?

不管怎样,都很低了。

如何优化?

请有经验的朋友,告知一些资料。

...全文
887 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hztj2005 2012-09-30
  • 打赏
  • 举报
回复
没有经验,且代码比较复杂,段时间解决不了这个问题。
好在这个程序是我自用,我就改为同时启动多个实例来充分利用16核。

我尝试了启动12-14个实例,各自分析一组文件中的语句,效果能满足需要。
大熊猫侯佩 2012-09-28
  • 打赏
  • 举报
回复
1 不一定线程越多速度越快,要考虑整个架构的结构

2 cache命中和物理cpu属性以及OS底层数据缓存相关,在某种架构下优化很好,换
一种架构可能糟糕之极

3 最后实践决定一切
傻X 2012-09-28
  • 打赏
  • 举报
回复
#pragma omp for schedule(static,80)//给分配工作量

又见楼主,一直感觉这个工作量分配有猫腻。偶去研究下
Dobzhansky 2012-09-28
  • 打赏
  • 举报
回复
深入理解计算机系统
整本书
概括起来
就是按照存储金字塔展开的
Gloveing 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
多线程要提高性能至极限, 遵守的规则有:
1. 线程资源相互独立
2. 减少FAR访问形式, 简单点, 尽量在线程的栈里面分配所需要用到的空间. 访问一个全局变量跟访问栈变量的速度是有很大区别的.
3. 减小new和delete, 或者直接不使用
4. 线程之间不能够访问相邻的数据, 例如a[8], 然后每个线程访问固定一个下标来访问, 并且存在写操作, 这样会使效率暴降, 除非把a的数据……
[/Quote]
大牛啊!
dfasri 2012-09-28
  • 打赏
  • 举报
回复
多线程要提高性能至极限, 遵守的规则有:
1. 线程资源相互独立
2. 减少FAR访问形式, 简单点, 尽量在线程的栈里面分配所需要用到的空间. 访问一个全局变量跟访问栈变量的速度是有很大区别的.
3. 减小new和delete, 或者直接不使用
4. 线程之间不能够访问相邻的数据, 例如a[8], 然后每个线程访问固定一个下标来访问, 并且存在写操作, 这样会使效率暴降, 除非把a的数据类型是按CPU的cacheline大小定义的.
5. 数据的分布必须尽可能的按访问顺序来定义, 让CPU减小跳转, 跨区转跳会让CPU重新读取一个Cacheline, 同样效率会暴降.
6. 尽量减小进入系统内核.
hztj2005 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
#pragma omp for schedule(static,80)//给分配工作量

又见楼主,一直感觉这个工作量分配有猫腻。偶去研究下
[/Quote]

你看我这16核的机器,多于2个线程的效率下降,让我如何放得下。

这个量我测试过40 60 也用过动态 20,40,影响不是很大。

用VTune观察,估计是cache命中率太低的原因。

当然目前是推测。



hztj2005 2012-09-28
  • 打赏
  • 举报
回复
http://www.tektalk.org/2011/04/14/%e7%8e%b0%e4%bb%a3-cpu-%e4%b8%ad%e7%9a%84-cache-%e7%bb%93%e6%9e%84/

Cache 优化过程中必须考虑的因素之一

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧