2011-11-08 9 views
6

Mój komputer MacBook Pro z procesorem BootCamp ma procesor Intel i7-640M z 2 rdzeniami. Podobnie jak wszystkie inne układy i7, każdy rdzeń jest hyperthreaded, więc możesz mieć do 4 wątków. Korzystanie z Visual Studio 2010 C/C++, aby określić te:rdzenie procesora a wątki

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

W "threadsAvailable" wraca o wartości 4, zgodnie z oczekiwaniami. Ale "rdzeń Dostępny" również jest zgłaszany jako 4.

Czego mi brakuje?

Odpowiedz

11

omp_get_num_procs zwraca liczbę procesorów, które raportuje system operacyjny, a ponieważ hiperwątkowy rdzeń zgłasza się jako 2 procesory, dwurdzeniowy układ hiperwątkowy zgłosi się jako 4 procesory.

omp_get_max_threads zwraca najwięcej wątków, które będą używane w równoległym regionie kodu, więc ma sens, że najwięcej wątków, których użyje, będzie liczbą dostępnych procesorów.