Loading allvars.c +1 −6 Original line number Diff line number Diff line Loading @@ -4,21 +4,16 @@ struct io file; struct ip in; struct op out; struct op outparam = {"grid.txt", "coords.txt", "grid_real.bin", "grid_img.bin", "fft.txt", "fft_real.bin", "fft_img.bin", "run.log", ".txt", "timings.dat"}; struct op out, outparam; struct meta metaData; struct time timing; struct parameter param; struct fileData data; int w_support = 7; char filename[1000], buf[30], num_buf[30]; char datapath[900]; int xaxis, yaxis; int grid_size_x = 2048; int grid_size_y = 2048; int num_w_planes = 8; int rank; int size; long nsectors; Loading allvars.h +4 −3 Original line number Diff line number Diff line Loading @@ -96,6 +96,10 @@ extern struct parameter int num_threads; int ndatasets; char datapath_multi[NFILES][900]; int grid_size_x; int grid_size_y; int num_w_planes; int w_support; } param; extern struct fileData Loading @@ -117,9 +121,6 @@ extern struct sectorlist { extern char filename[1000], buf[30], num_buf[30]; extern char datapath[900]; extern int xaxis, yaxis; extern int grid_size_x; extern int grid_size_y; extern int num_w_planes, w_support; extern int rank; extern int size; extern long nsectors; Loading data/paramfile.txt +14 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,10 @@ Datapath1 /u/nsakthivel/LOFAR/data/newgauss2noconj_t201806301100_SB Datapath2 /u/nsakthivel/LOFAR/data/newgauss2noconj_t201806301100_SBL180.binMS/ Datapath3 /u/nsakthivel/LOFAR/data/newgauss2noconj_t201806301100_SBL180.binMS/ num_threads 2 w_support 7 grid_size_x 2048 grid_size_y 2048 num_w_planes 8 ufile ucoord.bin vfile vcoord.bin wfile wcoord.bin Loading @@ -10,4 +14,13 @@ weightsfile weights.bin visrealfile visibilities_real.bin visimgfile visibilities_img.bin metafile meta.txt outfile grid.txt outfile1 coords.txt outfile2 grid_real.bin outfile3 grid_img.bin fftfile fft.txt fftfile2 fft_real.bin fftfile3 fft_img.bin logfile run.log extension .txt timingfile timings.dat fourier_transform.c +9 −9 Original line number Diff line number Diff line Loading @@ -11,19 +11,19 @@ void fftw_data(){ start = clock(); fftw_plan plan; ptrdiff_t alloc_local, local_n0, local_0_start; double norm = 1.0/(double)(grid_size_x*grid_size_y); double norm = 1.0/(double)(param.grid_size_x*param.grid_size_y); // map the 1D array of complex visibilities to a 2D array required by FFTW (complex[*][2]) // x is the direction of contiguous data and maps to the second parameter // y is the parallelized direction and corresponds to the first parameter (--> n0) // and perform the FFT per w plane alloc_local = fftw_mpi_local_size_2d(grid_size_y, grid_size_x, MPI_COMM_WORLD,&local_n0, &local_0_start); alloc_local = fftw_mpi_local_size_2d(param.grid_size_y, param.grid_size_x, MPI_COMM_WORLD,&local_n0, &local_0_start); fftwgrid = fftw_alloc_complex(alloc_local); plan = fftw_mpi_plan_dft_2d(grid_size_y, grid_size_x, fftwgrid, fftwgrid, MPI_COMM_WORLD, FFTW_BACKWARD, FFTW_ESTIMATE); plan = fftw_mpi_plan_dft_2d(param.grid_size_y, param.grid_size_x, fftwgrid, fftwgrid, MPI_COMM_WORLD, FFTW_BACKWARD, FFTW_ESTIMATE); long fftwindex = 0; long fftwindex2D = 0; for (int iw=0; iw<num_w_planes; iw++) for (int iw=0; iw<param.num_w_planes; iw++) { //printf("FFTing plan %d\n",iw); //select the w-plane to transform Loading Loading @@ -98,9 +98,9 @@ void write_fftw_data(){ gridss_real[i] = gridss_w[2*i]; gridss_img[i] = gridss_w[2*i+1]; } if (num_w_planes > 1) if (param.num_w_planes > 1) { for (int iw=0; iw<num_w_planes; iw++) for (int iw=0; iw<param.num_w_planes; iw++) for (int iv=0; iv<yaxis; iv++) for (int iu=0; iu<xaxis; iu++) { Loading @@ -109,7 +109,7 @@ void write_fftw_data(){ fseek(file.pFilereal, global_index, SEEK_SET); fwrite(&gridss_real[index], 1, sizeof(double), file.pFilereal); } for (int iw=0; iw<num_w_planes; iw++) for (int iw=0; iw<param.num_w_planes; iw++) for (int iv=0; iv<yaxis; iv++) for (int iu=0; iu<xaxis; iu++) { Loading @@ -128,7 +128,7 @@ void write_fftw_data(){ } #else /* for (int iw=0; iw<num_w_planes; iw++) for (int iw=0; iw<param.num_w_planes; iw++) for (int iv=0; iv<grid_size_y; iv++) for (int iu=0; iu<grid_size_x; iu++) { Loading Loading @@ -160,7 +160,7 @@ void write_fftw_data(){ double* image_real = (double*) calloc(xaxis*yaxis,sizeof(double)); double* image_imag = (double*) calloc(xaxis*yaxis,sizeof(double)); phase_correction(gridss,image_real,image_imag,xaxis,yaxis,num_w_planes,grid_size_x,grid_size_y,resolution,metaData.wmin,metaData.wmax,param.num_threads); phase_correction(gridss,image_real,image_imag,xaxis,yaxis,param.num_w_planes,param.grid_size_x,param.grid_size_y,resolution,metaData.wmin,metaData.wmax,param.num_threads); end = clock(); clock_gettime(CLOCK_MONOTONIC, &finish); Loading gridding.c +4 −4 Original line number Diff line number Diff line Loading @@ -91,7 +91,7 @@ void gridding_data(){ // Create sector grid size_of_grid = 2*num_w_planes*xaxis*yaxis; size_of_grid = 2*param.num_w_planes*xaxis*yaxis; gridss = (double*) calloc(size_of_grid,sizeof(double)); gridss_w = (double*) calloc(size_of_grid,sizeof(double)); gridss_real = (double*) calloc(size_of_grid/2,sizeof(double)); Loading Loading @@ -221,7 +221,7 @@ void gridding_data(){ clock_gettime(CLOCK_MONOTONIC, &begink); startk = clock(); wstack(num_w_planes, wstack(param.num_w_planes, Nsec, metaData.freq_per_chan, metaData.polarisations, Loading @@ -233,7 +233,7 @@ void gridding_data(){ weightss, dx, dw, w_support, param.w_support, xaxis, yaxis, gridss, Loading Loading @@ -286,7 +286,7 @@ void gridding_data(){ timing.reduce_time1 += (finishk.tv_sec - begink.tv_sec); timing.reduce_time1 += (finishk.tv_nsec - begink.tv_nsec) / 1000000000.0; // Go to next sector for (long inull=0; inull<2*num_w_planes*xaxis*yaxis; inull++)gridss[inull] = 0.0; for (long inull=0; inull<2*param.num_w_planes*xaxis*yaxis; inull++)gridss[inull] = 0.0; // Deallocate all sector arrays free(uus); Loading Loading
allvars.c +1 −6 Original line number Diff line number Diff line Loading @@ -4,21 +4,16 @@ struct io file; struct ip in; struct op out; struct op outparam = {"grid.txt", "coords.txt", "grid_real.bin", "grid_img.bin", "fft.txt", "fft_real.bin", "fft_img.bin", "run.log", ".txt", "timings.dat"}; struct op out, outparam; struct meta metaData; struct time timing; struct parameter param; struct fileData data; int w_support = 7; char filename[1000], buf[30], num_buf[30]; char datapath[900]; int xaxis, yaxis; int grid_size_x = 2048; int grid_size_y = 2048; int num_w_planes = 8; int rank; int size; long nsectors; Loading
allvars.h +4 −3 Original line number Diff line number Diff line Loading @@ -96,6 +96,10 @@ extern struct parameter int num_threads; int ndatasets; char datapath_multi[NFILES][900]; int grid_size_x; int grid_size_y; int num_w_planes; int w_support; } param; extern struct fileData Loading @@ -117,9 +121,6 @@ extern struct sectorlist { extern char filename[1000], buf[30], num_buf[30]; extern char datapath[900]; extern int xaxis, yaxis; extern int grid_size_x; extern int grid_size_y; extern int num_w_planes, w_support; extern int rank; extern int size; extern long nsectors; Loading
data/paramfile.txt +14 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,10 @@ Datapath1 /u/nsakthivel/LOFAR/data/newgauss2noconj_t201806301100_SB Datapath2 /u/nsakthivel/LOFAR/data/newgauss2noconj_t201806301100_SBL180.binMS/ Datapath3 /u/nsakthivel/LOFAR/data/newgauss2noconj_t201806301100_SBL180.binMS/ num_threads 2 w_support 7 grid_size_x 2048 grid_size_y 2048 num_w_planes 8 ufile ucoord.bin vfile vcoord.bin wfile wcoord.bin Loading @@ -10,4 +14,13 @@ weightsfile weights.bin visrealfile visibilities_real.bin visimgfile visibilities_img.bin metafile meta.txt outfile grid.txt outfile1 coords.txt outfile2 grid_real.bin outfile3 grid_img.bin fftfile fft.txt fftfile2 fft_real.bin fftfile3 fft_img.bin logfile run.log extension .txt timingfile timings.dat
fourier_transform.c +9 −9 Original line number Diff line number Diff line Loading @@ -11,19 +11,19 @@ void fftw_data(){ start = clock(); fftw_plan plan; ptrdiff_t alloc_local, local_n0, local_0_start; double norm = 1.0/(double)(grid_size_x*grid_size_y); double norm = 1.0/(double)(param.grid_size_x*param.grid_size_y); // map the 1D array of complex visibilities to a 2D array required by FFTW (complex[*][2]) // x is the direction of contiguous data and maps to the second parameter // y is the parallelized direction and corresponds to the first parameter (--> n0) // and perform the FFT per w plane alloc_local = fftw_mpi_local_size_2d(grid_size_y, grid_size_x, MPI_COMM_WORLD,&local_n0, &local_0_start); alloc_local = fftw_mpi_local_size_2d(param.grid_size_y, param.grid_size_x, MPI_COMM_WORLD,&local_n0, &local_0_start); fftwgrid = fftw_alloc_complex(alloc_local); plan = fftw_mpi_plan_dft_2d(grid_size_y, grid_size_x, fftwgrid, fftwgrid, MPI_COMM_WORLD, FFTW_BACKWARD, FFTW_ESTIMATE); plan = fftw_mpi_plan_dft_2d(param.grid_size_y, param.grid_size_x, fftwgrid, fftwgrid, MPI_COMM_WORLD, FFTW_BACKWARD, FFTW_ESTIMATE); long fftwindex = 0; long fftwindex2D = 0; for (int iw=0; iw<num_w_planes; iw++) for (int iw=0; iw<param.num_w_planes; iw++) { //printf("FFTing plan %d\n",iw); //select the w-plane to transform Loading Loading @@ -98,9 +98,9 @@ void write_fftw_data(){ gridss_real[i] = gridss_w[2*i]; gridss_img[i] = gridss_w[2*i+1]; } if (num_w_planes > 1) if (param.num_w_planes > 1) { for (int iw=0; iw<num_w_planes; iw++) for (int iw=0; iw<param.num_w_planes; iw++) for (int iv=0; iv<yaxis; iv++) for (int iu=0; iu<xaxis; iu++) { Loading @@ -109,7 +109,7 @@ void write_fftw_data(){ fseek(file.pFilereal, global_index, SEEK_SET); fwrite(&gridss_real[index], 1, sizeof(double), file.pFilereal); } for (int iw=0; iw<num_w_planes; iw++) for (int iw=0; iw<param.num_w_planes; iw++) for (int iv=0; iv<yaxis; iv++) for (int iu=0; iu<xaxis; iu++) { Loading @@ -128,7 +128,7 @@ void write_fftw_data(){ } #else /* for (int iw=0; iw<num_w_planes; iw++) for (int iw=0; iw<param.num_w_planes; iw++) for (int iv=0; iv<grid_size_y; iv++) for (int iu=0; iu<grid_size_x; iu++) { Loading Loading @@ -160,7 +160,7 @@ void write_fftw_data(){ double* image_real = (double*) calloc(xaxis*yaxis,sizeof(double)); double* image_imag = (double*) calloc(xaxis*yaxis,sizeof(double)); phase_correction(gridss,image_real,image_imag,xaxis,yaxis,num_w_planes,grid_size_x,grid_size_y,resolution,metaData.wmin,metaData.wmax,param.num_threads); phase_correction(gridss,image_real,image_imag,xaxis,yaxis,param.num_w_planes,param.grid_size_x,param.grid_size_y,resolution,metaData.wmin,metaData.wmax,param.num_threads); end = clock(); clock_gettime(CLOCK_MONOTONIC, &finish); Loading
gridding.c +4 −4 Original line number Diff line number Diff line Loading @@ -91,7 +91,7 @@ void gridding_data(){ // Create sector grid size_of_grid = 2*num_w_planes*xaxis*yaxis; size_of_grid = 2*param.num_w_planes*xaxis*yaxis; gridss = (double*) calloc(size_of_grid,sizeof(double)); gridss_w = (double*) calloc(size_of_grid,sizeof(double)); gridss_real = (double*) calloc(size_of_grid/2,sizeof(double)); Loading Loading @@ -221,7 +221,7 @@ void gridding_data(){ clock_gettime(CLOCK_MONOTONIC, &begink); startk = clock(); wstack(num_w_planes, wstack(param.num_w_planes, Nsec, metaData.freq_per_chan, metaData.polarisations, Loading @@ -233,7 +233,7 @@ void gridding_data(){ weightss, dx, dw, w_support, param.w_support, xaxis, yaxis, gridss, Loading Loading @@ -286,7 +286,7 @@ void gridding_data(){ timing.reduce_time1 += (finishk.tv_sec - begink.tv_sec); timing.reduce_time1 += (finishk.tv_nsec - begink.tv_nsec) / 1000000000.0; // Go to next sector for (long inull=0; inull<2*num_w_planes*xaxis*yaxis; inull++)gridss[inull] = 0.0; for (long inull=0; inull<2*param.num_w_planes*xaxis*yaxis; inull++)gridss[inull] = 0.0; // Deallocate all sector arrays free(uus); Loading