Loading Makefile +9 −9 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ endif FFTW_MPI_INC = -I/${HOME}/include FFTW_MPI_LIB = /${HOME}/lib CFLAGS += $(FFTW_MPI_INC) CFLAGS += $(FFTW_MPI_INC) -I/proto.h LIBS = -L$(FFTW_MPI_LIB) -lfftw3_mpi -lfftw3 -lm #-lcudart -lcuda # create MPI code Loading @@ -39,8 +39,8 @@ OPT += -DWRITE_IMAGE OPT += -DPHASE_ON DEPS = w-stacking.h w-stacking-fftw.c w-stacking.cu phase_correction.cu allvars.h COBJ = w-stacking.o w-stacking-fftw.o phase_correction.o allvars.o DEPS = w-stacking.h main.c w-stacking.cu phase_correction.cu allvars.h init.c COBJ = w-stacking.o main.o phase_correction.o allvars.o init.o w-stacking.c: w-stacking.cu cp w-stacking.cu w-stacking.c Loading @@ -60,17 +60,17 @@ serial: $(COBJ) $(CC) $(OPTIMIZE) $(OPT) -o w-stackingCfftw_serial $^ $(LIBS) serial_omp: phase_correction.c $(CC) $(OPTIMIZE) $(OPT) -o w-stackingOMP_serial w-stacking-fftw.c w-stacking_omp.c $(CFLAGS) $(LIBS) $(CC) $(OPTIMIZE) $(OPT) -o w-stackingOMP_serial main.c init.c w-stacking_omp.c $(CFLAGS) $(LIBS) simple_mpi: phase_correction.c $(MPICC) $(OPTIMIZE) $(OPT) -o w-stackingMPI_simple w-stacking_omp.c w-stacking-fftw.c phase_correction.c $(CFLAGS) $(LIBS) $(MPICC) $(OPTIMIZE) $(OPT) -o w-stackingMPI_simple w-stacking_omp.c main.c init.c phase_correction.c $(CFLAGS) $(LIBS) mpi_omp: phase_correction.c $(MPICC) $(OPTIMIZE) $(OPT) -o w-stackingMPI_omp w-stacking_omp.c w-stacking-fftw.c phase_correction.c $(CFLAGS) $(LIBS) $(MPICC) $(OPTIMIZE) $(OPT) -o w-stackingMPI_omp w-stacking_omp.c main.c init.c phase_correction.c $(CFLAGS) $(LIBS) serial_cuda: $(NVCC) $(NVFLAGS) -c w-stacking.cu phase_correction.cu $(NVLIB) $(CC) $(OPTIMIZE) $(OPT) -c w-stacking-fftw.c $(CFLAGS) $(LIBS) $(CC) $(OPTIMIZE) $(OPT) -c main.c init.c $(CFLAGS) $(LIBS) $(CXX) $(OPTIMIZE) $(OPT) -o w-stackingfftw_serial w-stacking-fftw.o w-stacking.o phase_correction.o $(CFLAGS) $(NVLIB) -lm mpi: $(COBJ) Loading @@ -78,7 +78,7 @@ mpi: $(COBJ) mpi_cuda: $(NVCC) $(NVFLAGS) -c w-stacking.cu phase_correction.cu $(NVLIB) $(MPICC) $(OPTIMIZE) $(OPT) -c w-stacking-fftw.c $(CFLAGS) $(LIBS) $(MPICC) $(OPTIMIZE) $(OPT) -c main.c init.c$(CFLAGS) $(LIBS) $(MPIC++) $(OPTIMIZE) $(OPT) -o w-stackingfftw w-stacking-fftw.o w-stacking.o phase_correction.o $(NVLIB) $(CFLAGS) $(LIBS) clean: Loading allvars.c +4 −3 Original line number Diff line number Diff line Loading @@ -2,13 +2,14 @@ struct io file; struct ip in = {"ucoord.bin", "vcoord.bin", "wcoord.bin", "weights.bin", "visibilities_real.bin", "visibilities_img.bin", "meta.txt" }; struct ip in; struct op out = {"grid.txt", "coords.txt", "grid_real.bin", "grid_img.bin", "fft.txt", "fft_real.bin", "fft_img.bin", "run.log", ".txt", "timings.dat"}; struct meta metaData; struct time timing; char filename[1000]; int num_threads; char datapath_multi[NFILES][900]; int ndatasets; allvars.h +5 −1 Original line number Diff line number Diff line /* file to store global variables*/ #include <stdio.h> #define NFILES 100 extern struct io { Loading @@ -19,7 +20,7 @@ extern struct ip char visrealfile[30]; char visimgfile[30]; char metafile[30]; char paramfile[30]; } in; extern struct op Loading Loading @@ -66,3 +67,6 @@ extern struct time } timing; extern char filename[1000]; extern int num_threads; extern char datapath_multi[NFILES][900]; extern int ndatasets; init.c 0 → 100644 +91 −0 Original line number Diff line number Diff line #include <stdio.h> #include <stdlib.h> #include <string.h> #include "allvars.h" #include "proto.h" void init() { read_parameter_file(in.paramfile); } void read_parameter_file(char *fname) { if(file.pFile = fopen (fname,"r")) { char buf1[30], buf2[100]; while(fscanf(file.pFile, "%s" "%s", buf1, buf2) != EOF) { if(strcmp(buf1, "num_threads") == 0) { num_threads = atoi(buf2); } if(strcmp(buf1, "Datapath") == 0) { strcpy(datapath_multi[0], buf2); } if(strcmp(buf1, "ndatasets") == 0) { ndatasets = atoi(buf2); } if(strcmp(buf1, "ufile") == 0) { strcpy(in.ufile, buf2); } if(strcmp(buf1, "vfile") == 0) { strcpy(in.vfile, buf2); } if(strcmp(buf1, "wfile") == 0) { strcpy(in.wfile, buf2); } if(strcmp(buf1, "weightsfile") == 0) { strcpy(in.weightsfile, buf2); } if(strcmp(buf1, "visrealfile") == 0) { strcpy(in.visrealfile, buf2); } if(strcmp(buf1, "visimgfile") == 0) { strcpy(in.visimgfile, buf2); } if(strcmp(buf1, "metafile") == 0) { strcpy(in.metafile, buf2); } } fclose(file.pFile); } else { printf("error opening paramfile"); exit(1); } } void fileName(char datapath[900], char file[30]) { strcpy(filename,datapath); strcat(filename,file); } void readMetaData(char fileLocal[1000]) { file.pFile = fopen (fileLocal,"r"); fscanf(file.pFile,"%ld",&metaData.Nmeasures); fscanf(file.pFile,"%ld",&metaData.Nvis); fscanf(file.pFile,"%ld",&metaData.freq_per_chan); fscanf(file.pFile,"%ld",&metaData.polarisations); fscanf(file.pFile,"%ld",&metaData.Ntimes); fscanf(file.pFile,"%lf",&metaData.dt); fscanf(file.pFile,"%lf",&metaData.thours); fscanf(file.pFile,"%ld",&metaData.baselines); fscanf(file.pFile,"%lf",&metaData.uvmin); fscanf(file.pFile,"%lf",&metaData.uvmax); fscanf(file.pFile,"%lf",&metaData.wmin); fscanf(file.pFile,"%lf",&metaData.wmax); fclose(file.pFile); } w-stacking-fftw.c→main.c +16 −49 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ #include <time.h> #include <unistd.h> #include "allvars.h" #include "proto.h" #ifdef ACCOMP #include "w-stacking_omp.h" #else Loading @@ -22,7 +23,6 @@ #define MIN(X, Y) (((X) < (Y)) ? (X) : (Y)) #define MAX(X, Y) (((X) > (Y)) ? (X) : (Y)) #define NOVERBOSE #define NFILES 100 // Linked List set-up struct sectorlist { Loading @@ -37,27 +37,6 @@ void Push(struct sectorlist** headRef, long data) { *headRef = newNode; } void fileName(char datapath[900], char file[30]) { strcpy(filename,datapath); strcat(filename,file); } void readMetaData(char fileLocal[1000]) { file.pFile = fopen (fileLocal,"r"); fscanf(file.pFile,"%ld",&metaData.Nmeasures); fscanf(file.pFile,"%ld",&metaData.Nvis); fscanf(file.pFile,"%ld",&metaData.freq_per_chan); fscanf(file.pFile,"%ld",&metaData.polarisations); fscanf(file.pFile,"%ld",&metaData.Ntimes); fscanf(file.pFile,"%lf",&metaData.dt); fscanf(file.pFile,"%lf",&metaData.thours); fscanf(file.pFile,"%ld",&metaData.baselines); fscanf(file.pFile,"%lf",&metaData.uvmin); fscanf(file.pFile,"%lf",&metaData.uvmax); fscanf(file.pFile,"%lf",&metaData.wmin); fscanf(file.pFile,"%lf",&metaData.wmax); fclose(file.pFile); } // Main Code int main(int argc, char * argv[]) Loading @@ -66,7 +45,6 @@ int main(int argc, char * argv[]) int size; char datapath[900]; char datapath_multi[NFILES][900]; char srank[4]; Loading Loading @@ -98,13 +76,19 @@ int main(int argc, char * argv[]) struct timespec begin, finish, begin0, begink, finishk; double elapsed; long nsectors; /* GT get nymber of threads exit if not given */ if(argc == 1) { fprintf(stderr, "Usage: %s number_of_OMP_Threads \n", argv[0]); if(argc > 1) { strcpy(in.paramfile,argv[1]); printf("parameter file = %s\n", in.paramfile); init(); } else { fprintf(stderr, "Parameter file is not given\n"); exit(1); } // Set the number of OpenMP threads num_threads = atoi(argv[1]); if ( num_threads == 0 ) { Loading @@ -125,6 +109,7 @@ int main(int argc, char * argv[]) #ifdef USE_FFTW fftw_mpi_init(); #endif MPI_Barrier(MPI_COMM_WORLD); #else rank = 0; size = 1; Loading Loading @@ -160,28 +145,10 @@ if(rank == 0){ start = clock(); // INPUT FILES (only the first ndatasets entries are used) int ndatasets = 1; strcpy(datapath_multi[0], "/u/nsakthivel/LOFAR/data/newgauss2noconj_t201806301100_SBL180.binMS/"); strcpy(datapath,datapath_multi[0]); // Read metadata fileName(datapath, in.metafile); readMetaData(filename); /* file.pFile = fopen (filename,"r"); fscanf(file.pFile,"%ld",&metaData.Nmeasures); fscanf(file.pFile,"%ld",&metaData.Nvis); fscanf(file.pFile,"%ld",&metaData.freq_per_chan); fscanf(file.pFile,"%ld",&metaData.polarisations); fscanf(file.pFile,"%ld",&metaData.Ntimes); fscanf(file.pFile,"%lf",&metaData.dt); fscanf(file.pFile,"%lf",&metaData.thours); fscanf(file.pFile,"%ld",&metaData.baselines); fscanf(file.pFile,"%lf",&metaData.uvmin); fscanf(file.pFile,"%lf",&metaData.uvmax); fscanf(file.pFile,"%lf",&metaData.wmin); fscanf(file.pFile,"%lf",&metaData.wmax); fclose(file.pFile); */ // WATCH THIS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! int nsub = 1000; Loading Loading
Makefile +9 −9 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ endif FFTW_MPI_INC = -I/${HOME}/include FFTW_MPI_LIB = /${HOME}/lib CFLAGS += $(FFTW_MPI_INC) CFLAGS += $(FFTW_MPI_INC) -I/proto.h LIBS = -L$(FFTW_MPI_LIB) -lfftw3_mpi -lfftw3 -lm #-lcudart -lcuda # create MPI code Loading @@ -39,8 +39,8 @@ OPT += -DWRITE_IMAGE OPT += -DPHASE_ON DEPS = w-stacking.h w-stacking-fftw.c w-stacking.cu phase_correction.cu allvars.h COBJ = w-stacking.o w-stacking-fftw.o phase_correction.o allvars.o DEPS = w-stacking.h main.c w-stacking.cu phase_correction.cu allvars.h init.c COBJ = w-stacking.o main.o phase_correction.o allvars.o init.o w-stacking.c: w-stacking.cu cp w-stacking.cu w-stacking.c Loading @@ -60,17 +60,17 @@ serial: $(COBJ) $(CC) $(OPTIMIZE) $(OPT) -o w-stackingCfftw_serial $^ $(LIBS) serial_omp: phase_correction.c $(CC) $(OPTIMIZE) $(OPT) -o w-stackingOMP_serial w-stacking-fftw.c w-stacking_omp.c $(CFLAGS) $(LIBS) $(CC) $(OPTIMIZE) $(OPT) -o w-stackingOMP_serial main.c init.c w-stacking_omp.c $(CFLAGS) $(LIBS) simple_mpi: phase_correction.c $(MPICC) $(OPTIMIZE) $(OPT) -o w-stackingMPI_simple w-stacking_omp.c w-stacking-fftw.c phase_correction.c $(CFLAGS) $(LIBS) $(MPICC) $(OPTIMIZE) $(OPT) -o w-stackingMPI_simple w-stacking_omp.c main.c init.c phase_correction.c $(CFLAGS) $(LIBS) mpi_omp: phase_correction.c $(MPICC) $(OPTIMIZE) $(OPT) -o w-stackingMPI_omp w-stacking_omp.c w-stacking-fftw.c phase_correction.c $(CFLAGS) $(LIBS) $(MPICC) $(OPTIMIZE) $(OPT) -o w-stackingMPI_omp w-stacking_omp.c main.c init.c phase_correction.c $(CFLAGS) $(LIBS) serial_cuda: $(NVCC) $(NVFLAGS) -c w-stacking.cu phase_correction.cu $(NVLIB) $(CC) $(OPTIMIZE) $(OPT) -c w-stacking-fftw.c $(CFLAGS) $(LIBS) $(CC) $(OPTIMIZE) $(OPT) -c main.c init.c $(CFLAGS) $(LIBS) $(CXX) $(OPTIMIZE) $(OPT) -o w-stackingfftw_serial w-stacking-fftw.o w-stacking.o phase_correction.o $(CFLAGS) $(NVLIB) -lm mpi: $(COBJ) Loading @@ -78,7 +78,7 @@ mpi: $(COBJ) mpi_cuda: $(NVCC) $(NVFLAGS) -c w-stacking.cu phase_correction.cu $(NVLIB) $(MPICC) $(OPTIMIZE) $(OPT) -c w-stacking-fftw.c $(CFLAGS) $(LIBS) $(MPICC) $(OPTIMIZE) $(OPT) -c main.c init.c$(CFLAGS) $(LIBS) $(MPIC++) $(OPTIMIZE) $(OPT) -o w-stackingfftw w-stacking-fftw.o w-stacking.o phase_correction.o $(NVLIB) $(CFLAGS) $(LIBS) clean: Loading
allvars.c +4 −3 Original line number Diff line number Diff line Loading @@ -2,13 +2,14 @@ struct io file; struct ip in = {"ucoord.bin", "vcoord.bin", "wcoord.bin", "weights.bin", "visibilities_real.bin", "visibilities_img.bin", "meta.txt" }; struct ip in; struct op out = {"grid.txt", "coords.txt", "grid_real.bin", "grid_img.bin", "fft.txt", "fft_real.bin", "fft_img.bin", "run.log", ".txt", "timings.dat"}; struct meta metaData; struct time timing; char filename[1000]; int num_threads; char datapath_multi[NFILES][900]; int ndatasets;
allvars.h +5 −1 Original line number Diff line number Diff line /* file to store global variables*/ #include <stdio.h> #define NFILES 100 extern struct io { Loading @@ -19,7 +20,7 @@ extern struct ip char visrealfile[30]; char visimgfile[30]; char metafile[30]; char paramfile[30]; } in; extern struct op Loading Loading @@ -66,3 +67,6 @@ extern struct time } timing; extern char filename[1000]; extern int num_threads; extern char datapath_multi[NFILES][900]; extern int ndatasets;
init.c 0 → 100644 +91 −0 Original line number Diff line number Diff line #include <stdio.h> #include <stdlib.h> #include <string.h> #include "allvars.h" #include "proto.h" void init() { read_parameter_file(in.paramfile); } void read_parameter_file(char *fname) { if(file.pFile = fopen (fname,"r")) { char buf1[30], buf2[100]; while(fscanf(file.pFile, "%s" "%s", buf1, buf2) != EOF) { if(strcmp(buf1, "num_threads") == 0) { num_threads = atoi(buf2); } if(strcmp(buf1, "Datapath") == 0) { strcpy(datapath_multi[0], buf2); } if(strcmp(buf1, "ndatasets") == 0) { ndatasets = atoi(buf2); } if(strcmp(buf1, "ufile") == 0) { strcpy(in.ufile, buf2); } if(strcmp(buf1, "vfile") == 0) { strcpy(in.vfile, buf2); } if(strcmp(buf1, "wfile") == 0) { strcpy(in.wfile, buf2); } if(strcmp(buf1, "weightsfile") == 0) { strcpy(in.weightsfile, buf2); } if(strcmp(buf1, "visrealfile") == 0) { strcpy(in.visrealfile, buf2); } if(strcmp(buf1, "visimgfile") == 0) { strcpy(in.visimgfile, buf2); } if(strcmp(buf1, "metafile") == 0) { strcpy(in.metafile, buf2); } } fclose(file.pFile); } else { printf("error opening paramfile"); exit(1); } } void fileName(char datapath[900], char file[30]) { strcpy(filename,datapath); strcat(filename,file); } void readMetaData(char fileLocal[1000]) { file.pFile = fopen (fileLocal,"r"); fscanf(file.pFile,"%ld",&metaData.Nmeasures); fscanf(file.pFile,"%ld",&metaData.Nvis); fscanf(file.pFile,"%ld",&metaData.freq_per_chan); fscanf(file.pFile,"%ld",&metaData.polarisations); fscanf(file.pFile,"%ld",&metaData.Ntimes); fscanf(file.pFile,"%lf",&metaData.dt); fscanf(file.pFile,"%lf",&metaData.thours); fscanf(file.pFile,"%ld",&metaData.baselines); fscanf(file.pFile,"%lf",&metaData.uvmin); fscanf(file.pFile,"%lf",&metaData.uvmax); fscanf(file.pFile,"%lf",&metaData.wmin); fscanf(file.pFile,"%lf",&metaData.wmax); fclose(file.pFile); }
w-stacking-fftw.c→main.c +16 −49 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ #include <time.h> #include <unistd.h> #include "allvars.h" #include "proto.h" #ifdef ACCOMP #include "w-stacking_omp.h" #else Loading @@ -22,7 +23,6 @@ #define MIN(X, Y) (((X) < (Y)) ? (X) : (Y)) #define MAX(X, Y) (((X) > (Y)) ? (X) : (Y)) #define NOVERBOSE #define NFILES 100 // Linked List set-up struct sectorlist { Loading @@ -37,27 +37,6 @@ void Push(struct sectorlist** headRef, long data) { *headRef = newNode; } void fileName(char datapath[900], char file[30]) { strcpy(filename,datapath); strcat(filename,file); } void readMetaData(char fileLocal[1000]) { file.pFile = fopen (fileLocal,"r"); fscanf(file.pFile,"%ld",&metaData.Nmeasures); fscanf(file.pFile,"%ld",&metaData.Nvis); fscanf(file.pFile,"%ld",&metaData.freq_per_chan); fscanf(file.pFile,"%ld",&metaData.polarisations); fscanf(file.pFile,"%ld",&metaData.Ntimes); fscanf(file.pFile,"%lf",&metaData.dt); fscanf(file.pFile,"%lf",&metaData.thours); fscanf(file.pFile,"%ld",&metaData.baselines); fscanf(file.pFile,"%lf",&metaData.uvmin); fscanf(file.pFile,"%lf",&metaData.uvmax); fscanf(file.pFile,"%lf",&metaData.wmin); fscanf(file.pFile,"%lf",&metaData.wmax); fclose(file.pFile); } // Main Code int main(int argc, char * argv[]) Loading @@ -66,7 +45,6 @@ int main(int argc, char * argv[]) int size; char datapath[900]; char datapath_multi[NFILES][900]; char srank[4]; Loading Loading @@ -98,13 +76,19 @@ int main(int argc, char * argv[]) struct timespec begin, finish, begin0, begink, finishk; double elapsed; long nsectors; /* GT get nymber of threads exit if not given */ if(argc == 1) { fprintf(stderr, "Usage: %s number_of_OMP_Threads \n", argv[0]); if(argc > 1) { strcpy(in.paramfile,argv[1]); printf("parameter file = %s\n", in.paramfile); init(); } else { fprintf(stderr, "Parameter file is not given\n"); exit(1); } // Set the number of OpenMP threads num_threads = atoi(argv[1]); if ( num_threads == 0 ) { Loading @@ -125,6 +109,7 @@ int main(int argc, char * argv[]) #ifdef USE_FFTW fftw_mpi_init(); #endif MPI_Barrier(MPI_COMM_WORLD); #else rank = 0; size = 1; Loading Loading @@ -160,28 +145,10 @@ if(rank == 0){ start = clock(); // INPUT FILES (only the first ndatasets entries are used) int ndatasets = 1; strcpy(datapath_multi[0], "/u/nsakthivel/LOFAR/data/newgauss2noconj_t201806301100_SBL180.binMS/"); strcpy(datapath,datapath_multi[0]); // Read metadata fileName(datapath, in.metafile); readMetaData(filename); /* file.pFile = fopen (filename,"r"); fscanf(file.pFile,"%ld",&metaData.Nmeasures); fscanf(file.pFile,"%ld",&metaData.Nvis); fscanf(file.pFile,"%ld",&metaData.freq_per_chan); fscanf(file.pFile,"%ld",&metaData.polarisations); fscanf(file.pFile,"%ld",&metaData.Ntimes); fscanf(file.pFile,"%lf",&metaData.dt); fscanf(file.pFile,"%lf",&metaData.thours); fscanf(file.pFile,"%ld",&metaData.baselines); fscanf(file.pFile,"%lf",&metaData.uvmin); fscanf(file.pFile,"%lf",&metaData.uvmax); fscanf(file.pFile,"%lf",&metaData.wmin); fscanf(file.pFile,"%lf",&metaData.wmax); fclose(file.pFile); */ // WATCH THIS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! int nsub = 1000; Loading