XcalableACC
例
double u[XSIZE][YSIZE], uu[XSIZE][YSIZE];#pragma xmp template t(0:YSIZE−1, 0:XSIZE−1)#pragma xmp nodes p(x, y)#pragma xmp distribute t(block, block) onto p#pragma xmp align [j][i] with t(i,j) :: u, uu#pragma xmp shadow uu[1:1][1:1]
...
#pragma acc data copy(u) copyin(uu)    // 定義した分散配列をアクセラレータに転送{
  for(k=0; k<MAX_ITER; k++){#pragma xmp loop (y,x) on t(y,x)       // XcalableMPが分散したループ文を、#pragma acc parallel loop collapse(2)  // さらにOpenACC指示文がアクセラレータ内で分割処理する
   for(x=1; x<XSIZE-1; x++)
      for(y=1; y<YSIZE-1; y++)
        uu[x][y] = u[x][y];
 
#pragma xmp reflect (uu) acc     // shadow指示文で定義した袖領域をアクセラレータ間で同期する
 
#pragma xmp loop (y,x) on t(y,x)#pragma acc parallel loop collapse(2)
    for(x=1; x<XSIZE-1; x++)
      for(y=1; y<YSIZE-1; y++)
        u[x][y] = (uu[x-1][y]+uu[x+1][y]+
                   uu[x][y-1]+uu[x][y+1])/4.0;
  } // end k} // end data