多 cpu、多核和线程数
系统配置:Win 7 64 位、Visual Studio 2010 Premium、带 2 个 Xeon 5690 芯片的 Dell t7500、48 GB 内存。每个 Xeon 有 6 个核心,因此有 12 个物理核心。对于超线程,应该有 24 个逻辑核心。
在我的 C 应用程序中:
Session.coresAvailable = omp_get_num_procs ( );
Session.threadsAvailable = omp_get_max_threads ( ) ;
系统返回并告诉我有 12 个核心和 12 个线程。不是应该是24线程吗?
System config: Win 7 64bit, visual Studio 2010 Premium, dell t7500 with 2 xeon 5690 chips, 48 gig of ram. Each xeon has 6 cores, so there are 12 physical cores. With hyperthreading, there should be 24 logical cores.
In my C app:
Session.coresAvailable = omp_get_num_procs ( );
Session.threadsAvailable = omp_get_max_threads ( ) ;
The system comes back and tells me there are 12 cores and 12 threads. Shouldn't it be 24 threads?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将评论转换为答案:
您需要在 BIOS 中启用超线程才能看到所有 24 个线程。
Converting comment to answer:
You need to enable HyperThreading in the BIOS to see all 24 threads.
超线程对于多任务处理非常有用,但对于同质并行算法则不太有用,在同质并行算法中,所有线程都执行相同的指令并且需要相同的内部子单元。所以 omp 可能会忽略虚拟线程。
Hyperthreading is pretty darn useful for multitasking, not so much for homogeneous parallel algorithms, where all threads are executing the same instructions and need the same internal subunits. So omp might just ignore virtual threads.