PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

Asuka小讲座之五:超线程技术通识

  [复制链接]
1#
automation 发表于 2013-3-18 19:03 | 显示全部楼层
本帖最后由 automation 于 2013-3-18 19:05 编辑

请教楼主一个和可能超线程有关现象。

我写了1个科学计算的程序,需要进行数万个计算任务(比如矩阵乘啥的),用openMP for在任务级进行并行,但是如果设置线程数恰好等于超线程数(比如在双路E5的工作站 设置成32,或者在i7的笔记本上设置成8),程序非常卡,每个任务完成时间不一,总时间也明显慢。

但是如果设置成超线程数-1(31和7),就非常流畅,每个任务完成时间相近而且很快,总时间也短不少,而且任务管理器里显示CPU占用还是基本满载而不是7/8。


请问,能推测下算得慢是超线程的问题么?还是缓存冲突?
2#
automation 发表于 2013-3-18 20:38 | 显示全部楼层
Asuka 发表于 2013-3-18 20:12
略不熟openMP   但直覺看恐怕應該在軟件層面debug一下
少一個滿載   能否嘗試再減少一個會如何呢


在win7+双路E5上,如果设置成一半确实很特殊,只会把任务分配到前面16个线程里(CPU0),后一半的CPU1几乎空载。

在win8+i7的笔记本上,好像没有规律,会在8个线程里不断切换,显得乱七八糟的,但总占用率还是50%

少两个暂时没测,因为程序都在运行中。

程序结果肯定是对的(没有越界,内存泄露什么的),只是不知道如何改进,怎么才能让全部N线程满载运行时性能不至于比N-1时慢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部