intel Core 2 Duo 支持双线程技术吗?为什么双核系统有4-5个线程?

kafkafka 2010-03-12 01:22:20
加精
为什么我用vtune查看一个用openMP编写的小程序,在sampling采样里,双击该程序进程,出现了4个或5个线程呢?默认双核应该是2个线程才对啊?
...全文
1382 68 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
68 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahbqssd167 2012-08-30
  • 打赏
  • 举报
回复
都是复制贴,无聊,从根本上没有解释cpu物理上的双线程和超线程的区别。有没有原创啊!!!
kafkafka 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用 65 楼 intel_www 的回复:]
'omp_get_thread_num' 返回的是线程在当前并行区域内的号码,和VTune中看到的线程号没有直接对应关系。
[/Quote]
明白了!多谢!
foavin 2010-03-31
  • 打赏
  • 举报
回复
来看看
intel_www 2010-03-31
  • 打赏
  • 举报
回复
'omp_get_thread_num' 返回的是线程在当前并行区域内的号码,和VTune中看到的线程号没有直接对应关系。
kafkafka 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用 62 楼 intel_www 的回复:]
引用 61 楼 kafkafka 的回复:

哇,偶像出现!!!
我可以这么理解吗?在>2的线程中,有些是用户级线程,有些是系统级线程?我自己打印出线程号看到的两个线程是用户级线程?还有,自己打印出线程号,和VTune下看到的不一样怎么解释呢?


你自己怎么打印的线程号?

用户级/系统级线程的概念用在这里好像不太合适。那些多出来的线程有的是OpenMP运行库自己的辅助线程,有的……
[/Quote]

就是用OpenMp提供的库函数啊:omp_get_thread_num(),返回当前线程号,0代表主线程。
hawaii 2010-03-29
  • 打赏
  • 举报
回复
我记得Core 2 Duo不支持超线程技术。老的Pentium 4支持,后来的Core架构都不支持。
现在最新的Nehalem架构又加入了超线程技术。

建议在Wikipedia之类上面搜一下细节。
intel_www 2010-03-29
  • 打赏
  • 举报
回复
[Quote=引用 61 楼 kafkafka 的回复:]

哇,偶像出现!!!
我可以这么理解吗?在>2的线程中,有些是用户级线程,有些是系统级线程?我自己打印出线程号看到的两个线程是用户级线程?还有,自己打印出线程号,和VTune下看到的不一样怎么解释呢?
[/Quote]

你自己怎么打印的线程号?

用户级/系统级线程的概念用在这里好像不太合适。那些多出来的线程有的是OpenMP运行库自己的辅助线程,有的可能是某些库函数调用隐式创建的...
kafkafka 2010-03-26
  • 打赏
  • 举报
回复
哇,偶像出现!!!
我可以这么理解吗?在>2的线程中,有些是用户级线程,有些是系统级线程?我自己打印出线程号看到的两个线程是用户级线程?还有,自己打印出线程号,和VTune下看到的不一样怎么解释呢?
intel_www 2010-03-25
  • 打赏
  • 举报
回复
[Quote=引用 54 楼 kafkafka 的回复:]
可是你自己程序中你把工作分成几个线程自己能看到的呀,为什么系统工具显示你的程序下不止你定义的这2个线程呢?
[/Quote]

很多情况下程序生命周期内会有很多隐式创建的线程,所以你会看到线程数目>2。
intel_www 2010-03-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 kafkafka 的回复:]
为什么我用vtune查看一个用openMP编写的小程序,在sampling采样里,双击该程序进程,出现了4个或5个线程呢?默认双核应该是2个线程才对啊
[/Quote]

这里的默认值指的是OpenMP运行库会使用2个线程来执行你所创建的Parallel Region。至于你的程序运行过程中总的线程数目(VTune中看到的线程数目)完全是另外一回事。
左岸之魂 2010-03-20
  • 打赏
  • 举报
回复
为了积分我要灌水~
supstorm 2010-03-20
  • 打赏
  • 举报
回复
是不是多核就会有多个并行线程?要不多核有什么用?提高运行频率不就可以了吗?
edisonmxy 2010-03-19
  • 打赏
  • 举报
回复
不懂呀!学习的知识太有限了!继续学习中!
kafkafka 2010-03-19
  • 打赏
  • 举报
回复
可是你自己程序中你把工作分成几个线程自己能看到的呀,为什么系统工具显示你的程序下不止你定义的这2个线程呢?
robake 2010-03-19
  • 打赏
  • 举报
回复
[Quote=引用 52 楼 robake 的回复:]
电脑上处理数据的都是CPU,就好比有多少个人在执行任务。

CPU有几个核心就相当于有几个人执行任务,越多,能同时执行任务的人就越多。

而线程是同时需要执行的任务,然而由于实际情况不同,会造成CPU运行每个线程任务所需的时间有长有短,这个就造成运行线程任务就有先和后,这里我们可以用线程的优先级来控制。

线程数越多,会让CPU处于空闲状态的时间就会越少,CPU资源就使用越充分。
[/Quote]
当然,线程过多时,会造成太多的线程处于等待状态反而会降低运行速度和效率。
robake 2010-03-19
  • 打赏
  • 举报
回复
电脑上处理数据的都是CPU,就好比有多少个人在执行任务。

CPU有几个核心就相当于有几个人执行任务,越多,能同时执行任务的人就越多。

而线程是同时需要执行的任务,然而由于实际情况不同,会造成CPU运行每个线程任务所需的时间有长有短,这个就造成运行线程任务就有先和后,这里我们可以用线程的优先级来控制。

线程数越多,会让CPU处于空闲状态的时间就会越少,CPU资源就使用越充分。
macklau 2010-03-18
  • 打赏
  • 举报
回复
支持二楼的意见,学习了
mythmgn 2010-03-18
  • 打赏
  • 举报
回复
路过路过路过路过路过
kafkafka 2010-03-18
  • 打赏
  • 举报
回复
奇怪的是,我在程序中把线程号打印出来显示有2个线程,但是用intel Vtune分析工具里看到,这个应用程序进程下能看到多于2个线程,3-6个都出现过,请问怎么解释呢?
kafkafka 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 37 楼 netcup 的回复:]
CORE2不支持超线程,I7以上支持。
[/Quote]

谢啦
加载更多回复(47)

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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