2011-11-08 115 views
6

我的MacBookPro,運行BootCamp,有一個英特爾i7-640M處理器,它有2個核心。像所有其他i7芯片一樣,每個核心都是超線程的,所以最多可以有4個線程。使用Visual Studio 2010 c/C++來確定這些:cpu核心與線程

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

「threadsAvailable」返回值爲4,如預期。但「coresAvailable」也報告爲4.

我錯過了什麼?

回答

11

omp_get_num_procs返回操作系統報告的CPU數量,由於超線程核心報告自己爲2個CPU,因此雙核超線程芯片將自己報告爲4個處理器。

omp_get_max_threads返回將在並行代碼區域中使用的最多線程,因此它使用的最多線程數將是可用CPU數量。