コード例 #1
0
ファイル: main.c プロジェクト: parahunter/HPC
int main(int argc, char* argv[])
{
    printf("Gauss Sequential\n");
    n=5;
    if(argc>=2) n = atoi(argv[1]);
    printf("N=%i\n",n);
    nn = n+2;
    h = 2.0/n;
    hh = h*h;

    char mode='i'; // e for Err or i for iteration
    int iterations;
    double errLimit;
    if(argc>=4)
    {
        if(argv[2][0] == 'i')
        {
            mode = 'i';
            iterations = atoi(argv[3]);
        }
        if(argv[2][0] == 'e')
        {
            mode = 'e';
            errLimit = atof(argv[3]);
        }
    }
    u=createMat(n);
    double wt = omp_get_wtime();
    clock_t t = clock();
    if(mode=='i')
    {
        gaussIterations(iterations);
    }
    else
    {
        gaussErr(errLimit);
    }
    wt = omp_get_wtime()-wt;
    t = clock()-t;

    //output section

    printf("Thresold:\t%f\n",lastErr);
    printf("Iterations:\t%i\n",lastIteration);
    printf("W Time:\t%f\n",wt);
    printf("C Time:\t%f\n",((float)t)/CLOCKS_PER_SEC);

    //writepng("img.png", u, n+2, n+2);
    writeImg (n+2, u);
    if(argc>=5 && argv[4][0]=='p')
        print(u, nn);
}
コード例 #2
0
ファイル: srf.c プロジェクト: chneukirchen/netpbm-mirror
void
srf_write(FILE *       const ofP,
          struct srf * const srfP) {

    uint8_t      srfCsum;    /* checksum value in SRF image */
    size_t       padLen;
    unsigned int i;
    size_t       bytesWritten;

    padLen = 1;  /* initial value */

    if (!checkHeader(&srfP->header))
        pm_error("invalid srf header");
    if (!writeHeader(ofP, &srfP->header))
        pm_error("write srf header");
    padLen += lenHeader(&srfP->header);

    for (i = 0; i < srfP->header.img_cnt; ++i) {
        if (!writeImg(ofP, i, &srfP->imgs[i]))
            pm_error("invalid srf image %u", i);
        padLen += lenImg(&srfP->imgs[i]);
    }

    /* Pad to 256 bytes */
    padLen = 256 - (padLen % 256);
    if (padLen) {
        char * d;
        size_t bytesWritten;

        MALLOCARRAY(d, padLen);

        if (!d)
            pm_error("Could not allocate memory for %u bytes of padding",
                     (unsigned)padLen);

        memset(d, 0xff, padLen);

        bytesWritten = fwrite(d, 1, padLen, ofP);

        if (bytesWritten != padLen)
            pm_error("unable to 0xff pad file");

        free(d);
    }

    /* Write out checksum byte */
    srfCsum = 0xff - csum(srfP, padLen) + 1;
    bytesWritten = fwrite(&srfCsum, 1, 1, ofP);
    if (bytesWritten != 1)
        pm_error("unable to write checksum");
}
コード例 #3
0
ファイル: main.c プロジェクト: parahunter/HPC
int main ( int argc, char *argv[] ) 
{
	printf("Jacobi Sequential\n");
	if(argc>=2)
		n = atoi(argv[1]);
	else
		n = 6;

	realSize = n + 2;
	h = 2.0/n;
	hh=h*h;
	u1 = createMat(n);
	u2 = createMat(n);

	if(argc>=3) 
	{
		if(argv[2][0] == 'i')
		{
			mode = 'i';
			iterationsLeft = atoi(argv[3]);
		}
			else 
		if(argv[2][0] == 'e')
		{
			mode = 'e';
			errLimit = atof(argv[3]);
		}
	}


	double wt = omp_get_wtime();
	clock_t t = clock();
	double err;
	
	
	if(mode=='i')
	{
		iterations=iterationsLeft;
		for(int i=0; i<(iterationsLeft/2)-1; i++)
		{
			updateMat(u1, u2);
			updateMat(u2, u1);
		}
		updateMat(u1, u2);
		err = updateMatE(u2, u1);
	}
	if(mode=='e')
	{
		err = 2*errLimit;
		iterations=0;
		int iterBlock=100;
		while(err>errLimit)
		{

			for(int i=0; i<(iterBlock/2)-1; i++)
			{
				updateMat(u1, u2);
				updateMat(u2, u1);
			}
			updateMat(u1, u2);
			err=updateMatE(u2, u1);

			iterations += iterBlock;
		}
	}
	wt = omp_get_wtime()-wt;
	t = clock()-t;

	printf("Thresold:\t%f\n",err);
	printf("Iterations:\t%i\n",iterations);
	printf("W Time:\t%f\n",wt);
	printf("C Time:\t%f\n",((float)t)/CLOCKS_PER_SEC);
	
	writeImg (n+2, u1);

	if(argc>=5 && argv[4][0] == 'p')
		print(u1, realSize);

	return 0;
}