int main(void)
{
  id = xmp_node_num();
  procs = xmp_num_nodes();
 
  for(j=2;j<procs;j++){
    a = xmp_node_num();
    b = (double)a;
    c = (float)a;
    for(i=0;i<N;i++){
      aa[i] = a+i;
      bb[i] = (double)(a+i);
      cc[i] = (float)(a+i);
    }

#pragma xmp bcast (a) from p(j) on p(2:procs-1)
#pragma xmp bcast (b) from p(j) on p(2:procs-1)
#pragma xmp bcast (c) from p(j) on p(2:procs-1)
#pragma xmp bcast (aa) from p(j) on p(2:procs-1)
#pragma xmp bcast (bb) from p(j) on p(2:procs-1)
#pragma xmp bcast (cc) from p(j) on p(2:procs-1)

    if((id >= 2)&&(id<=procs-1)){
      if(a != j) result = -1;
      if(b != (double)j) result = -1;
      if(c != (float)j) result = -1;
      for(i=0;i<N;i++){
	if(aa[i] != j+i) result = -1;
	if(bb[i] != (double)(j+i)) result = -1;
	if(cc[i] != (float)(j+i)) result = -1;
      }
    }
    else{
      if(a != xmp_node_num()) result = -1;
      if(b != (double)a) result = -1;
      if(c != (float)a) result = -1;
      for(i=0;i<N;i++){
	if(aa[i] != a+i) result = -1;
	if(bb[i] != (double)(a+i)) result = -1;
	if(cc[i] != (float)(a+i)) result = -1;
      }
    }
  }
  
#pragma xmp reduction(+:result)
#pragma xmp task on p(1)
  {
    if(result == 0 ){
      printf("PASS\n");
    }
    else{
      fprintf(stderr, "ERROR\n");
      exit(1);
    }
  }

  return 0;
}    
示例#2
0
int main(void){

   procs = xmp_num_nodes();
   p1 = 4;
   p2 = procs/4;
   w1 = 250;
   if((N%p2)==0){
      w2 = N/p2;
   }else{
      w2 = N/p2 + 1;
   }
    
   for(k=0;k<procs-1;k++){
      pi = k%4;
      pj = k/4;
      if(xmp_node_num() == 1){
         for(i=0;i<w2;i++){
            for(j=0;j<w1;j++){
               a[i][j] = (j+pj*w2)+pi*w1+i;
            }
         }
      }

#pragma xmp barrier on p(1:pi+1,1:pj+1)
#pragma xmp task on p(pi+1, pj+1)
      {
#pragma xmp gmove in 
         a[pi*w1:w1][pj*w2:w2] = a[0:w1][0:w2];
      }
   }
   
   if(xmp_node_num() == 1){
      for(i=0;i<w2;i++){
         for(i=0;i<w1;i++){
            a[i][j] = j*N+i;
         }
      }
   }

   result = "OK";
#pragma xmp loop (j,i) on t(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         if(a[i][j] != j*N+i) result = "NG";
      }
   }

   printf("%d %s %s\n",xmp_node_num(),"testp120.c",result);
   return 0;
}
static void print_array(int *a, int size1, int size2)
{
    for(int k = 0; k < xmp_num_nodes(); k++){
	if(k == xmp_node_num() - 1){
	    fprintf(stderr, "--- node %d ---\n", xmp_node_num());
	    for(int i = 0; i < size1; i++){
		for(int j = 0; j < size2; j++){
		    fprintf(stderr, "%3d, ", a[i*size2+j]);
		}
		fprintf(stderr, "\n");
	    }
	}
	#pragma xmp barrier
    }
}
int main(void){

   if(xmp_num_nodes() > 31){
      printf("%s\n","You have to run this program by less than 32 nodes.");
   }

   procs = xmp_num_nodes();
   id = xmp_num_nodes()-1;
   result = "OK";
   w=1;
   for(i=0;i<procs;i++){
      w*2;
   }
   for(i=0;i<w;i=i+2){
      mask = 1 << id;
      val1 =(i & mask);
#pragma xmp reduction(|:val1) async(1)
      mask = 1 << id;
      val2 =((i+1) & mask);
#pragma xmp reduction(|:val2) async(2)
#pragma xmp wait_async(1)
      if(val1 != i){
         result = "NG";
      }
#pragma xmp wait_async(2)
      if(val2 != i+1){
         result = "NG";
      }
   }

   printf("%d %s %s\n",xmp_node_num(),"testp055.c",result); 
   return 0;
}
int main(void){

   result = "OK";
   for(k=114;k<10001;k=k+113){
      for(i=1;i<N*N;i++){
         random_array[0]=k;
         random_array[i]=(random_array[i-1]*random_array[i-1])%100000000;
         random_array[i]=(random_array[i]-((random_array[i]%100)/100))%10000;
      }
  
#pragma xmp loop (j,i) on t(j,i)
      for(i=0;i<N;i++){
         for(j=0;j<N;j++){
            l = j*N+i;
            a[i][j] = random_array[l];
            b[i][j] = (double)random_array[l];
            c[i][j] = (float)random_array[l];
         }
      }
      sa = 0;
      sb = 0.0;
      sc = 0.0;
#pragma xmp loop (j,i) on t(j,i)
      for(i=0;i<N;i++){
         for(j=0;j<N;j++){
            if(a[i][j]>sa){
               sa = a[i][j];
            }
            if(b[i][j]>sb){
               sb = b[i][j];
            }
            if(c[i][j]>sc){
               sc = c[i][j];
            }
         }
      }
#pragma xmp reduction(max:sa,sb,sc) async(1)
      ans_val = 0;
      for(i=0;i<N;i++){
         for(j=0;j<N;j++){
            l = j*N+i;
            if(random_array[l]>ans_val){
               ans_val = random_array[l];
            }
         }
      }
#pragma xmp wait_async(1)

      if(sa != ans_val||sb != (double)ans_val||sc != (float)ans_val){
         result = "NG";
      }
   }

   printf("%d %s %s\n",xmp_node_num(),"testp057.c",result); 
   return 0;
}
int main(void){

   sa=1;
   sb=1.0;
   sc=1.0;
#pragma xmp loop on t(:,:,i)
   for(i=0;i<N;i++){
      if(i%100 == 0){
         a[i]=2;
         b[i]=2.0;
         c[i]=2.0;
      }else{
         a[i]=1;
         b[i]=1.0;
         c[i]=1.0;
      }
   }
#pragma xmp loop on t(:,:,i)
   for(i=0;i<N;i++){
      sa = sa*a[i];
   } 
#pragma xmp reduction(*:sa) async(1)

#pragma xmp loop on t(:,:,i)
   for(i=0;i<N;i++){
      sb = sb*b[i];
   }
#pragma xmp wait_async(1)
   sa = sa*3;

#pragma xmp reduction(*:sb) async(1)

#pragma xmp wait_async(1)
   sb = sb*1.5;

#pragma xmp loop on t(:,:,i)
   for(i=0;i<N;i++){
      sc = sc*c[i];
   }

#pragma xmp reduction(*:sc) async(1)
#pragma xmp wait_async(1)
   sc = sc*0.5;

   ansa=1024*3;
   ansb=1024.0*1.5;
   ansc=1024.0*0.5;

   result = "OK";
   if(sa != ansa||abs(sb-ansb) > 0.000001||abs(sc-ansc) > 0.000001){ 
      result = "NG";
   }
 
   printf("%d %s %s\n",xmp_node_num(),"testp029.c",result);
   return 0;
}
int main(void){

   if(xmp_num_nodes() > 31){
      printf("%s\n","You have to run this program by less than 32 nodes.");
   }

   procs = xmp_num_nodes();
   id = xmp_node_num()-1;
   result = "OK";
   w=1;
   for(i=0;i<procs;i++){
      w=w*2;
   }
   for(i=0;i<w;i=i+2){
      mask1 = 1 << id;
      val1 = i & mask1;
      if(val1 == 0){
         l1 = 0;
      }else{
         l1 = !0;
      }
#pragma xmp reduction(||:l1) async(1)  
      mask2 = 1 << id;
      val2 = i+1 & mask2;
      if(val2 = 0){
         l2 = 0;
      }else{
         l2 = !0;
      }
#pragma xmp reduction(||:l2) async(2)
#pragma xmp wait_async(1)
      if(i==0){
         if(l1) result = "NG";
      }else{
         if(!l1) result = "NG";
      }
#pragma xmp wait_async(2)
      if(!l2) result = "NG";
   }

   printf("%d %s %s\n",xmp_node_num(),"testp063.c",result);
   return 0;
}
int main(void){

#pragma xmp loop (j,i) on t1(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         a1[i][j] = j*N+i;
      }
   }

