Мой ЦП имеет 2 физических ядра и поддерживает гиперпоточность.Таким образом, я думаю, что я могу управлять 4 потоками.(4 логических ядра) Однако, используя openmp, я могу генерировать гораздо больше ядер.Это странно.
Я новичок в параллельном программировании, и я узнал, что есть несколько способов установить количество потоков, которые я хочу использовать.Я использовал два способа ниже.
- omp_set_num_threads (4);
- # pragma omp prarallel num_threads (4);
#pragma omp parallel num_threads(100)
{
printf("%d\n", omp_get_thread_num());
#pragma omp for
/* code I wanna parallelize */
}
ЧтоЯ думаю, что странно, логический номер ядра 4 в моем процессоре, но почему omp_get_thread_num()
вернул 0 до 99. Я думаю, что это невозможно, в чем смысл 100
в #pragma omp parallel num_threads(100)
?