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; }
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; }
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]); }
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; } }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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); }
//-------------------------------------------------------- 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; }
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; }
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; }
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; }