12. array constructΒΆ

The array construct is for work mapping of array assignment statements.

  • XMP/C program
#pragma xmp align a[i] with t[i]
  :
#pragma xmp array on t[0:N]
a[0:N] = 1.0;
  • XMP/Fortran program
!$xmp align a(i) with t(i)
  :
!$xmp array on t(1:N)
a(1:N) = 1.0

The above is equivalent to the below.

  • XMP/C program
#pragma xmp align a[i] with t[i]
  :
#pragma xmp loop on t[i]
for(int i=0;i<N;i++)
  a[i] = 1.0;
  • XMP/Fortran program
!$xmp align a(i) with t(i)
  :
!$xmp loop on t(i)
do i=1, N
  a(i) = 1.0
enddo

This construct can also be applied to multi-dimensional arrays. The triplet notation enables specifying operations for all elements of the array.

  • XMP/C program
#pragma xmp align a[i][j] with t[i][j]
  :
#pragma xmp array on t[:][:]
a[:][:] = 1.0;
  • XMP/Fortran program
!$xmp align a(j,i) with t(j,i)
  :
!$xmp array on t(:,:)
a(:,:) = 1.0

Note

The template appearing in the on clause must have the same shape of arrays in the following statement. The rhs value must be identical among all nodes. The array construct is collective.