# HG changeset patch # User Yuhi TOMARI # Date 1360050013 -32400 # Node ID 1b8da19bb31c1ad487c7891a7cb7ae8ec000f93e # Parent ea2e7ce9d5bbd1d34e580112f86dd40b7635615c change time measure point diff -r ea2e7ce9d5bb -r 1b8da19bb31c fft_fixstart/main.cc --- a/fft_fixstart/main.cc Tue Feb 05 15:19:02 2013 +0900 +++ b/fft_fixstart/main.cc Tue Feb 05 16:40:13 2013 +0900 @@ -129,7 +129,7 @@ char * init(int argc, char**argv){ - + char *filename = 0; for (int i = 1; argv[i]; ++i) { @@ -170,7 +170,7 @@ pgm_t ipgm; pgm_t opgm; - + const char fileName[] = "./fft.cl"; size_t source_size; char *source_str; @@ -183,7 +183,7 @@ /* Load kernel source code */ int fd = open(fileName, O_RDONLY); - + if (fd<0) { fprintf(stderr, "Failed to load kernel %s.\n",fileName); exit(1); @@ -200,12 +200,12 @@ close( fd ); char * pgm_file = init(argc,argv); - + /* Read image */ int err = readPGM(&ipgm, pgm_file); if (err<0) { fprintf(stderr, "Failed to read image file.\n"); - exit(1); + exit(1); } n = ipgm.width; @@ -233,14 +233,12 @@ /* Create Command queue */ queue = clCreateCommandQueue(context, device_id, 0, &ret); + st_time = getTime(); /* Create Buffer Objects */ xmobj = clCreateBuffer(context, CL_MEM_READ_WRITE, n*n*sizeof(cl_float2), NULL, &ret); rmobj = clCreateBuffer(context, CL_MEM_READ_WRITE, n*n*sizeof(cl_float2), NULL, &ret); wmobj = clCreateBuffer(context, CL_MEM_READ_WRITE, (n/2)*sizeof(cl_float2), NULL, &ret); - - st_time = getTime(); - /* Transfer data to memory buffer */ ret = clEnqueueWriteBuffer(queue, xmobj, CL_TRUE, 0, n*n*sizeof(cl_float2), xm, 0, NULL, NULL); @@ -253,7 +251,7 @@ if (ret<0) { size_t size; clGetProgramBuildInfo(program, device_id, CL_PROGRAM_BUILD_LOG, 0, NULL, &size); - + char *log = new char[size]; clGetProgramBuildInfo(program, device_id, CL_PROGRAM_BUILD_LOG, size, log, NULL); printf("%s ",log); @@ -304,10 +302,10 @@ ret = clEnqueueTask(queue, trns, 0, NULL, NULL); /* Butterfly Operation */ - + fftCore(xmobj, rmobj, wmobj, m, inverse); - - /* Read data from memory buffer */ + + /* Read data from memory buffer */ ret = clEnqueueReadBuffer(queue, xmobj, CL_TRUE, 0, n*n*sizeof(cl_float2), xm, 0, NULL, NULL); /* */ @@ -322,6 +320,9 @@ opgm.height = n; normalizeF2PGM(&opgm, ampd); free(ampd); + ret = clFlush(queue); + ret = clFinish(queue); + ed_time = getTime(); /* Write out image */ writePGM(&opgm, "output.pgm"); @@ -329,7 +330,6 @@ /* Finalizations*/ ret = clFlush(queue); ret = clFinish(queue); - ed_time = getTime(); ret = clReleaseKernel(hpfl); ret = clReleaseKernel(trns); ret = clReleaseKernel(sfac);