AUTO Loop Schedule in OpenMP 3.0The AUTO loop schedule is a new loop schedule introduced in OpenMP 3.0. When SCHEDULE(AUTO) is specified on a do/for loop directive, the decision regarding scheduling is delegated to the compiler and/or OpenMP runtime support library. The programmer gives the compiler and/or libmtsk the freedom to choose any possible mapping of iterations to threads in the team. The AUTO loop schedule is described in Section 2.5.1 (p. 38) of the OpenMP specification. Example (Fortran): Program Test
integer A(10), B(10)
A = -1
B = 20
!$OMP PARALLEL DO PRIVATE (A), SHARED(B), SCHEDULE(AUTO)
do i = 1, 10
A(i) = i
B(i) = B(i) + A(i)
end do
do i = 1, 10
PRINT *, B(i)
end do
end
% f90 -xopenmp -xO3 test.f
% a.out
21
22
23
24
25
26
27
28
29
30
Example (C/C++): #include <stdio.h>
#include <omp.h>
#define SIZE 10
int main(void)
{
int i;
int buffer[SIZE];
#pragma omp parallel for schedule(auto)
for (i = 0; i < SIZE; i++)
{
buffer[i] = i;
}
for (i = 0; i < SIZE; i++)
{
printf ("%d\n", buffer[i]);
}
return 0;
}
% cc -xopenmp -xO3 test.c
% a.out
0
1
2
3
4
5
6
7
8
9
|
OpenMP 3.0 Features in Express 7.08
|