#pragma xmp loop (j,i) on t2(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         b1[i][j] = (double)j*N+i;
      }
   }

#pragma xmp loop (j,i) on t3(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         c1[i][j] = (float)j*N+i;
      }
   }

#pragma xmp loop (j,i) on t4(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         a2[i][j] = 1;
      }
   }

#pragma xmp loop on t5(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         b2[i][j] = 1.0;
      }
   }

#pragma xmp loop on t6(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         c2[i][j] = 1.0;
      }
   }

   procs = xmp_num_nodes();
   for(j=1;j<procs+1;j++){
      if(j == xmp_node_num()){
#pragma xmp gmove out async(1)
         a1[:][:] = a2[:][:];
#pragma xmp gmove out async(2)
         b1[:][:] = b2[:][:];
#pragma xmp gmove out async(3)
         c1[:][:] = c2[:][:];
      }
   }
int main(void){

#pragma xmp loop on t1(i)
  for(int i=0; i<10; i++)
      a[i] = i;

  if(xmp_node_num() == 1)
    printf("PASS\n");

  return 0;
}
示例#10
0
文件: test.c 项目: jacklicn/pop-cpp
void xmp_function(){
  int i;

#pragma xmp loop on t(i)
  for(i=0;i<10;i++)
    a[i] = i;

#pragma xmp loop on t(i)
  for(i=0;i<10;i++)
    printf("%d %d\n", xmp_node_num(), a[i]);
}
示例#11
0
int main()
{
  int me = xmp_node_num() - 1;
  int k[5][10], m;
  double n = (double)me;

  for(int i=0;i<5;i++)
    for(int j=0;j<10;j++)
      k[i][j] = me;

  switch (me){
  case 0: m = 2;
    break;
  case 1: m = 3;
    break;
  case 2: m = 4; // <- This is selected
    break;
  case 3: m = 4;
    break;
  }
  
#pragma xmp reduction(max:m/n,k[1][:]/)

  // check
  int flag = TRUE;
  
  if(n != (double)2)
    flag == FALSE;

  for(int i=0;i<5;i++){
    for(int j=0;j<10;j++){
      if(i==1){
	if(k[i][j] != 2)
	  flag = FALSE;
      }
      else{
	if(k[i][j] != me)
	  flag = FALSE;
      }
    }
  }

#pragma xmp reduction(min:flag)
  if(flag == FALSE){
#pragma xmp task on p[0]
    printf("ERROR\n");
    return 1;
  }
  else{
#pragma xmp task on p[0]
    printf("PASS\n");
    return 0;
  }
}
示例#12
0
int main(){
  for(int i=0;i<10;i++)
    a[i] = 0;
  
  xmp_sync_all(NULL);
  if(xmp_node_num() == 1)
    hoge(3, 2, -9);
  
  xmp_sync_all(NULL);

  if(xmp_node_num() == 2){
    if(a[3] == -9){
      printf("PASS\n");
    }
    else{
      fprintf(stderr, "ERROR\n");
      exit(1);
    }
  }
  return 0;
}
示例#13
0
int main(void)
{
  procs = xmp_num_nodes();
  if(N%procs == 0){
    w = N/procs;
  }else{
    w = N/procs+1;
  }

  for(j=0;j<N;j++){
    a = xmp_node_num();
    b = (double)a;
    c = (float)a;
    for(i=0;i<N;i++){
      aa[i] = a+i-1;
      bb[i] = (double)(a+i-1);
      cc[i] = (float)(a+i-1);
    }

#pragma xmp bcast (a) from t(j) 
#pragma xmp bcast (b) from t(j)
#pragma xmp bcast (c) from t(j)
#pragma xmp bcast (aa) from t(j)
#pragma xmp bcast (bb) from t(j)
#pragma xmp bcast (cc) from t(j)

    ans = j/w+1;
    if(a != ans) result = -1;
    if(b != (double)ans) result = -1;
    if(c != (float)ans) result = -1;
    for(i=0;i<N;i++){
      if(aa[i] != ans+i-1) 
	result = -1;
      if(bb[i] != (double)(ans+i-1))
	result = -1;
      if(cc[i] != (float)(ans+i-1))
	result = -1;
    }
  }      

#pragma xmp reduction(+:result)
#pragma xmp task on p(1)
  {
    if(result == 0){
      printf("PASS\n");
    }
    else{
      fprintf(stderr, "ERROR\n");
      exit(1);
    }
  }
  return 0;
}    
示例#14
0
int main(void){

   if(xmp_num_nodes() < 16){
      printf("%s\n","You have to run this program by more than 16 nodes.");
   }
  
   sa=0;
   sb=0.0;
   sc=0.0;

#pragma xmp loop (j,i) on t(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         a[i][j] = 1;
         b[i][j] = 0.5;
         c[i][j] = 0.25;
      }
   }
