在 OpenMP 中使用时,线程会被分配到部分omp sections
内的块中,还是将每个线程分配给每个部分?
什么时候nthreads == 3
:
#pragma omp sections
{
#pragma omp section
{
printf ("id = %d, \n", omp_get_thread_num());
}
#pragma omp section
{
printf ("id = %d, \n", omp_get_thread_num());
}
}
输出:
id=1
id=1
但是当我执行以下代码时:
#pragma omp sections
{
#pragma omp section
{
printf ("id = %d, \n", omp_get_thread_num());
}
#pragma omp section
{
printf ("id = %d, \n", omp_get_thread_num());
}
}
#pragma omp sections
{
#pragma omp section
{
printf ("id = %d, \n", omp_get_thread_num());
}
#pragma omp section
{
printf ("id = %d, \n", omp_get_thread_num());
}
}
输出:
id=1
id=1
id=2
id=2
从这些输出中,我无法理解 OpenMP 中节的概念是什么。