CPU2006_ApplyBndRobin.c

loading
details
attribute value
description
owner Johannes Waldmann
uploaded 2017-08-17 03:45:23.0
disk size 3.63 KB
downloadable true
type
attribute value
name no_type
processor id 1
description this is the default benchmark type for rejected benchmarks and benchmarks that are not associated with a type.
owning community none
loading contents
//taken from SPEC CPU2006	cactusADM/RobinBoundary.c 	ApplyBndRobin

int random();

//O(n^4)
void ApplyBndRobin(int GH_cctk_lsh_0, int GH_cctk_lsh_1, int GH_cctk_lsh_2, int first_var, int num_vars) {
  int var;
  for (var = first_var; var < first_var + num_vars; var++) {
	int i, j, k;
	int dy, dz;
 	//int dx;
	/*int src, dst;
	double distance;*/
	for (k = 0; k < GH_cctk_lsh_2; k++) {
	    dz = 0;
	    if (k == 0 && random()) {
		dz = +1;
	    } else if (random()) {
		dz = -1;
	    }
	    for (j = 0; j < GH_cctk_lsh_1; j++) {
		dy = 0;
		if (j == 0 && random()) {
		    dy = +1;
		} else if (random()) {
		    dy = -1;
		}
		/*if (doBC[0]) {
		    dx = +1; {
			dst = ((0) + (GH)->cctk_lsh[0] * ((j) + (GH)->cctk_lsh[1] * (k)));
			src = ((0 + dx) + (GH)->cctk_lsh[0] * ((j + dy) + (GH)->cctk_lsh[1] * (k + dz)));
			distance = dist[abs(dx) + 2 * abs(dy) + 4 * abs(dz)];
		    }; {
			CCTK_CHAR *data;
			double u_src, u_dst, aux;
			if (abs(dx) + abs(dy) + abs(dz) == 1) {
			    u_dst = fabs((double) (dx ? x[dst] : (dy ? y[dst] : z[dst])));
			    u_src = fabs((double) (dx ? x[src] : (dy ? y[src] : z[src])));
			} else {
			    u_dst = sqrt(((dx * x[dst]) * (dx * x[dst])) + ((dy * y[dst]) * (dy * y[dst])) + ((dz * z[dst]) * (dz * z[dst])));
			    u_src = sqrt(((dx * x[src]) * (dx * x[src])) + ((dy * y[src]) * (dy * y[src])) + ((dz * z[src]) * (dz * z[src])));
			}
			aux = decay * distance * (u_src + u_dst) / ((r[src] + r[dst]) * (r[src] + r[dst]));
			data = (CCTK_CHAR *) GH->data[var][0];
			data[dst] = (CCTK_CHAR) ((2 * aux * finf + data[src] * (1 - aux)) / (1 + aux));
		    };
		}*/
		if (dy || dz) {
		    /*dx = 0; {
			dst = ((1) + (GH)->cctk_lsh[0] * ((j) + (GH)->cctk_lsh[1] * (k)));
			src = ((1 + dx) + (GH)->cctk_lsh[0] * ((j + dy) + (GH)->cctk_lsh[1] * (k + dz)));
			distance = dist[abs(dx) + 2 * abs(dy) + 4 * abs(dz)];
		    };*/
		    for (i = 1; i < GH_cctk_lsh_0 - 1; i++) { { //, src++, dst++
			    /*CCTK_CHAR *data;
			    double u_src, u_dst, aux;
			    if (abs(dx) + abs(dy) + abs(dz) == 1) {
				u_dst = fabs((double) (dx ? x[dst] : (dy ? y[dst] : z[dst])));
				u_src = fabs((double) (dx ? x[src] : (dy ? y[src] : z[src])));
			    } else {
				u_dst = sqrt(((dx * x[dst]) * (dx * x[dst])) + ((dy * y[dst]) * (dy * y[dst])) + ((dz * z[dst]) * (dz * z[dst])));
				u_src = sqrt(((dx * x[src]) * (dx * x[src])) + ((dy * y[src]) * (dy * y[src])) + ((dz * z[src]) * (dz * z[src])));
			    }
			    aux = decay * distance * (u_src + u_dst) / ((r[src] + r[dst]) * (r[src] + r[dst]));
			    data = (CCTK_CHAR *) GH->data[var][0];
			    data[dst] = (CCTK_CHAR) ((2 * aux * finf + data[src] * (1 - aux)) / (1 + aux));*/
		    };
		    }
		}
		/*if (doBC[1]) {
		    dx = -1; {
			dst = ((GH->cctk_lsh[0] - 1) + (GH)->cctk_lsh[0] * ((j) + (GH)->cctk_lsh[1] * (k)));
			src = ((GH->cctk_lsh[0] - 1 + dx) + (GH)->cctk_lsh[0] * ((j + dy) + (GH)->cctk_lsh[1] * (k + dz)));
			distance = dist[abs(dx) + 2 * abs(dy) + 4 * abs(dz)];
		    }; {
			CCTK_CHAR *data;
			double u_src, u_dst, aux;
			if (abs(dx) + abs(dy) + abs(dz) == 1) {
			    u_dst = fabs((double) (dx ? x[dst] : (dy ? y[dst] : z[dst])));
			    u_src = fabs((double) (dx ? x[src] : (dy ? y[src] : z[src])));
			} else {
			    u_dst = sqrt(((dx * x[dst]) * (dx * x[dst])) + ((dy * y[dst]) * (dy * y[dst])) + ((dz * z[dst]) * (dz * z[dst])));
			    u_src = sqrt(((dx * x[src]) * (dx * x[src])) + ((dy * y[src]) * (dy * y[src])) + ((dz * z[src]) * (dz * z[src])));
			}
			aux = decay * distance * (u_src + u_dst) / ((r[src] + r[dst]) * (r[src] + r[dst]));
			data = (CCTK_CHAR *) GH->data[var][0];
			data[dst] = (CCTK_CHAR) ((2 * aux * finf + data[src] * (1 - aux)) / (1 + aux));
		    };
		}*/
	    }
	}
  }
}


popout

content may be truncated. 'popout' for larger text window.

actions get anonymous link download benchmark