процессорные ядра против потоков - PullRequest
7 голосов
/ 08 ноября 2011

Мой 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 Ответ

12 голосов
/ 08 ноября 2011

omp_get_num_procs возвращает количество процессоров, о которых сообщает ОС, и поскольку гиперпотоковое ядро ​​сообщает о себе как о 2 процессорах, двухъядерный гиперпоточный чип сообщит о себе как 4 процессора.

omp_get_max_threads возвращает наибольшее количество потоков, которые будут использоваться в параллельной области кода, поэтому имеет смысл, что наибольшим количеством потоков, которые он будет использовать, будет количество доступных процессоров.

...