From 3f689ab1e88538a41e502b25315eecdb91fc4d5a Mon Sep 17 00:00:00 2001
From: "Kurt A. O'Hearn" <ohearnku@msu.edu>
Date: Wed, 26 Jul 2017 11:16:06 -0400
Subject: [PATCH] PG-PuReMD: fix compilation issues with GCC.

---
 PG-PuReMD/configure.ac       |  6 +++---
 PG-PuReMD/src/ffield.c       | 38 ++++++++++++++++++------------------
 PG-PuReMD/src/ffield.h       |  2 +-
 PG-PuReMD/src/forces.c       |  2 +-
 PG-PuReMD/src/parallelreax.c |  5 +++++
 PG-PuReMD/src/reax_types.h   |  3 ++-
 6 files changed, 31 insertions(+), 25 deletions(-)

diff --git a/PG-PuReMD/configure.ac b/PG-PuReMD/configure.ac
index a9eba5fa..6e9f3fb5 100644
--- a/PG-PuReMD/configure.ac
+++ b/PG-PuReMD/configure.ac
@@ -68,10 +68,10 @@ CFLAGS="$CFLAGS"
 AC_CHECK_DECL([OPEN_MPI], [mpi_vendor="OpenMPI"],
 	     [], [#include "mpi.h"])
 # MPICH v2
-AC_CHECK_DECL([MPICH2], [mpi_vendor="MPICH"],
+AC_CHECK_DECL([MPICH2], [mpi_vendor="MPICH2"],
 	     [], [#include "mpi.h"])
 # MPICH v3
-AC_CHECK_DECL([MPICH_VERSION], [mpi_vendor="MPICH"],
+AC_CHECK_DECL([MPICH_VERSION], [mpi_vendor="MPICH3"],
 	     [], [#include "mpi.h"])
 CC="$sav_CC"
 CFLAGS="$sav_CFLAGS"
@@ -86,7 +86,7 @@ then
 	AC_MSG_NOTICE([OpenMPI found])
 	AC_MSG_NOTICE([MPI_CFLAGS=$MPI_CFLAGS])
 	AC_MSG_NOTICE([MPI_LIBS=$MPI_LIBS])
-elif test "$mpi_vendor" = "MPICH"
+elif test "$mpi_vendor" = "MPICH2" || test "$mpi_vendor" = "MPICH3"
 then
 	# build MPI_CFLAGS
 	tmp=`$MPICC -compile-info | awk '{$1=""; print $0 }'`
diff --git a/PG-PuReMD/src/ffield.c b/PG-PuReMD/src/ffield.c
index d985339b..7252674c 100644
--- a/PG-PuReMD/src/ffield.c
+++ b/PG-PuReMD/src/ffield.c
@@ -30,7 +30,7 @@
 #endif
 
 
-char Read_Force_Field( char *ffield_file, reax_interaction *reax,
+int Read_Force_Field( char *ffield_file, reax_interaction *reax,
         control_params *control )
 {
     FILE *fp;
@@ -45,7 +45,7 @@ char Read_Force_Field( char *ffield_file, reax_interaction *reax,
     /* open force field file */
     if ( (fp = fopen( ffield_file, "r" ) ) == NULL )
     {
-        fprintf( stderr, "error opening the force filed file! terminating...\n" );
+        fprintf( stderr, "[ERROR] cannot open force filed file! terminating...\n" );
         MPI_Abort( MPI_COMM_WORLD, FILE_NOT_FOUND );
     }
 
@@ -68,7 +68,7 @@ char Read_Force_Field( char *ffield_file, reax_interaction *reax,
     if ( n < 1 )
     {
         fprintf( stderr, "[WARNING] number of globals in ffield file is 0!\n" );
-        return 1;
+        return SUCCESS;
     }
 
     reax->gp.n_global = n;
@@ -233,7 +233,7 @@ char Read_Force_Field( char *ffield_file, reax_interaction *reax,
             {
                 if ( reax->gp.vdw_type != 0 && reax->gp.vdw_type != 3 )
                 {
-                    fprintf( stderr, "Warning: inconsistent vdWaals-parameters\n"
+                    fprintf( stderr, "[WARNING] inconsistent vdWaals-parameters\n"
                             "Force field parameters for element %s\n"
                             "indicate inner wall+shielding, but earlier\n"
                             "atoms indicate different vdWaals-method.\n"
@@ -255,12 +255,12 @@ char Read_Force_Field( char *ffield_file, reax_interaction *reax,
             {
                 if ( reax->gp.vdw_type != 0 && reax->gp.vdw_type != 2 )
                 {
-                    fprintf( stderr, "Warning: inconsistent vdWaals-parameters\n" );
-                    fprintf( stderr, "Force field parameters for element %s\n", reax->sbp[i].name );
-                    fprintf( stderr, "indicate inner wall without shielding, but earlier\n" );
-                    fprintf( stderr, "atoms indicate different vdWaals-method.\n" );
-                    fprintf( stderr, "This may cause division-by-zero errors.\n" );
-                    fprintf( stderr, "Keeping vdWaals-setting for earlier atoms.\n" );
+                    fprintf( stderr, "[WARNING] inconsistent vdWaals-parameters\n" );
+                    fprintf( stderr, "    [INFO] Force field parameters for element %s\n", reax->sbp[i].name );
+                    fprintf( stderr, "    [INFO] indicate inner wall without shielding, but earlier\n" );
+                    fprintf( stderr, "    [INFO] atoms indicate different vdWaals-method.\n" );
+                    fprintf( stderr, "    [INFO] This may cause division-by-zero errors.\n" );
+                    fprintf( stderr, "    [INFO] Keeping vdWaals-setting for earlier atoms.\n" );
                 }
                 else
                 {
@@ -279,12 +279,12 @@ char Read_Force_Field( char *ffield_file, reax_interaction *reax,
             if ( reax->sbp[i].gamma_w > 0.5 )
             {
                 if ( reax->gp.vdw_type != 0 && reax->gp.vdw_type != 1 )
-                    fprintf( stderr, "Warning: inconsistent vdWaals-parameters\n" \
-                            "Force field parameters for element %s\n"        \
-                            "indicate  shielding without inner wall, but earlier\n" \
-                            "atoms indicate different vdWaals-method.\n"     \
-                            "This may cause division-by-zero errors.\n"      \
-                            "Keeping vdWaals-setting for earlier atoms.\n",
+                    fprintf( stderr, "[WARNING] inconsistent vdWaals-parameters\n" \
+                            "    [INFO] Force field parameters for element %s\n"        \
+                            "    [INFO] indicate  shielding without inner wall, but earlier\n" \
+                            "    [INFO] atoms indicate different vdWaals-method.\n"     \
+                            "    [INFO] This may cause division-by-zero errors.\n"      \
+                            "    [INFO] Keeping vdWaals-setting for earlier atoms.\n",
                             reax->sbp[i].name );
                 else
                 {
@@ -297,8 +297,8 @@ char Read_Force_Field( char *ffield_file, reax_interaction *reax,
             }
             else
             {
-                fprintf( stderr, "Error: inconsistent vdWaals-parameters\n"\
-                         "No shielding or inner-wall set for element %s\n",
+                fprintf( stderr, "[ERROR] inconsistent vdWaals-parameters\n"\
+                         "    [INFO] No shielding or inner-wall set for element %s\n",
                          reax->sbp[i].name );
                 MPI_Abort( MPI_COMM_WORLD, INVALID_INPUT );
             }
@@ -315,7 +315,7 @@ char Read_Force_Field( char *ffield_file, reax_interaction *reax,
         if ( reax->sbp[i].mass < 21 &&
                 reax->sbp[i].valency_val != reax->sbp[i].valency_boc )
         {
-            fprintf( stderr, "Warning: changed valency_val to valency_boc for %s\n",
+            fprintf( stderr, "[WARNING] changed valency_val to valency_boc for atom type %s\n",
                     reax->sbp[i].name );
             reax->sbp[i].valency_val = reax->sbp[i].valency_boc;
         }
diff --git a/PG-PuReMD/src/ffield.h b/PG-PuReMD/src/ffield.h
index 313c3e67..5cca5e9d 100644
--- a/PG-PuReMD/src/ffield.h
+++ b/PG-PuReMD/src/ffield.h
@@ -29,7 +29,7 @@
 extern "C" {
 #endif
 
-char Read_Force_Field( char*, reax_interaction*, control_params* );
+int Read_Force_Field( char*, reax_interaction*, control_params* );
 
 #ifdef __cplusplus
 }
diff --git a/PG-PuReMD/src/forces.c b/PG-PuReMD/src/forces.c
index f210c3b4..d3e295cf 100644
--- a/PG-PuReMD/src/forces.c
+++ b/PG-PuReMD/src/forces.c
@@ -1655,7 +1655,7 @@ void Estimate_Storages( reax_system *system, control_params *control,
     *Htop = (int)(MAX( *Htop * SAFE_ZONE, MIN_CAP * MIN_CM_ENTRIES ));
 
     // Set max sparse entries, needed for first iteration of validate_list
-    system->max_sparse_entries = *Htop * SAFE_ZONE;
+    system->total_cm_entries = *Htop * SAFE_ZONE;
 
     for ( i = 0; i < system->n; ++i )
     {
diff --git a/PG-PuReMD/src/parallelreax.c b/PG-PuReMD/src/parallelreax.c
index 304bb1f6..cc5f9d3d 100644
--- a/PG-PuReMD/src/parallelreax.c
+++ b/PG-PuReMD/src/parallelreax.c
@@ -42,9 +42,12 @@
 #ifdef HAVE_CUDA
   #include "cuda/cuda_copy.h"
   #include "cuda/cuda_environment.h"
+  #include "cuda/cuda_forces.h"
+  #include "cuda/cuda_init_md.h"
   #include "cuda/cuda_neighbors.h"
   #include "cuda/cuda_post_evolve.h"
   #include "cuda/cuda_reset_tools.h"
+  #include "cuda/cuda_system_props.h"
   #include "cuda/cuda_utils.h"
   #include "cuda/cuda_validation.h"
 #endif
@@ -173,7 +176,9 @@ int main( int argc, char* argv[] )
     mpi_datatypes *mpi_data;
     int i, ret, retries;
     real t_start = 0, t_elapsed;
+#if defined(DEBUG)
     real t_begin, t_end;
+#endif
 
     if ( argc != 4 )
     {
diff --git a/PG-PuReMD/src/reax_types.h b/PG-PuReMD/src/reax_types.h
index d683df1c..c0bac402 100644
--- a/PG-PuReMD/src/reax_types.h
+++ b/PG-PuReMD/src/reax_types.h
@@ -198,11 +198,12 @@
 #endif
 
 /**************** RESOURCE CONSTANTS **********************/
+/* 20 MB */
+#define HOST_SCRATCH_SIZE               (1024 * 1024 * 20)
 #ifdef HAVE_CUDA
 /* 20 MB */
 #define DEVICE_SCRATCH_SIZE             (1024 * 1024 * 20)
 /* 20 MB */
-#define HOST_SCRATCH_SIZE               (1024 * 1024 * 20)
 #define RES_SCRATCH                     0x90
 
 /* BLOCK SIZES for kernels */
-- 
GitLab