Exemple #1
0
int main (int argc, char *argv[]){
	int i, j, k, error = 0;
	double A[N][N], B[N][N], C[N][N], D[N][N], sum;
	double A1[N][N];
	double C1[N][N];
	double time1, time2;
	int P;
	int blksz;
	
	SZ_Init (P);
	
	if (N % P != 0) printf ("Error -- N/P must be an integer\n");
	
	for (i = 0; i < N; ++i)
		for (j = 0; j < N; ++j)
			A[i][j] = j * 1; B[i][j] = i * j + 2;
			
	for (i = 0; i < N; ++i)
		for (j = 0; j < N; ++j){
			sum = 0;
			for (k = 0; k < N; ++k)
				sum += A[i][k] * B[k][i];
			D[i][j] = sum;
		}
		
	time1 = SZ_Wtime ();
	SZ_Parallel_begin
		SZ_Scatter (A, A1);
		SZ_Broadcast (B);
		
		blksz = N/P;
		for (i = 0; i < N; ++i){
			for (j = 0; j < N; ++j){
				sum = 0;
				for (k = 0; k < N; ++k){
					sum += A1[i][k] * B[k][j];
				}
				C1[i][j] = sum;
			}
		}
		
		SZ_Gather (C1, C);
	SZ_Parallel_end;
	time2 = SZ_Wtime ();
	
	int error = 0;
	for (i = 0; i < N; ++i)
		for (j = 0; j < N; ++j)
			if ((C[i][j] - D[i][j] > 0.001) || (D[i][j] - C[i][j] > 0.001)) error = -1;
			
	if (error == -1) printf ("ERROR, sequential and parallel code give different answers.\n");
	else printf ("Sequential and parallel code give same answers.\n");
	
	printf ("elapsed_time = %f (seconds)\n", time2 - time1);
	
	SZ_Finalize ();
	return 0;
}
Exemple #2
0
int main (int argc, char *argv[]){
	double t;
	double T;
	double A[6][5] = {{25.0, 400.0, 400.0, 0.0, 0.0}, {20.0, 200.0, 400.0, 3.0, 4.0}, {30.0, 50.0, 600.0, 1.0, 0.0},
				   {50.0, 400.0, 200.0, 1.0, 0.0}, {40.0, 700.0, 700.0, -1.0, 0.0}, {70.0, 200.0, 100.0, -1.0, 0.0}};
	int N = 6;
	double x_diff, y_diff, r, F, Fx[N], Fy[N], new_x[N], new_y[N];
	int i, j, a;
	int P;
	
	SZ_Init (P);
	
	printf ("Number of time intervals?\n");
	scanf ("%lf", &T);
	
	printf ("Length of time interval?\n");
	scanf ("%lf", &t);
	
	printf ("\n");
	printf ("Mass\tx pos\ty pos\tx vel\t y vel\n");
	
	for (i = 0; i < 6; ++i){
		for (j = 0; j < 5; ++j){
			printf ("%.2f\t", A[i][j]);
		}
		printf ("\n");
	}
	
	SZ_Parallel_begin
		SZ_Broadcast (&T);
		SZ_Broadcast (&t);
		for (i = 0; i < T; ++i){
			SZ_Broadcast (A);
		
			a = SZ_Get_process_num();
			Fx[a] = A[a][3];
			Fy[a] = A[a][4];
	
			for (j = 0; j < N; ++j){
				if (a != j){
					x_diff = A[j][1] - A[a][1];
					y_diff = A[j][2] - A[a][2];
					r = sqrt ((x_diff * x_diff) + (y_diff * y_diff));
					F = (G * A[a][0] * A[j][0]) / (r * r);
					Fx[a] += F * ((A[a][3] - A[j][3]) / r);
					Fy[a] += F * ((A[a][4] - A[j][4]) / r);
			
					if (((A[a][0] + A[j][0]) / 2) > r){
						A[a][0] = 0.0;
						A[j][0] = 0.0;
					}
				}
			}
	
			new_x[a] = (Fx[a] * t) + A[a][1];
			new_y[a] = (Fy[a] * t) + A[a][2];
	
			if (new_x[a] > 1000.0){
				new_x[a] = 1000.0 - (new_x[a] - 1000.0);
			} else if (new_x[a] < 0){
				new_x[a] = new_x[a] * -1; 
			}
	
			if (new_y[a] > 1000.0){
				new_y[a] = 1000.0 - (new_y[a] - 1000.0);
			} else if (new_y[a] < 0){
				new_y[a] = new_y[a] * -1;  
			}
	
			A[a][3] = Fx[a];
			A[a][4] = Fy[a];
			A[a][1] = new_x[a];
			A[a][2] = new_y[a];
		
			SZ_AllBroadcast (A);
		}
	SZ_Parallel_end;
	
	printf ("\n");
	printf ("Mass\tx pos\ty pos\tx vel\t y vel\n");
	
	for (i = 0; i < 6; ++i){
		for (j = 0; j < 5; ++j){
			printf ("%.2f\t", A[i][j]);
		}
		printf ("\n");
	}
	
	SZ_Finalize();
	return 0; 
}
int main(int argc, char * argv[])
{
    int i = 0;
    size_t r5=0,r4=0,r3=0,r2=0,r1=0;
    char oriDir[640], outputDir[640], outputFilePath[600];
    char *cfgFile;
    
    if(argc < 3)
    {
		printf("Test case: testfloat_compress_ts [config_file] [srcDir] [dimension sizes...]\n");
		printf("Example: testfloat_compress_ts sz.config /home/sdi/Data/Hurricane-ISA/consecutive-steps 500 500 100\n");
		exit(0);
    }
   
    cfgFile=argv[1];
    sprintf(oriDir, "%s", argv[2]);
    if(argc>=4)
		r1 = atoi(argv[3]); //8
    if(argc>=5)
		r2 = atoi(argv[4]); //8
    if(argc>=6)
		r3 = atoi(argv[5]); //128
    if(argc>=7)
        r4 = atoi(argv[6]);
    if(argc>=8)
        r5 = atoi(argv[7]);
   
    printf("cfgFile=%s\n", cfgFile); 
    int status = SZ_Init(cfgFile);
    if(status == SZ_NSCS)
		exit(0);
    sprintf(outputDir, "%s", oriDir);
   
    char oriFilePath[600];
    size_t nbEle;
    size_t dataLength = computeDataLength(r5,r4,r3,r2,r1);
    float *data = (float*)malloc(sizeof(float)*dataLength);
    SZ_registerVar("xx", SZ_FLOAT, data, REL, 0, 0.0001, 0, r5, r4, r3, r2, r1);

    if(status != SZ_SCES)
    {
		printf("Error: data file %s cannot be read!\n", oriFilePath);
		exit(0);
    }
   
    size_t outSize; 
    unsigned char *bytes = NULL;
    for(i=1;i<83;i++)
	{
		printf("simulation time step %d\n", i);
		sprintf(oriFilePath, "%s/exalt-%d-2.dat", oriDir, i);
		printf("processing file: %s\n", oriFilePath);
		float *data_ = readFloatData(oriFilePath, &nbEle, &status);
		memcpy(data, data_, nbEle*sizeof(float));
		cost_start();
		SZ_compress_ts(&bytes, &outSize);
		cost_end();
		printf("timecost=%f\n",totalCost); 
		sprintf(outputFilePath, "%s/exalt-%d-2.dat.sz2", outputDir, i);
		printf("writing compressed data to %s\n", outputFilePath);
		writeByteData(bytes, outSize, outputFilePath, &status); 
		free(bytes);
		free(data_);
	}
    
    printf("done\n");
    free(data);
    SZ_Finalize();
    
    return 0;
}
Exemple #4
0
void sz_finalize_c_()
{
	SZ_Finalize();
}