#pragma xmp loop (j,i) on t(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         sa = sa-a[i][j];
      }
   }
#pragma xmp reduction (-:sa) 

#pragma xmp loop (j,i) on t(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         sb = sb-b[i][j];
      }
   }
#pragma xmp reduction (-:sb) 

#pragma xmp loop (j,i) on t(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         sc = sc-c[i][j];
      }
   }
#pragma xmp reduction (-:sc) 
  
   result ="OK";
   if(sa != -(N*N)||abs(sb+((double)N*N*0.5))||abs(sc+((float)N*N*0.25))){
      result = "NG";
   }

   printf("%d %s %s\n",xmp_node_num(),"testp052.c",result); 
   return 0;
}
示例#15
0
int chk_int2(int ierr){

#pragma xmp reduction (max:ierr)
  int irank=xmp_node_num();

  if(irank==1){
    if ( ierr == 0 ) {
       printf("PASS\n");
    }else{
       printf("ERROR\n");
       exit(1);
    }
  }
  return 0;
}
int main()
{
    int a[N][N];
#pragma xmp align a[i][*] with t[i]
#pragma xmp shadow a[1][0]

    int i,j;
#pragma xmp loop (i) on t[i]
    for(i = 0; i < N; i++){
	for(j = 0; j < N; j++){
	    a[i][j] = 100 * i + j;
	}
    }

#pragma acc data copy (a)
    {
#pragma xmp reflect (a) acc
    }

    int rank  = xmp_node_num() - 1;
    int begin = N/NP * rank;
    int end   = N/NP * (rank+1);

    if(rank != 0) begin--;
    if(rank != NP-1) end--;

    int err = 0;

    for(i = begin; i < end; i++){
	for(j = 0; j < N; j++){
	    if(a[i][j] != 100 * i + j) err = 1;
	}
    }

#pragma xmp reduction(+:err)

#pragma xmp task on p[0]
    if(err == 0){
	printf("PASS\n");
    }else{
	return 1;
    }

    return 0;
}
示例#17
0
int ixmp_sub() {

#pragma xmp nodes p[4]

#pragma xmp task on p[1]
{

  int irank=xmp_node_num();
  if(irank == 1){
    printf("PASS\n");
  }
  else{
    fprintf(stderr, "ERROR rank=%d\n",irank);
    exit(1);
  }
}

  return 0;
}
示例#18
0
int main(void)
{
  procs = xmp_num_nodes();
  a = xmp_node_num();
  b = (double)a;
  c = (float)a;
  for(i=0;i<N;i++){
    aa[i] = a+i;
    bb[i] = (double)(a+i);
    cc[i] = (float)(a+i);
  }

#pragma xmp bcast (a)
#pragma xmp bcast (b) 
#pragma xmp bcast (c) 
#pragma xmp bcast (aa) 
#pragma xmp bcast (bb) 
#pragma xmp bcast (cc)
  j = 1;
  if(a != j)         result = -1;
  if(b != (double)j) result = -1;
  if(c != (float)j)  result = -1;
  for(i=0;i<N;i++){
    if(aa[i] != j+i)           result = -1;
    if(bb[i] != (double)(j+i)) result = -1;
    if(cc[i] != (float)(j+i))  result = -1;
   }

#pragma xmp reduction(+:result)
#pragma xmp task on p[0]
  {
    if(result == 0){
      printf("PASS\n");
    }
    else{
      fprintf(stderr, "ERROR\n");
      exit(1);
    }
  }
  
  return 0;
}    
示例#19
0
int main(void)
{
#pragma xmp loop on t(j)
  for(j=0;j<N;j++){
    a[j] = 1;
    b[j] = 2.0;
    c[j] = 3.0;
  }

#pragma xmp loop on t(j)
  for(j=0;j<N;j++){
    sa += a[j];
    sb += b[j];
    sc += c[j];
  }
   
  ans = g[xmp_node_num()-1];
  if(sa != ans){
    result = -1;
  }
  if(abs(sb-2.0*(double)ans)>0.000000001){
    result = -1;
  }
  if(abs(sc-3*(float)ans)>0.000001){
    result = -1;
  }

#pragma xmp reduction(+:result)
#pragma xmp task on p(1)
   {
     if(result == 0){
       printf("PASS\n");
     } else{
       printf("ERROR\n");
       exit(1);
     }
   }

   return 0;
}    
示例#20
0
文件: xmp_get.c 项目: mnakao/pingpong
int main(){
  double t;
  int i, me, target;
  unsigned int size;

  me = xmp_node_num();
  target = 3 - me;

  init_buf(local_buf, me);
  init_buf(target_buf, me);

  if(me==1) print_items();

  for(size=4;size<MAX_SIZE+1;size*=2){ // size must be more than 4 when using Fujitsu RDMA
    xmp_sync_all(NULL);
    for(i=0;i<LOOP+WARMUP;i++){
      if(WARMUP == i)
        t = wtime();

      if(me == 1){
        local_buf[0:size] = target_buf[0:size]:[target];
	xmp_sync_memory(NULL);
#ifdef DEBUG
	if(local_buf[0] != '2' && local_buf[size-1] != '2') fprintf(stderr, "Error !\n");
	local_buf[0] = '1'; local_buf[size-1] = '1';
#endif
	xmp_sync_all(NULL);
      }
      else{
	xmp_sync_all(NULL);
	local_buf[0:size] = target_buf[0:size]:[target];

#ifdef DEBUG
        if(local_buf[0] != '1' && local_buf[size-1] != '1') fprintf(stderr, "Error !\n");
	local_buf[0] = '2'; local_buf[size-1] = '2';
#endif
      }
      xmp_sync_all(NULL);
    }
示例#21
0
//--------------------------------------------------------
void gmove_in(){

  int result = 0;

#pragma xmp loop on t1[i]
  for (int i = 0; i < N; i++){
    a[i] = 777;
  }

#pragma xmp loop on t2[i]
  for (int i = 0; i < N; i++){
    b[i] = i;
  }

#pragma xmp barrier

#ifdef _MPI3
#pragma xmp gmove in
  a[:] = b[:];
#endif

#pragma xmp loop on t1[i] reduction(+:result)
  for (int i = 0; i < N; i++){
    if (a[i] != i){
      result = 1;
      printf("(%d), %d, %d\n", xmp_node_num(), i, a[i]);
    }
  }

#pragma xmp task on p[0]
  {
    if (result != 0){
      printf("ERROR in gmove_in\n");
      exit(1);
    }
  }

}
int main(){
  int i, a;

  for(i=1;i<col_num+1;i++){
    id = a = xmp_node_num();
#pragma xmp bcast (a) from row(i) on row(:)
    if((((id-1)%row_num)+1) + (i-1)*row_num != a)
      result = -1;
  }

#pragma xmp reduction(+:result)
#pragma xmp task on p(1,1)
  {
    if(result == 0){
      printf("PASS\n");
    }
    else{
      fprintf(stderr, "ERROR\n");
      exit(1);
    }
  }
  return 0;
}
int main(int argc, char **argv)
{
  int comm_size = xmp_num_nodes();
  int node_id   = xmp_node_num();

#pragma xmp loop (j, i) on t(j, i)
  for(int i=0;i<N;i++)
    for(int j=0;j<N;j++)
      a[i][j] = xmp_node_num();

  int node_id_1 = (node_id-1)/P;
  int node_id_2 = (node_id-1)%P;
  int lo_shadow_index_1 = (N/Q) * node_id_1 - 1;
  int hi_shadow_index_1 = (N/Q) * (node_id_1+1);
  int lo_shadow_index_2 = (N/P) * node_id_2 - 1;
  int hi_shadow_index_2 = (N/P) * (node_id_2+1);

#pragma xmp loop (j, i) on t(j, i)
  for(int i=lo_shadow_index_1;i<lo_shadow_index_1+1;i++)
    for(int j=0;j<N;j++)
      a[i][j] = DUMMY_VAL;

#pragma xmp loop (j, i) on t(j, i)
  for(int i=hi_shadow_index_1;i<hi_shadow_index_1+1;i++)
    for(int j=0;j<N;j++)
      a[i][j] = DUMMY_VAL;

#pragma xmp loop (j, i) on t(j, i)
  for(int i=0;i<N;i++)
    for(int j=lo_shadow_index_2;j<lo_shadow_index_2+1;j++)
      a[i][j] = DUMMY_VAL;

#pragma xmp loop (j, i) on t(j, i)
  for(int i=0;i<N;i++)
    for(int j=hi_shadow_index_2;j<hi_shadow_index_2+1;j++)
      a[i][j] = DUMMY_VAL;

#pragma xmp barrier
#pragma acc data copy(a)
  {
#pragma xmp reflect_init (a) acc
    for(int i=0;i<TIMES;i++)
      {
#pragma xmp reflect_do (a) acc
      }
  }

#pragma xmp loop (j, i) on t(j, i)
  for(int i=0;i<N;i++)
    for(int j=0;j<N;j++)
      if(a[i][j] != node_id)
	result = 1;

  int hi_node_id_1 = (node_id <= comm_size-P)? node_id+P : DUMMY_NODE_ID;
  int lo_node_id_1 = (node_id > P)?            node_id-P : DUMMY_NODE_ID;
  int hi_node_id_2 = ((node_id-1)%P != 1)?     node_id+1 : DUMMY_NODE_ID;
  int lo_node_id_2 = ((node_id-1)%P != 0)?     node_id-1 : DUMMY_NODE_ID;

  if(lo_node_id_1 != DUMMY_NODE_ID)
    {
#pragma xmp loop (j, i) on t(j, i)
      for(int i=lo_shadow_index_1;i<lo_shadow_index_1+1;i++)
	for(int j=0;j<N;j++)
	  if(a[i][j] != lo_node_id_1){
	    result = 1;
	    printf("[%d]i=%d j=%d\n",node_id,i,j);}
    }

  if(hi_node_id_1 != DUMMY_NODE_ID)
    {
#pragma xmp loop (j, i) on t(j, i)
      for(int i=hi_shadow_index_1;i<hi_shadow_index_1+1;i++)
	for(int j=0;j<N;j++)
	  if(a[i][j] != hi_node_id_1)
	    result = 1;
    }

  if(lo_node_id_2 != DUMMY_NODE_ID)
    {
#pragma xmp loop (j, i) on t(j, i)
      for(int i=0;i<N;i++)
	for(int j=lo_shadow_index_2;j<lo_shadow_index_2+1;j++)
	  if(a[i][j] != lo_node_id_2)
	    result = 1;
    }

  if(hi_node_id_2 != DUMMY_NODE_ID)
    {
#pragma xmp loop (j, i) on t(j, i)
      for(int i=0;i<N;i++)
	for(int j=hi_shadow_index_2;j<hi_shadow_index_2+1;j++)
	  if(a[i][j] != hi_node_id_2)
	    result = 1;
    }

#pragma xmp reduction(+:result)
#pragma xmp task on p(1,1)
  {
    if(result == 0){
      printf("PASS\n");
    }
    else{
      fprintf(stderr, "ERROR %d\n", result);
      exit(1);
    }
  }

  return 0;
}
示例#24
0
int main(void){
   result = "OK";
  
   procs = xmp_num_nodes();
   p2 = procs/4;
   w1 = 250;
   if(N%p2 == 0){
      w1 = N/p2;
   }else{
      w2 = N/p2+1;
   }
   pi = xmp_node_num()%4;
   pj = xmp_node_num()/4;
 
#pragma xmp loop (j,i) on t(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         a[i][j] = 1;
         b[i][j] = (double)1.0;
         c[i][j] = (float)1.0;
      }
   }
#pragma xmp reflect (a) async(1)
#pragma xmp reflect (b) async(2)
#pragma xmp reflect (c) async(3)

#pragma xmp wait_async(1)
#pragma xmp loop (j,i) on t(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         for(jj=j-4;jj<j+5;jj++){
            for(ii=i-4;ii<i+5;ii++){
               if(ii < 1||ii > N||jj < 1||jj > N){ 
                  continue;
               }else{
                  if(a[ii][jj] != 1) result = "NG1";
               }
            }
         }
      }
   }
