C - CPU内核vs线程



我的MacBookPro,运行BootCamp,有一个英特尔i7-640M处理器,有两个核心。像所有其他i7芯片一样,每个核心都是超线程的,所以你最多可以有4个线程。使用Visual Studio 2010 c/c++来确定这些:

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

"threadsAvailable"返回值为4,正如预期的那样。但是"coresAvailable"也被报告为4.

我错过了什么?

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

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

最新更新