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 におけるセクションの概念が何であるかを理解できません。