#pragma xmp wait_async(2)
#pragma xmp loop (j,i) on t(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         for(jj=j-1;jj<j+2;jj++){
            for(ii=i-1;ii<i+2;ii++){
               if(ii < 1||ii > N||jj < 1||jj > N){ 
                  continue;
               }else{
                  if(b[ii][jj] != 1.0) result = "NG2";
               }
            }
         }
      }
   }
#pragma xmp wait_async(3)
#pragma xmp loop (j,i) on t(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         for(jj=j-3;jj<j+4;jj++){
            for(ii=i-3;ii<i+4;ii++){
               if(ii < 1||ii > N||jj < 1||jj > N){ 
                  continue;
               }else{
                  if(c[ii][jj] != 1.0) result = "NG3";
               }
            }
         }
      }
   }

#pragma xmp loop (j,i) on t(j,i)
   for(j=1;j<N;j++){
      for(i=1;i<N;i++){
         a[i][j] = 2;
         b[i][j] = 2.0;
         c[i][j] = 2.0;
      }
   }

#pragma xmp reflect (a) width(1,1) async(1)
#pragma xmp reflect (b) width(1,1) async(2)
#pragma xmp reflect (c) width(1,2) async(3)

#pragma xmp wait_async(1)
#pragma xmp loop (j,i) on t(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         for(jj=j-1;jj<j+2;jj++){
            for(ii=i-1;ii<i+2;ii++){
               if(ii < 1||ii > N||jj < 1||jj > N){ 
                  continue;   
               }else{
                  if(c[ii][jj] != 2) result = "NG4";
               }
            }
         }
      }
   }  
