我的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。
我错过了什么?
答案 0 :(得分:12)
omp_get_num_procs
返回操作系统报告的CPU数量,由于超线程核心报告为2个CPU,因此双核超线程芯片将自称为4个处理器。
omp_get_max_threads
返回将在并行代码区域中使用的大多数线程,因此它将使用的大多数线程将是可用的CPU数量。