ядра процессора против потоков

Мой 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.

Что мне не хватает?


person PaeneInsula    schedule 08.11.2011    source источник


Ответы (1)


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

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

person Gabe    schedule 08.11.2011