#pragma xmp wait_async(2)
#pragma xmp loop (j,i) on t(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         for(jj=j-1;jj<j+2;jj++){
            for(ii=i-1;ii<i+2;ii++){
               if(ii < 1||ii > N||jj < 1||jj > N){ 
                  continue;
               }else{
                  if(c[ii][jj] != 2.0) result = "NG5";
               }
            }
         }
      }
   }
#pragma xmp wait_async(3)
#pragma xmp loop (j,i) on t(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         for(jj=j-2;jj<j+3;jj++){
            for(ii=i-2;ii<i+3;ii++){
               if(ii < 1||ii > N||jj < 1||jj > N){ 
                  continue;
               }else{
                  if(c[ii][jj] != 2.0) result = "NG6";
               }
            }
            if(i!=1&&i==pi*w1+1){
               if(c[i-2][j] != 1.0) result = "NG7";
            }
            if(i!=N&&i==(pi+1)*w1){
               if(c[i+2][j] != 1.0) result = "NG8";
            }
            if(j!=1&&j==pj*w2+1){
               if(c[i][j-2] != 1.0) result = "NG9";
            }
            if(j!=1&&j==(pi+1)*w2){
               if(c[i][j+2] != 1.0) result = "NG";
            }
         }
      }
   }               
   printf("%d %s %s\n",xmp_node_num(),"testp113.c",result); 
   return 0;

}
int main(void){
#pragma xmp loop (j,i) on t1(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         a1[i][j] = 0;
         a2[i][j] = j*N+i;
      }
   }
