Work Mapping
Loop directive
The loop construct specifies that each iteration of the following loop is executed by a node set
specified by the on clause, so that the iterations are distributed among nodes and executed in parallel.
 Specify the index to be divided between the loop and on statements.
In the case of a single loop statement, this can be omitted.
 onref specifies the template name or the node set name.
 An operation of reduction clause is defined as follows.
[F] +, *, , .and., .or., .eqv., .neqv., max, min, iand, ior, ieor, firstmax, firstmin, lastmax, lastmin
[C] +, *, , &, , ^, &&, , max, min, firstmax, firstmin, lastmax, lastmin
Single loop
C
#pragma xmp loop on t[i]
for( i = 0; i < 20; i++){
a[i] = func(i);
}

Fortran
!$xmp loop on t(i)
do i=1, 20
a(i) = func(i)
end do

Nested loop
C
#pragma xmp loop (i,j) on t[i][j]
for( i = 0; i < 20; i++){
for( j = 0; j < 10; j++){
a[i][j] = func(i , j);
}
}

Fortran
!$xmp loop (i,j) on t(i,j)
do j=1, 10
do i=1, 20
a(i, j) = func(i, j)
end do
end do

Reduction clause
C
#pragma xmp loop on t[i] reduction(+:sum)
for( i = 0; i < 20; i++){
sum += i;
}

Fortran
!$xmp loop on t(i) reduction(+:sum)
do i=1, 20
sum = sum + i
end do

The following calculation is performed at each node (with four nodes).
C
node  calculation  sum 
p[0]  0+1+2+3+4  10 
p[1]  5+6+7+8+9  35 
p[2]  10+11+12+13+14  60 
p[3]  15+16+17+18+19  85 

Fortran
node  calculation  sum 
p(1)  1+2+3+4+5  15 
p(2)  6+7+8+9+10  40 
p(3)  11+12+13+14+15  65 
p(4)  16+17+18+19+20  90 

After the end of the loop statement,
the reduction clause causes a summation calculation to be performed based on the value of sums held at each node.
In this case, a value of 190 in C, and a value of 210 in Fotran, is assigned to the sum in each node.