Merge release-4.5-patches into HEAD
authorRoland Schulz <roland@utk.edu>
Fri, 13 Jul 2012 13:04:58 +0000 (09:04 -0400)
committerRoland Schulz <roland@utk.edu>
Fri, 13 Jul 2012 13:04:58 +0000 (09:04 -0400)
Conflicts:
src/mdlib/mdebin.c
src/mdlib/minimize.c
src/tools/gmx_hbond.c
src/tools/gmx_tune_pme.c

Change-Id: I114f1ab4d58c9ccca0261e8588b61c39feaae874

14 files changed:
1  2 
CMakeLists.txt
include/xdrf.h
src/gmxlib/gmxfio.c
src/gmxlib/libxdrf.c
src/gmxlib/maths.c
src/gmxlib/selection/compiler.c
src/gmxlib/sfactor.c
src/gmxlib/trxio.c
src/kernel/pdb2top.c
src/mdlib/domdec_setup.c
src/mdlib/mdebin.c
src/mdlib/minimize.c
src/tools/gmx_hbond.c
src/tools/gmx_trjcat.c

diff --cc CMakeLists.txt
index f4f627ae1d7fc625de40e1f2d1d78d10ae21bef5,e82df62c44bbf1003c0e63487f06124ff1ba9bea..16830abb7b19655bb5f76ae800fb3590c8737e0c
@@@ -707,8 -637,15 +707,15 @@@ elseif(${GMX_ACCELERATION} STREQUAL "BL
      set(GMX_SOFTWARE_INVSQRT OFF CACHE BOOL "Do not use software reciprocal square root on BlueGene" FORCE)
      set(GMX_POWERPC_INVSQRT ON CACHE BOOL "Use hardware reciprocal square root on BlueGene" FORCE)
      set(GMX_X11 OFF CACHE BOOL "X11 not compatible with BlueGene, disabled!" FORCE)
 -    set(GMX_THREADS OFF CACHE BOOL "Threads not compatible with BlueGene, disabled!" FORCE)
 +    set(GMX_THREAD_MPI OFF CACHE BOOL "Thread-MPI not compatible with BlueGene, disabled!" FORCE)
      set(GMX_MPI ON CACHE BOOL "Use MPI on BlueGene" FORCE)
+ # Access to /etc/passwd is not available on the back end of BlueGene,
+ # despite being detected by CMake. This can cause linker warnings
+ # about harmless things in src/gmxlib/string2.h.
+     set(HAVE_PWD_H OFF)
+ # The automatic testing for endianness does not work for the BlueGene cross-compiler
+     set(GMX_IEEE754_BIG_ENDIAN_BYTE_ORDER 1 CACHE INTERNAL "BlueGene has big endian FP byte order (by default)" FORCE)
+     set(GMX_IEEE754_BIG_ENDIAN_WORD_ORDER 1 CACHE INTERNAL "BlueGene has big endian FP word order (by default)" FORCE)
  elseif(${GMX_ACCELERATION} STREQUAL "POWER6")
      set(GMX_POWER6 1)
      set(GMX_SOFTWARE_INVSQRT OFF CACHE BOOL "Do not use software reciprocal square root on Power6" FORCE)
diff --cc include/xdrf.h
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index b069d9c6dd27c5baac3d64e87f59ea570c461137,5d814683f9ecaee6bd9a707cdb263c6dc71326c0..bd771a5045d1d599c1c4d5703890f79aae158134
@@@ -712,10 -709,13 +712,14 @@@ real dd_choose_grid(FILE *fplog
          {
              if (cr->npmenodes < 0)
              {
 -                if (cr->nnodes <= 10)
 +                /* Use PME nodes when the number of nodes is more than 16 */
 +                if (cr->nnodes <= 18)
                  {
                      cr->npmenodes = 0;
+                     if (fplog)
+                     {
+                         fprintf(fplog,"Using %d separate PME nodes, as there are too few total\n nodes for efficient splitting\n",cr->npmenodes);
+                     }
                  }
                  else
                  {
index bc1627371d53de498f9cedb1c3c419df5b3af9bb,bc073191a470bc16aee9d3ad71d7c4dba9957f85..7c13b9e147a0be5adc6e116ffbe860449b40c4bf
@@@ -574,12 -538,16 +574,16 @@@ t_mdebin *init_mdebin(ener_file_t fp_en
      md->print_grpnms=NULL;
  
      /* check whether we're going to write dh histograms */
 -    md->dhc=NULL; 
 -    if (ir->separate_dhdl_file == sepdhdlfileNO )
 +    md->dhc=NULL;
 +    if (ir->fepvals->separate_dhdl_file == esepdhdlfileNO )
      {
-         snew(md->dhc, 1);
+         /* Currently dh histograms are only written with dynamics */
+         if (EI_DYNAMICS(ir->eI))
+         {
+             snew(md->dhc, 1);
  
-         mde_delta_h_coll_init(md->dhc, ir);
+             mde_delta_h_coll_init(md->dhc, ir);
+         }
          md->fp_dhdl = NULL;
      }
      else
index 927141031215b8370a8980483c8b70d0e0fffc0a,4cf2196e81b02b360683d106b42c4089f0c432fc..145e7bbd5bc2f16f32f5c086beb0a35a581624ba
@@@ -1542,8 -1584,19 +1543,19 @@@ double do_lbfgs(FILE *fplog,t_commrec *
      /* Write coordinates if necessary */
      do_x = do_per_step(step,inputrec->nstxout);
      do_f = do_per_step(step,inputrec->nstfout);
 -    
 +
-     write_traj(fplog,cr,outf,MDOF_X | MDOF_F,
+     mdof_flags = 0;
+     if (do_x)
+     {
+         mdof_flags |= MDOF_X;
+     }
+     if (do_f)
+     {
+         mdof_flags |= MDOF_F;
+     }
+     write_traj(fplog,cr,outf,mdof_flags,
                 top_global,step,(real)step,state,state,f,f,NULL,NULL);
  
      /* Do the linesearching in the direction dx[point][0..(n-1)] */
index e7e31384f5798f484ed0ea94a15d32aaf069ef6d,bf40208ab032648f75c29499d2664cbccce6bb53..375f6df2df610003d398e0c4cc818cbb01da364c
@@@ -2391,14 -2475,13 +2397,13 @@@ static void do_hbac(const char *fn,t_hb
              }           /* i loop */
              sfree(rhbex);
  #pragma omp barrier
 -#ifdef HAVE_OPENMP 
 -            /*                                                           # */
 -        } /* End of parallel block                                       # */
 -        /* ##############################################################/ */
 -        sfree(dondata);
 -#endif
 +        }
 +
 +        if (bOMP)
 +        {
 +            sfree(dondata);
 +        }
-         normalizeACF(ct, NULL, nn);
+         normalizeACF(ct, NULL, 0, nn);
          snew(ctdouble, nn);
          snew(timedouble, nn);
          for (j=0; j<nn; j++)
  
              sfree(h);
              sfree(g);
 -#ifdef HAVE_OPENMP /* =======================================\ */
 -#pragma omp critical
 +
 +            if (bOMP)
              {
 -                for (i=0; i<nn; i++)
 -                    ct[i] += p_ct[i];
 +#pragma omp critical
 +                {
 +                    for (i=0; i<nn; i++)
 +                        ct[i] += p_ct[i];
 +                }
 +                sfree(p_ct);
              }
 -            sfree(p_ct);
  
          } /* ########## THE END OF THE ENORMOUS PARALLELIZED BLOCK ########## */
 -        sfree(dondata);
 -#endif /* HAVE_OPENMP =======================================/ */
 +        if (bOMP)
 +        {
 +            sfree(dondata);
 +        }
  
-         normalizeACF(ct, NULL, nn);
+         normalizeACF(ct, NULL, 0, nn);
  
          fprintf(stderr, "\n\nACF successfully calculated.\n");
  
Simple merge