[cig-commits] r19232 - in seismo/3D/SPECFEM3D_GLOBE/trunk: doc/USER_MANUAL setup src/shared src/specfem3D

dkomati1 at geodynamics.org dkomati1 at geodynamics.org
Mon Nov 21 15:32:16 PST 2011


Author: dkomati1
Date: 2011-11-21 15:32:16 -0800 (Mon, 21 Nov 2011)
New Revision: 19232

Modified:
   seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.pdf
   seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.tex
   seismo/3D/SPECFEM3D_GLOBE/trunk/setup/constants.h.in
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/read_compute_parameters.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90
Log:
added flag DO_BENCHMARK_RUN_ONLY


Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.pdf
===================================================================
(Binary files differ)

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.tex
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.tex	2011-11-21 23:21:53 UTC (rev 19231)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.tex	2011-11-21 23:32:16 UTC (rev 19232)
@@ -351,6 +351,9 @@
 message (for instance \texttt{``relocation truncated to fit: R\_X86\_64\_PC32 against .bss''} or something similar);
 on an IBM machine with the \texttt{xlf} and \texttt{xlc} compilers, using \texttt{-q64} is usually sufficient.\\
 
+If you run scaling benchmarks of the code, for instance to measure its performance on a new machine, and are not interested in the physical results
+(the seismograms) for these runs, you can set \texttt{DO\_BENCHMARK\_RUN\_ONLY} to \texttt{.true.} in file \texttt{setup/constants.h.in} before running the \texttt{configure} script.
+
 Finally, before compiling, make sure that the subdirectories \texttt{obj},
 \texttt{bak} and \texttt{OUTPUT\_FILES} exist within the directory
 with the source code (\texttt{SPECFEM3D\_GLOBE\_V5.1.1}). The \texttt{go\_mesher}

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/setup/constants.h.in
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/setup/constants.h.in	2011-11-21 23:21:53 UTC (rev 19231)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/setup/constants.h.in	2011-11-21 23:32:16 UTC (rev 19232)
@@ -311,12 +311,17 @@
 ! can be useful for benchmarks of a spherical Earth with fictitious sources and stations
   logical, parameter :: ASSUME_PERFECT_SPHERE = .false.
 
+! flags to do benchmark runs to measure scaling of the code
+! for a limited number of time steps only, setting the initial field to 1
+! to make sure gradual underflow trapping does not slow down the code
+  logical, parameter :: DO_BENCHMARK_RUN_ONLY = .false.
+  integer, parameter :: NSTEP_FOR_BENCHMARK = 300
 
 !------------------------------------------------------
 !----------- do not modify anything below -------------
 !------------------------------------------------------
 
-! on some processors (e.g. Pentiums) it is necessary to suppress underflows
+! on some processors (e.g. some Intel chips) it is necessary to suppress underflows
 ! by using a small initial field instead of zero
   logical, parameter :: FIX_UNDERFLOW_PROBLEM = .true.
 

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/read_compute_parameters.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/read_compute_parameters.f90	2011-11-21 23:21:53 UTC (rev 19231)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/read_compute_parameters.f90	2011-11-21 23:32:16 UTC (rev 19232)
@@ -225,15 +225,16 @@
   ! compute total number of time steps, rounded to next multiple of 100
   NSTEP = 100 * (int(RECORD_LENGTH_IN_MINUTES * 60.d0 / (100.d0*DT)) + 1)
 
+! if doing benchmark runs to measure scaling of the code for a limited number of time steps only
+  if (DO_BENCHMARK_RUN_ONLY) NSTEP = NSTEP_FOR_BENCHMARK
+
 !<YANGL
   if ( NOISE_TOMOGRAPHY /= 0 )   NSTEP = 2*NSTEP-1   ! time steps needs to be doubled, due to +/- branches
 !>YANGL
 
   ! subsets used to save seismograms must not be larger than the whole time series,
   ! otherwise we waste memory
-  if(NTSTEP_BETWEEN_OUTPUT_SEISMOS > NSTEP) then
-    NTSTEP_BETWEEN_OUTPUT_SEISMOS = NSTEP
-  endif
+  if(NTSTEP_BETWEEN_OUTPUT_SEISMOS > NSTEP) NTSTEP_BETWEEN_OUTPUT_SEISMOS = NSTEP
 
   ! computes a default hdur_movie that creates nice looking movies.
   ! Sets HDUR_MOVIE as the minimum period the mesh can resolve

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90	2011-11-21 23:21:53 UTC (rev 19231)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90	2011-11-21 23:32:16 UTC (rev 19232)
@@ -1778,6 +1778,22 @@
     displ_inner_core(:,:) = VERYSMALLVAL
   endif
 
+! if doing benchmark runs to measure scaling of the code,
+! set the initial field to 1 to make sure gradual underflow trapping does not slow down the code
+  if (DO_BENCHMARK_RUN_ONLY) then
+    displ_crust_mantle(:,:) = 1._CUSTOM_REAL
+    veloc_crust_mantle(:,:) = 1._CUSTOM_REAL
+    accel_crust_mantle(:,:) = 1._CUSTOM_REAL
+
+    displ_outer_core(:) = 1._CUSTOM_REAL
+    veloc_outer_core(:) = 1._CUSTOM_REAL
+    accel_outer_core(:) = 1._CUSTOM_REAL
+
+    displ_inner_core(:,:) = 1._CUSTOM_REAL
+    veloc_inner_core(:,:) = 1._CUSTOM_REAL
+    accel_inner_core(:,:) = 1._CUSTOM_REAL
+  endif
+
   if (SIMULATION_TYPE == 3) then
     rho_kl_crust_mantle(:,:,:,:) = 0._CUSTOM_REAL
     beta_kl_crust_mantle(:,:,:,:) = 0._CUSTOM_REAL



More information about the CIG-COMMITS mailing list