#pragma xmp loop (j,i) on t2(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         b1[i][j] = 0.0;
         b2[i][j] = (double)(j*N+i);
      }
   }
#pragma xmp loop (j,i) on t3(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         c1[i][j] = 0.0;
         c2[i][j] = (float)(j*N+i);
      }   
   }
 
   result = "OK";
#pragma xmp loop (j,i) on t1(j,i)
   for(i=1;i<N-1;i++){
      for(j=1;j<N-1;j++){
#pragma xmp reflect (a2) async(1)
         if(a1[i][j] != 0) result = "NG1";
#pragma xmp wait_async(1)
         for(ii=i-1;ii<i+2;ii++){
            for(jj=j-1;jj<j+2;jj++){
               a1[i][j] = a1[i][j]+a2[ii][jj];
            }
         }
         a1[i][j] = a1[i][j]/9;
      }
   }
#pragma xmp loop (j,i) on t2(j,i)
   for(i=2;i<N-2;i++){
      for(j=2;j<N-2;j++){
#pragma xmp reflect (b2) async(1)
         if(b1[i][j] != 0) result = "NG2";
#pragma xmp wait_async(1)
         for(ii=i-2;ii<i+3;ii++){
            for(jj=j-2;jj<j+3;jj++){
               b1[i][j] = b1[i][j]+b2[ii][jj];
            }
         }
         b1[i][j] = b1[i][j]/25.0;
      }
   }

#pragma xmp loop (j,i) on t3(j,i)
   for(i=3;i<N-3;i++){
      for(j=3;j<N-3;j++){
#pragma xmp reflect (c2) async(1)
         if(c1[i][j] != 0) result = "NG3";
#pragma xmp wait_async(1)
         for(ii=i-3;ii<i+4;ii++){
            for(jj=j-3;jj<j+4;jj++){
               c1[i][j] = c1[i][j]+c2[ii][jj];
            }
         }
         c1[i][j] = c1[i][j]/49.0;
      }
   }

#pragma xmp loop (j,i) on t1(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         if(i==0||i==N-1||j==0||j==N-1){
            if(a1[i][j] != 0) result = "NG4";
         }else{
            if(a1[i][j] != j*N+i) result = "NG5";
         }
      }
   }

#pragma xmp loop (j,i) on t2(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         if(i<=1||i>=N-2||j<=1||j>=N-2){
            if(b1[i][j] != 0.0) result = "NG6";
         }else{
            if(abs(b1[i][j]-(double)(j*N+i))) result = "NG7";
         }
      }
   }

#pragma xmp loop (j,i) on t3(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         if(i<=2||i>=N-3||j<=2||j>=N-3){
            if(c1[i][j] != 0.0) result = "NG8";
         }else{
            if(abs(c1[i][j]-(float)(j*N+i))) result = "NG9";
         }
      }
   }

   printf("%d %s %s\n",xmp_node_num(),"testp101.c",result); 

   return 0;
}
int main(void){

   if(xmp_num_nodes() < 4){
      printf("%s\n","You have to run this program by more than 4 nodes.");
   }
  
   sa=1;
   sb=1.0;
   sc=1.0;

#pragma xmp loop (j,i) on  t1(i,j)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         if((i==j)&&(i%100==0)){
            a[i][j] = 2;
         }else{
            a[i][j] = 1;
         }
      }
   }

#pragma xmp loop (j,i) on t2(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         m = j*N+i;
         if(m%4 == 0){
            b[i][j] = 1.0;
         }else if(m%4 == 1){
            b[i][j] = 2.0;
         }else if(m%4 == 2){
            b[i][j] = 4.0;
         }else{
            b[i][j] = 0.125;
         }
      }
   }
#pragma xmp loop (j,i) on t3(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         m = j*N+i;
         if(m%4 == 0){
            b[i][j] = 0.5;
         }else if(m%4 == 1){
            b[i][j] = 2.0;
         }else if(m%4 == 2){
            b[i][j] = 4.0;
         }else{
            b[i][j] = 0.25;
         }
      }
   }
#pragma xmp loop (j,i) on t1(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         sa = sa*a[i][j];
      }
   }
#pragma xmp reduction (*:sa) async(1)

#pragma xmp loop (j,i) on t2(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         sb = sb*b[i][j];
      }
   }
#pragma xmp reduction (*:sb) async(2)

#pragma xmp loop (j,i) on t3(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         sc = sc*c[i][j];
      }
   }
#pragma xmp reduction (*:sc) async(3)
#pragma xmp wait_async(1)
   sa = sa/2;
#pragma xmp wait_async(2)
   sb = sb/2.0;
