program sections !$ use OMP_LIB implicit none integer :: rank, tnot !$OMP PARALLEL PRIVATE(rank) DEFAULT(SHARED) rank = OMP_GET_THREAD_NUM () ! get the rank of current thread tnot = OMP_GET_NUM_THREADS() ! get the total number of threads currently running this PR !$OMP SECTIONS !$OMP SECTION print *,"I am rank",rank,"and I am in section 1" call system("sleep 1s") !$OMP SECTION print *,"I am rank",rank,"and I am in section 2" call system("sleep 1s") !$OMP SECTION print *,"I am rank",rank,"and I am in section 3" call system("sleep 1s") !$OMP END SECTIONS ! NOWAIT can be used here !$OMP END PARALLEL end program sections #include #include #include int main(int argc, char** argv) { int rank, tnot; #pragma omp parallel private(rank) default(shared) { rank = omp_get_thread_num (); // get the rank of current thread tnot = omp_get_num_threads(); // get the total number of threads currently running this PR #pragma omp sections { #pragma omp section { printf("I am rank %d and I am in section 1\n", rank); sleep(1); } #pragma omp section { printf("I am rank %d and I am in section 2\n", rank); sleep(1); } #pragma omp section { printf("I am rank %d and I am in section 3\n", rank); sleep(1); } } } return 0; }