W jaki sposób Intel TBB wybiera liczbę wątków używanych w sekcji równoległej?Liczba wątków używanych przez Intel TBB
Czy jest dostępna jakaś specyfikacja?
W jaki sposób Intel TBB wybiera liczbę wątków używanych w sekcji równoległej?Liczba wątków używanych przez Intel TBB
Czy jest dostępna jakaś specyfikacja?
Od TBB wersji 2.2 harmonogram zadanie zostanie automatycznie zainicjowany i na starcie dbać o liczbie wątków do wykorzystania, jeśli chcemy ręcznie zmienić ten numer, można użyć jednej z następujących metod:
Podczas tworzenia harmonogramu, można określić liczbę wątków jak
tbb::task_scheduler_init init(nthread);
jeszcze można użyć
tbb::task_scheduler_init init(tbb::task_scheduler_init::automatic);
W tym przypadku, Program planujący tbb tworzy tyle wątków, ile rdzeni procesora.
Dokumetacja mówi "zależna od konfiguracji sprzętowej". Prawdopodobnie dostępna jest tylko liczba rdzeni procesora.
Udzielanie TBB decydowania o liczbie wątków w puli jest zalecaną opcją - zwykle tworzy tyle wątków roboczych, ile logicznych procesorów na komputerze - patrz Class reference for tbb::task_scheduler_init.
Nie jest łatwo dowiedzieć się, ile wątków roboczych istnieje lub wykonuje zadania w danym momencie - jest to świadomy wybór projektu. Od Intel's TBB Parallel Programming Course:
Skąd wiadomo, ile wątków jest dostępnych?
Nie pytaj!
- Nawet planista wie, jak wiele wątków są naprawdę dostępne
- Nie mogą być inne procesy uruchomione na komputerze
- Rutyna może być zagnieżdżona wewnątrz innych równoległych procedur
Musisz utrzymuj przy życiu obiekt 'tbb :: task_scheduler_init' lub wróci on automatycznie. –
Ponadto obiekt harmonogramu zadań wpływa tylko na zadania TBB uruchomione z bieżącego wątku. Podczas tworzenia kolejnych zadań z innego wątku potrzebujesz innego 'tbb :: task_scheduler_init'. –