#pragma xmp wait_async(3)
   sc = sc/4.0;
  
   result ="OK";
   if(sa != 512||abs(sb-0.5)>0.000001||abs(sc-0.25)>0.0001){
      result = "NG";
   }

   printf("%d %s %s\n",xmp_node_num(),"testp049.c",result); 
   return 0;
}
示例#27
0
int main(void) {

    if(xmp_num_nodes() < 4) {
        printf("%s\n","You have to run this program by more than 4 nodes.");
    }

    sa=0;
    sb=0.0;
    sc=0.0;

#pragma xmp loop on t(i)
    for(i=0; i<N; i++) {
        a[i]=1;
        b[i]=0.5;
        c[i]=0.01;
    }

#pragma xmp loop on t(i)
    for(i=0; i<N; i++) {
        sa = sa-a[i];
    }

#pragma xmp reduction (-:sa) on p(1:2) async(1)

#pragma xmp loop on t(i)
    for(i=0; i<N; i++) {
        sb = sb-b[i];
    }

#pragma xmp wait_async(1)
    sa = sa-1000;

#pragma xmp reduction(-:sb) on p(2:3) async(1)

#pragma xmp loop on t(i)
    for(i=0; i<N; i++) {
        sc = sc-c[i];
    }

#pragma xmp wait_async(1)
    sb = sb-30.0;

#pragma xmp reduction(-:sc) on p(3:4) async(1)
#pragma xmp wait_async(1)
    sc = sc-25.0;

    procs = xmp_num_nodes();
    if((N%procs) == 0) {
        w = N/procs;
    } else {
        w = N/procs+1;
    }
    w1 = (int *)malloc( procs );
    remain = N;
    for(i=1; i<procs; i++) {
        if(w < remain) {
            w1[i] = w;
        } else {
            w1[i] = remain;
        }
        remain = remain - w1[i];
    }
    w1[procs] = remain;

    result = "OK";
    if(xmp_node_num() == 1) {
        if(sa != -(w1[1]+w1[2]+1000)||abs(sb-((double)w1[1]*0.5+30.0)) > 0.000001||abs(sc-((float)w1[1]*0.01+25.0)) > 0.000001) {
            result = "NG";
        }
    } else if(xmp_node_num() == 2) {
        if(sa != -(w1[1]+w1[2]+1000)||abs(sb-((double)(w1[2]+w1[3])*0.5+30.0)) > 0.000001||abs(sc-((float)w1[2]*0.01+25.0)) > 0.000001) {
            result = "NG";
        }
    } else if(xmp_node_num() == 3) {
        if(sa != -(w1[3]+1000)||abs(sb-((double)(w1[2]+w1[3])*0.5+30.0)) > 0.000001||abs(sc-((float)(w1[3]+w1[4])*0.01+25.0)) > 0.000001) {
            result = "NG";
        }
    } else if(xmp_node_num() == 4) {
        if(sa != -(w1[4]+1000)||abs(sb-((double)w1[4]*0.5+30.0)) > 0.000001||abs(sc-((float)(w1[3]+w1[4])*0.01+25.0)) > 0.000001) {
            result = "NG";
        }
    } else {
        i=xmp_node_num();
        if(sa != -(w1[i]+1000)||abs(sb-((double)w1[i]*0.5+30.0)) > 0.000001||abs(sc-((float)w1[i]*0.01+25.0)) > 0.000001) {
            result = "NG";
        }
    }

    printf("%d %s %s\n",xmp_node_num(),"testp031.c",result);
    return 0;
}
int a[SIZE][SIZE][SIZE][SIZE]:[*], b[SIZE][SIZE][SIZE][SIZE]:[*], ret = 0;
int start[DIMS], len[DIMS], stride[DIMS];
int status;



int main(){
  for(int i=0;i<SIZE;i++)
    for(int j=0;j<SIZE;j++)
      for(int k=0;k<SIZE;k++)
	for(int m=0;m<SIZE;m++)
	  b[i][j][k][m] = xmp_node_num();

  for(start[0]=0;start[0]<2;start[0]++){
    for(len[0]=1;len[0]<=SIZE;len[0]++){
      for(stride[0]=1;stride[0]<4;stride[0]++){
	for(start[1]=0;start[1]<2;start[1]++){
	  for(len[1]=1;len[1]<=SIZE;len[1]++){
	    for(stride[1]=1;stride[1]<4;stride[1]++){
	      for(start[2]=0;start[2]<2;start[2]++){
		for(len[2]=1;len[2]<=SIZE;len[2]++){
		  for(stride[2]=1;stride[2]<4;stride[2]++){
		    for(start[3]=0;start[3]<2;start[3]++){
		      for(len[3]=1;len[3]<=SIZE;len[3]++){
			for(stride[3]=1;stride[3]<4;stride[3]++){

			  if(start[0]+(len[0]-1)*stride[0] < SIZE && start[1]+(len[1]-1)*stride[1] < SIZE
			     && start[2]+(len[2]-1)*stride[2] < SIZE && start[3]+(len[3]-1)*stride[3] < SIZE){
			    
			    for(int i=0;i<SIZE;i++)
			      for(int j=0;j<SIZE;j++)
				for(int k=0;k<SIZE;k++)
				  for(int m=0;m<SIZE;m++)
				    a[i][j][k][m] = -1;
			    
			    xmp_sync_all(&status);
			    
			    if(xmp_node_num() == 1){
			      a[start[0]:len[0]:stride[0]][start[1]:len[1]:stride[1]][start[2]:len[2]:stride[2]][start[3]:len[3]:stride[3]] 
				= b[start[0]:len[0]:stride[0]][start[1]:len[1]:stride[1]][start[2]:len[2]:stride[2]][start[3]:len[3]:stride[3]]:[2];

			      for(int i=0;i<len[0];i++){
				int position0 = start[0]+i*stride[0];
				for(int j=0;j<len[1];j++){
				  int position1 = start[1]+j*stride[1];
				  for(int k=0;k<len[2];k++){
				    int position2 = start[2]+k*stride[2];
				    for(int m=0;m<len[3];m++){
				      int position3 = start[3]+m*stride[3];
				      if(a[position0][position1][position2][position3] != 2){
					fprintf(stderr, "a[%d:%d:%d][%d:%d:%d][%d:%d:%d][%d:%d:%d] ",
						start[0], len[0], stride[0], start[1], len[1], stride[1], start[2], len[2], stride[2],
						start[3], len[3], stride[3]);
					ret = -1;
					goto end;
				      }
				    }
				  }
				}
			      }
			    }
			  }
			}
		      }
		    }
		  }
		}
	      }
	    }
	  }
	}
      }
    }
  }
 end:
  xmp_sync_all(&status);
#pragma xmp bcast(ret)
  if(xmp_node_num() == 1)
    if(ret == 0) printf("PASS\n");
    else fprintf(stderr, "ERROR\n");

  return ret;
}
int main(void){
#pragma xmp loop (j,i) on t1(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         if((i == j)&&((i%100)==0)){
            a[i][j] = 2;
         }else{
            a[i][j] = 1;
         }
      }
   }

