cpu核心与线程

时间:2011-11-08 19:22:45

标签: c multithreading cpu-cores openmp

我的MacBookPro,运行BootCamp,有一个Intel i7-640M处理器,有2个内核。与所有其他i7芯片一样,每个内核都是超线程的,因此最多可以有4个线程。使用Visual Studio 2010 c / c ++确定这些:

coresAvailable      =    omp_get_num_procs ( );
threadsAvailable    =    omp_get_max_threads ( ) ;

正如预期的那样,“threadsAvailable”返回值为4。但“coresAvailable”也被报道为4。

我错过了什么?

1 个答案:

答案 0 :(得分:12)

omp_get_num_procs返回操作系统报告的CPU数量,由于超线程核心报告为2个CPU,因此双核超线程芯片将自称为4个处理器。

omp_get_max_threads返回将在并行代码区域中使用的大多数线程,因此它将使用的大多数线程将是可用的CPU数量。