Difference for src/ComputePme.C from version 1.219 to 1.220

version 1.219version 1.220
Line 4449
Line 4449
  void send_subset_ungrid(int fromIdx, int toIdx, int specialIdx);  void send_subset_ungrid(int fromIdx, int toIdx, int specialIdx);
 private: private:
     ResizeArray<PmeGridMsg *> grid_msgs;     ResizeArray<PmeGridMsg *> grid_msgs;
      ResizeArray<int> work_zlist;
 #ifdef NAMD_FFTW #ifdef NAMD_FFTW
 #ifdef NAMD_FFTW_3 #ifdef NAMD_FFTW_3
     fftwf_plan forward_plan, backward_plan;     fftwf_plan forward_plan, backward_plan;
Line 5000
Line 5001
   if ( ! msg->hasData ) return;   if ( ! msg->hasData ) return;
  
   int zlistlen = msg->zlistlen;   int zlistlen = msg->zlistlen;
   int *zlist = msg->zlist; #ifdef NAMD_KNL
   char *fmsg = msg->fgrid;   int * __restrict msg_zlist = msg->zlist;
   float *qmsg = msg->qgrid;   int * __restrict zlist = work_zlist.begin();
   float *d = data;   __assume_aligned(zlist,64);
    for ( int k=0; k<zlistlen; ++k ) {
      zlist[k] = msg_zlist[k];
    }
  #else
    int * __restrict zlist = msg->zlist;
  #endif
    char * __restrict fmsg = msg->fgrid;
    float * __restrict qmsg = msg->qgrid;
    float * __restrict d = data;
   int numGrids = 1;  // pencil FFT doesn't support multiple grids   int numGrids = 1;  // pencil FFT doesn't support multiple grids
   for ( int g=0; g<numGrids; ++g ) {   for ( int g=0; g<numGrids; ++g ) {
     for ( int i=0; i<nx; ++i ) {     for ( int i=0; i<nx; ++i ) {
      for ( int j=0; j<ny; ++j, d += dim3 ) {      for ( int j=0; j<ny; ++j, d += dim3 ) {
       if( *(fmsg++) ) {       if( *(fmsg++) ) {
          #pragma ivdep
         for ( int k=0; k<zlistlen; ++k ) {         for ( int k=0; k<zlistlen; ++k ) {
           d[zlist[k]] += *(qmsg++);           d[zlist[k]] += *(qmsg++);
         }         }


Legend:
Removed in v.1.219 
changed lines
 Added in v.1.220



Made by using version 1.53 of cvs2html