#pragma xmp loop (j,i) on t2(j,i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         if((i%2)==0){
            if((j%2)==0){
               b[i][j] = 2.0;
            }else{
               b[i][j] = 1.0;
            }
         }else{
            if((j%2)==1){
               b[i][j] = 0.5;
            }else{
               b[i][j] = 1.0;
            }
         }
      }
   }

#pragma xmp loop (j,i) on t3(j,i)
      for(i=0;i<N;i++){
         for(j=0;j<N;j++){
            if((i%2)==0){
               if((j%4)==0){
                  c[i][j] = 1.0;
               }else if((j%4)==1){
                  c[i][j] = 4.0;
               }else if((j%4)==2){
                  c[i][j] = 1.0;
               }else{
                  c[i][j] = 0.25;
               }
            }else{
               if((j%4)==0){
                  c[i][j] = 0.25;
               }else if((j%4)==1){
                  c[i][j] = 1.0;
               }else if((j%4)==2){
                  c[i][j] = 4.0;
               }else{
                  c[i][j] = 1.0;
               }      
            }
         }
      }

      sa1 = 1;
      sb1 = 1.0;
      sc1 = 1.0;
#pragma xmp loop (i) on t1(:,i)
      for(i=0;i<N;i++){
         sa2 = 1;
#pragma xmp loop (j) on t1(j,i)
         for(j=0;j<N;j++){
            sa2 = sa2*a[i][j];
         }
#pragma xmp reduction(*:sa2) async(1)
#pragma xmp loop (j) on t1(j,i)
         for(j=0;j<N;j++){
            a[i][j] = 0;
         }
#pragma xmp wait_async(1)
         sa1 = sa1*sa2;
      }

#pragma xmp loop (i) on t2(:,i)
      for(i=0;i<N;i++){
         sb2 = 1.0;
#pragma xmp loop (j) on t2(j,i)
         for(j=0;j<N;j++){
            sb2 = sb2*b[i][j];
         }
#pragma xmp reduction(*:sb2) async(2)
#pragma xmp loop (j) on t2(j,i)
         for(j=0;j<N;j++){
            b[i][j] = 0;
         }
#pragma xmp wait_async(1)
         sb1 = sb1*sb2;
      }

#pragma xmp loop (i) on t3(:,i)
      for(i=0;i<N;i++){
         sc2 = 1;
#pragma xmp loop (j) on t3(j,i)
         for(j=0;j<N;j++){
            sc2 = sc2*c[i][j];
         }
#pragma xmp reduction(*:sc2) async(3)
#pragma xmp loop (j) on t3(j,i)
         for(j=0;j<N;j++){
            c[i][j] = 0;
         }
#pragma xmp wait_async(1)
         sc1 = sc1*sc2;
      }

      j = xmp_node_num()%4;
#pragma xmp reduction(*:sa1,sb1,sc1) on p(j,:)
 
      result = "OK";
      if(sa1 != 1024||abs(sb1-1.0)>0.000001||abs(sc1-1.0)>0.0001){
         result = "NG";
      }

#pragma xmp loop (j,i) on t1(j,i)
      for(i=0;i<N;i++){
         for(j=0;j<N;j++){
            if(a[i][j] != 0) result = "NG";
         }
      }

#pragma xmp loop (j,i) on t2(j,i)
      for(i=0;i<N;i++){
         for(j=0;j<N;j++){
            if(b[i][j] != 0.0) result = "NG";
         }
      }

#pragma xmp loop (j,i) on t3(j,i)
      for(i=0;i<N;i++){
         for(j=0;j<N;j++){
            if(c[i][j] != 0.0) result = "NG";
         }
      }

      printf("%d %s %s\n",xmp_node_num(),"testp106.c",result); 
      return 0;
   }
示例#30
0
int main(void){
#pragma xmp loop on t(i)
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         a[i][j]=j*N+i;
         b[i][j]=(double)(j*N+i);
         c[i][j]=(float)(j*N+i);
      }
   }

#pragma xmp array on t(:)
   a[222:556:2][333:112:3] = 0;
#pragma xmp array on t(:)
   b[111:667:3][444:112:4] = 0.0;
#pragma xmp array on t(:)
   c[222:667:4][555:112:5] = 0.0;

   result = "OK";

#pragma xmp loop (j,i) on t(j,i)
   for(i=333;i<445;i=i+3){
      for(j=222;j<778;j=j+2){
         if(a[i][j] != 0){
            result="NG";
         }else{
            a[i][j] = j*N*i;
         }
      }
   }

#pragma xmp loop (j,i) on t(j,i)
   for(i=444;i<556;i=i+4){
      for(j=111;j<778;j=j+3){
         if(b[i][j] != 0){
            result = "NG";
         }else{
            b[i][j] = (double)j*N*i;
         }
      }
   }
#pragma xmp loop (j,i) on t(j,i)
   for(i=555;i<667;i=i+5){
      for(j=222;j<889;j=j+4){
         if(c[i][j] != 0){
            result = "NG";
         }else{
            c[i][j] = (float)j*N*i;
         }
      }
   }

#pragma xmp loop (j,i) on t(j,i)
   for(j=0;j<N;j++){
      for(i=0;i<N;i++){
         if(a[i][j] != j*N+i) result="NG";
         if(b[i][j] != (double)(j*N+i)) result="NG";
         if(c[i][j] != (float)(j*N+i)) result="NG";      
      }
   }
   printf("%d %s %s\n",xmp_node_num(),"testp014.c",result); 
   return 0;
}