Loading gridding.c +83 −73 Original line number Diff line number Diff line Loading @@ -36,7 +36,8 @@ void initialize_array(){ histo_send = (long*) calloc(nsectors+1,sizeof(long)); int * boundary = (int*) calloc(metaData.Nmeasures,sizeof(int)); double uuh,vvh; double vvh; for (long iphi = 0; iphi < metaData.Nmeasures; iphi++) { boundary[iphi] = -1; Loading @@ -47,8 +48,10 @@ void initialize_array(){ double downdist = vvh - (double)(binphi*yaxis)*dx; // histo_send[binphi]++; if(updist < w_supporth && updist >= 0.0) {histo_send[binphi+1]++; boundary[iphi] = binphi+1;}; if(downdist < w_supporth && binphi > 0 && downdist >= 0.0) {histo_send[binphi-1]++; boundary[iphi] = binphi-1;}; if(updist < w_supporth && updist >= 0.0) {histo_send[binphi+1]++; boundary[iphi] = binphi+1;}; if(downdist < w_supporth && binphi > 0 && downdist >= 0.0) {histo_send[binphi-1]++; boundary[iphi] = binphi-1;}; } sectorarray = (long**)malloc ((nsectors+1) * sizeof(long*)); Loading @@ -66,8 +69,10 @@ void initialize_array(){ double downdist = vvh - (double)(binphi*yaxis)*dx; sectorarray[binphi][counter[binphi]] = iphi; counter[binphi]++; if(updist < w_supporth && updist >= 0.0) { sectorarray[binphi+1][counter[binphi+1]] = iphi; counter[binphi+1]++;}; if(downdist < w_supporth && binphi > 0 && downdist >= 0.0) { sectorarray[binphi-1][counter[binphi-1]] = iphi; counter[binphi-1]++;}; if(updist < w_supporth && updist >= 0.0) { sectorarray[binphi+1][counter[binphi+1]] = iphi; counter[binphi+1]++;}; if(downdist < w_supporth && binphi > 0 && downdist >= 0.0) { sectorarray[binphi-1][counter[binphi-1]] = iphi; counter[binphi-1]++;}; } Loading Loading @@ -235,7 +240,7 @@ void gridding_data(){ int target_rank = (int)(isector % size); #ifdef ONE_SIDE printf("One Side communication active\n"); // MPI_Win_lock(MPI_LOCK_SHARED,target_rank,0,slabwin); // MPI_Accumulate(gridss,size_of_grid,MPI_DOUBLE,target_rank,0,size_of_grid,MPI_DOUBLE,MPI_SUM,slabwin); // MPI_Win_unlock(target_rank,slabwin); Loading @@ -247,8 +252,9 @@ void gridding_data(){ reduce( isector, target_rank ); // here the reduce is performed within every host // here thre reduce is performed among hosts if ( Me.Nhosts > 1 ) { // here the reduce is performed among hosts MPI_Barrier(MPI_COMM_WORLD); int Im_in_the_new_communicator = MPI_UNDEFINED; Loading Loading @@ -290,15 +296,15 @@ void gridding_data(){ MPI_Comm_free( &Sector_Comm ); } } #else // relates to #ifdef ONE_SIDE //MPI_Put(gridss,size_of_grid,MPI_DOUBLE,target_rank,0,size_of_grid,MPI_DOUBLE,slabwin); #else MPI_Reduce(gridss,grid,size_of_grid,MPI_DOUBLE,MPI_SUM,target_rank,MPI_COMM_WORLD); #endif //ONE_SIDE #endif //USE_MPI #endif // closes #ifdef ONE_SIDE #endif // closes USE_MPI clock_gettime(CLOCK_MONOTONIC, &finishk); endk = clock(); Loading Loading @@ -430,6 +436,10 @@ void reduce( int sector, int target_rank ) int local_rank = Me.Rank[myHOST]; if( Me.Ranks_to_host[ target_rank ] == Me.myhost ) // exchange rank 0 with target rank // in this way the following log2 alogorithm, // which reduces to rank 0, will work for // every target rank { int r = 0; Loading init.c +156 −142 Original line number Diff line number Diff line Loading @@ -278,18 +278,20 @@ void readMetaData(char fileLocal[1000]) { { if( (file.pFile = fopen (fileLocal,"r")) != NULL ) { 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); int items = 0; items += fscanf(file.pFile,"%ld",&metaData.Nmeasures); items += fscanf(file.pFile,"%ld",&metaData.Nvis); items += fscanf(file.pFile,"%ld",&metaData.freq_per_chan); items += fscanf(file.pFile,"%ld",&metaData.polarisations); items += fscanf(file.pFile,"%ld",&metaData.Ntimes); items += fscanf(file.pFile,"%lf",&metaData.dt); items += fscanf(file.pFile,"%lf",&metaData.thours); items += fscanf(file.pFile,"%ld",&metaData.baselines); items += fscanf(file.pFile,"%lf",&metaData.uvmin); items += fscanf(file.pFile,"%lf",&metaData.uvmax); items += fscanf(file.pFile,"%lf",&metaData.wmin); items += fscanf(file.pFile,"%lf",&metaData.wmax); fclose(file.pFile); } else Loading @@ -315,6 +317,7 @@ void metaData_calculation() { metaData.Nvis = metaData.Nmeasures*metaData.freq_per_chan*metaData.polarisations; // calculate the coordinates of the center #warning why it it not used? double uvshift = metaData.uvmin/(metaData.uvmax-metaData.uvmin); if (global_rank == 0) Loading @@ -330,9 +333,7 @@ void metaData_calculation() { startrow = global_rank*nm_pe; if (global_rank == size-1)nm_pe = nm_pe+remaining; long Nmeasures_tot = metaData.Nmeasures; metaData.Nmeasures = nm_pe; long Nvis_tot = metaData.Nvis; metaData.Nvis = metaData.Nmeasures*metaData.freq_per_chan*metaData.polarisations; metaData.Nweights = metaData.Nmeasures*metaData.polarisations; Loading Loading @@ -391,7 +392,9 @@ void readData() { if( (file.pFile = fopen (filename,"rb")) != NULL ) { fseek (file.pFile,startrow*sizeof(double),SEEK_SET); fread(data.uu,metaData.Nmeasures*sizeof(double),1,file.pFile); size_t res = fread(data.uu, sizeof(double), metaData.Nmeasures, file.pFile); if( res != metaData.Nmeasures ) printf("an error occurred while reading file %s\n", filename); fclose(file.pFile); } else Loading @@ -405,7 +408,10 @@ void readData() { if( (file.pFile = fopen (filename,"rb")) != NULL ) { fseek (file.pFile,startrow*sizeof(double),SEEK_SET); fread(data.vv,metaData.Nmeasures*sizeof(double),1,file.pFile); size_t res = fread(data.vv, sizeof(double), metaData.Nmeasures, file.pFile); if( res != metaData.Nmeasures ) printf("an error occurred while reading file %s\n", filename); fclose(file.pFile); } else Loading @@ -419,7 +425,9 @@ void readData() { if( (file.pFile = fopen (filename,"rb")) != NULL ) { fseek (file.pFile,startrow*sizeof(double),SEEK_SET); fread(data.ww,metaData.Nmeasures*sizeof(double),1,file.pFile); size_t res = fread(data.ww,sizeof(double), metaData.Nmeasures, file.pFile); if( res != metaData.Nmeasures ) printf("an error occurred while reading file %s\n", filename); fclose(file.pFile); } else Loading @@ -433,7 +441,9 @@ void readData() { if( (file.pFile = fopen (filename,"rb")) != NULL) { fseek (file.pFile,startrow*metaData.polarisations*sizeof(float),SEEK_SET); fread(data.weights,(metaData.Nweights)*sizeof(float),1,file.pFile); size_t res = fread(data.weights, sizeof(float), metaData.Nweights, file.pFile); if( res != metaData.Nweights ) printf("an error occurred while reading file %s\n", filename); fclose(file.pFile); } else Loading @@ -447,7 +457,9 @@ void readData() { if((file.pFile = fopen (filename,"rb")) != NULL ) { fseek (file.pFile,startrow*metaData.freq_per_chan*metaData.polarisations*sizeof(float),SEEK_SET); fread(data.visreal,metaData.Nvis*sizeof(float),1,file.pFile); size_t res = fread(data.visreal, sizeof(float), metaData.Nvis, file.pFile); if( res != metaData.Nvis ) printf("an error occurred while reading file %s\n", filename); fclose(file.pFile); } else Loading @@ -461,7 +473,9 @@ void readData() { if( (file.pFile = fopen (filename,"rb")) != NULL ) { fseek (file.pFile,startrow*metaData.freq_per_chan*metaData.polarisations*sizeof(float),SEEK_SET); fread(data.visimg,metaData.Nvis*sizeof(float),1,file.pFile); size_t res = fread(data.visimg, sizeof(float), metaData.Nvis, file.pFile); if( res != metaData.Nvis ) printf("an error occurred while reading file %s\n", filename); fclose(file.pFile); } else Loading w-stacking.cu +2 −2 Original line number Diff line number Diff line Loading @@ -140,7 +140,7 @@ void wstack( int num_threads) { long i; long index; //long index; long visindex; // initialize the convolution kernel Loading Loading @@ -242,7 +242,7 @@ void wstack( visindex = i*freq_per_chan*polarizations; double sum = 0.0; //double sum = 0.0; int j, k; //if (i%1000 == 0)printf("%ld\n",i); Loading Loading
gridding.c +83 −73 Original line number Diff line number Diff line Loading @@ -36,7 +36,8 @@ void initialize_array(){ histo_send = (long*) calloc(nsectors+1,sizeof(long)); int * boundary = (int*) calloc(metaData.Nmeasures,sizeof(int)); double uuh,vvh; double vvh; for (long iphi = 0; iphi < metaData.Nmeasures; iphi++) { boundary[iphi] = -1; Loading @@ -47,8 +48,10 @@ void initialize_array(){ double downdist = vvh - (double)(binphi*yaxis)*dx; // histo_send[binphi]++; if(updist < w_supporth && updist >= 0.0) {histo_send[binphi+1]++; boundary[iphi] = binphi+1;}; if(downdist < w_supporth && binphi > 0 && downdist >= 0.0) {histo_send[binphi-1]++; boundary[iphi] = binphi-1;}; if(updist < w_supporth && updist >= 0.0) {histo_send[binphi+1]++; boundary[iphi] = binphi+1;}; if(downdist < w_supporth && binphi > 0 && downdist >= 0.0) {histo_send[binphi-1]++; boundary[iphi] = binphi-1;}; } sectorarray = (long**)malloc ((nsectors+1) * sizeof(long*)); Loading @@ -66,8 +69,10 @@ void initialize_array(){ double downdist = vvh - (double)(binphi*yaxis)*dx; sectorarray[binphi][counter[binphi]] = iphi; counter[binphi]++; if(updist < w_supporth && updist >= 0.0) { sectorarray[binphi+1][counter[binphi+1]] = iphi; counter[binphi+1]++;}; if(downdist < w_supporth && binphi > 0 && downdist >= 0.0) { sectorarray[binphi-1][counter[binphi-1]] = iphi; counter[binphi-1]++;}; if(updist < w_supporth && updist >= 0.0) { sectorarray[binphi+1][counter[binphi+1]] = iphi; counter[binphi+1]++;}; if(downdist < w_supporth && binphi > 0 && downdist >= 0.0) { sectorarray[binphi-1][counter[binphi-1]] = iphi; counter[binphi-1]++;}; } Loading Loading @@ -235,7 +240,7 @@ void gridding_data(){ int target_rank = (int)(isector % size); #ifdef ONE_SIDE printf("One Side communication active\n"); // MPI_Win_lock(MPI_LOCK_SHARED,target_rank,0,slabwin); // MPI_Accumulate(gridss,size_of_grid,MPI_DOUBLE,target_rank,0,size_of_grid,MPI_DOUBLE,MPI_SUM,slabwin); // MPI_Win_unlock(target_rank,slabwin); Loading @@ -247,8 +252,9 @@ void gridding_data(){ reduce( isector, target_rank ); // here the reduce is performed within every host // here thre reduce is performed among hosts if ( Me.Nhosts > 1 ) { // here the reduce is performed among hosts MPI_Barrier(MPI_COMM_WORLD); int Im_in_the_new_communicator = MPI_UNDEFINED; Loading Loading @@ -290,15 +296,15 @@ void gridding_data(){ MPI_Comm_free( &Sector_Comm ); } } #else // relates to #ifdef ONE_SIDE //MPI_Put(gridss,size_of_grid,MPI_DOUBLE,target_rank,0,size_of_grid,MPI_DOUBLE,slabwin); #else MPI_Reduce(gridss,grid,size_of_grid,MPI_DOUBLE,MPI_SUM,target_rank,MPI_COMM_WORLD); #endif //ONE_SIDE #endif //USE_MPI #endif // closes #ifdef ONE_SIDE #endif // closes USE_MPI clock_gettime(CLOCK_MONOTONIC, &finishk); endk = clock(); Loading Loading @@ -430,6 +436,10 @@ void reduce( int sector, int target_rank ) int local_rank = Me.Rank[myHOST]; if( Me.Ranks_to_host[ target_rank ] == Me.myhost ) // exchange rank 0 with target rank // in this way the following log2 alogorithm, // which reduces to rank 0, will work for // every target rank { int r = 0; Loading
init.c +156 −142 Original line number Diff line number Diff line Loading @@ -278,18 +278,20 @@ void readMetaData(char fileLocal[1000]) { { if( (file.pFile = fopen (fileLocal,"r")) != NULL ) { 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); int items = 0; items += fscanf(file.pFile,"%ld",&metaData.Nmeasures); items += fscanf(file.pFile,"%ld",&metaData.Nvis); items += fscanf(file.pFile,"%ld",&metaData.freq_per_chan); items += fscanf(file.pFile,"%ld",&metaData.polarisations); items += fscanf(file.pFile,"%ld",&metaData.Ntimes); items += fscanf(file.pFile,"%lf",&metaData.dt); items += fscanf(file.pFile,"%lf",&metaData.thours); items += fscanf(file.pFile,"%ld",&metaData.baselines); items += fscanf(file.pFile,"%lf",&metaData.uvmin); items += fscanf(file.pFile,"%lf",&metaData.uvmax); items += fscanf(file.pFile,"%lf",&metaData.wmin); items += fscanf(file.pFile,"%lf",&metaData.wmax); fclose(file.pFile); } else Loading @@ -315,6 +317,7 @@ void metaData_calculation() { metaData.Nvis = metaData.Nmeasures*metaData.freq_per_chan*metaData.polarisations; // calculate the coordinates of the center #warning why it it not used? double uvshift = metaData.uvmin/(metaData.uvmax-metaData.uvmin); if (global_rank == 0) Loading @@ -330,9 +333,7 @@ void metaData_calculation() { startrow = global_rank*nm_pe; if (global_rank == size-1)nm_pe = nm_pe+remaining; long Nmeasures_tot = metaData.Nmeasures; metaData.Nmeasures = nm_pe; long Nvis_tot = metaData.Nvis; metaData.Nvis = metaData.Nmeasures*metaData.freq_per_chan*metaData.polarisations; metaData.Nweights = metaData.Nmeasures*metaData.polarisations; Loading Loading @@ -391,7 +392,9 @@ void readData() { if( (file.pFile = fopen (filename,"rb")) != NULL ) { fseek (file.pFile,startrow*sizeof(double),SEEK_SET); fread(data.uu,metaData.Nmeasures*sizeof(double),1,file.pFile); size_t res = fread(data.uu, sizeof(double), metaData.Nmeasures, file.pFile); if( res != metaData.Nmeasures ) printf("an error occurred while reading file %s\n", filename); fclose(file.pFile); } else Loading @@ -405,7 +408,10 @@ void readData() { if( (file.pFile = fopen (filename,"rb")) != NULL ) { fseek (file.pFile,startrow*sizeof(double),SEEK_SET); fread(data.vv,metaData.Nmeasures*sizeof(double),1,file.pFile); size_t res = fread(data.vv, sizeof(double), metaData.Nmeasures, file.pFile); if( res != metaData.Nmeasures ) printf("an error occurred while reading file %s\n", filename); fclose(file.pFile); } else Loading @@ -419,7 +425,9 @@ void readData() { if( (file.pFile = fopen (filename,"rb")) != NULL ) { fseek (file.pFile,startrow*sizeof(double),SEEK_SET); fread(data.ww,metaData.Nmeasures*sizeof(double),1,file.pFile); size_t res = fread(data.ww,sizeof(double), metaData.Nmeasures, file.pFile); if( res != metaData.Nmeasures ) printf("an error occurred while reading file %s\n", filename); fclose(file.pFile); } else Loading @@ -433,7 +441,9 @@ void readData() { if( (file.pFile = fopen (filename,"rb")) != NULL) { fseek (file.pFile,startrow*metaData.polarisations*sizeof(float),SEEK_SET); fread(data.weights,(metaData.Nweights)*sizeof(float),1,file.pFile); size_t res = fread(data.weights, sizeof(float), metaData.Nweights, file.pFile); if( res != metaData.Nweights ) printf("an error occurred while reading file %s\n", filename); fclose(file.pFile); } else Loading @@ -447,7 +457,9 @@ void readData() { if((file.pFile = fopen (filename,"rb")) != NULL ) { fseek (file.pFile,startrow*metaData.freq_per_chan*metaData.polarisations*sizeof(float),SEEK_SET); fread(data.visreal,metaData.Nvis*sizeof(float),1,file.pFile); size_t res = fread(data.visreal, sizeof(float), metaData.Nvis, file.pFile); if( res != metaData.Nvis ) printf("an error occurred while reading file %s\n", filename); fclose(file.pFile); } else Loading @@ -461,7 +473,9 @@ void readData() { if( (file.pFile = fopen (filename,"rb")) != NULL ) { fseek (file.pFile,startrow*metaData.freq_per_chan*metaData.polarisations*sizeof(float),SEEK_SET); fread(data.visimg,metaData.Nvis*sizeof(float),1,file.pFile); size_t res = fread(data.visimg, sizeof(float), metaData.Nvis, file.pFile); if( res != metaData.Nvis ) printf("an error occurred while reading file %s\n", filename); fclose(file.pFile); } else Loading
w-stacking.cu +2 −2 Original line number Diff line number Diff line Loading @@ -140,7 +140,7 @@ void wstack( int num_threads) { long i; long index; //long index; long visindex; // initialize the convolution kernel Loading Loading @@ -242,7 +242,7 @@ void wstack( visindex = i*freq_per_chan*polarizations; double sum = 0.0; //double sum = 0.0; int j, k; //if (i%1000 == 0)printf("%ld\n",i); Loading