2011-11-08 11 views
6

Mi MacBookPro, que ejecuta BootCamp, tiene un procesador Intel i7-640M, que tiene 2 núcleos. Al igual que todos los demás chips i7, cada núcleo tiene hyperthreaded, por lo que puede tener hasta 4 hilos. Con Visual Studio 2010 C/C++ para determinar los siguientes:cpu cores vs hilos

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

El "threadsAvailable" vuelve con un valor de 4, como se esperaba. Pero "núcleos disponibles" también se informa como 4.

¿Qué me estoy perdiendo?

Respuesta

11

omp_get_num_procs devuelve la cantidad de CPU que informa el sistema operativo, y como un núcleo de hiperfrecuencia se informa a sí mismo como 2 CPU, un chip de doble núcleo con capacidad de hiperinducción se informará como 4 procesadores.

omp_get_max_threads devuelve la mayor cantidad de subprocesos que se utilizarán en una región paralela de código, por lo que tiene sentido que la mayoría de los subprocesos que utilizará será la cantidad de CPU disponibles.

Cuestiones relacionadas