提高cache命中率有经验的请指导。
编程对汉语语句进行语法分析,测试文件语句数量: 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% ,这个词语是命中率 还是 失效率?
不管怎样,都很低了。
如何优化?
请有经验的朋友,告知一些资料。