[cig-commits] r22621 - seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D

dkomati1 at geodynamics.org dkomati1 at geodynamics.org
Mon Jul 15 17:06:12 PDT 2013


Author: dkomati1
Date: 2013-07-15 17:06:11 -0700 (Mon, 15 Jul 2013)
New Revision: 22621

Modified:
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_undo_att.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_classical.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_undo_att.f90
Log:
done vectorizing part2_*.f90; thus now all included files are fully vectorized


Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_undo_att.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_undo_att.f90	2013-07-15 23:16:09 UTC (rev 22620)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_undo_att.f90	2013-07-16 00:06:11 UTC (rev 22621)
@@ -6,7 +6,6 @@
 
     ! Newmark time scheme update
 
-
   do istage = 1, NSTAGE_TIME_SCHEME ! begin loop of istage
 
     if(USE_LDDRK)then

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_classical.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_classical.f90	2013-07-15 23:16:09 UTC (rev 22620)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_classical.f90	2013-07-16 00:06:11 UTC (rev 22621)
@@ -8,7 +8,17 @@
 
     ! backward field
     if (SIMULATION_TYPE == 3) then
+
       ! mantle
+  if(FORCE_VECTORIZATION_VAL) then
+      do i=1,NGLOB_CRUST_MANTLE*NDIM
+        b_displ_crust_mantle(i,1) = b_displ_crust_mantle(i,1) &
+          + b_deltat*b_veloc_crust_mantle(i,1) + b_deltatsqover2*b_accel_crust_mantle(i,1)
+        b_veloc_crust_mantle(i,1) = b_veloc_crust_mantle(i,1) &
+          + b_deltatover2*b_accel_crust_mantle(i,1)
+        b_accel_crust_mantle(i,1) = 0._CUSTOM_REAL
+      enddo
+  else
       do i=1,NGLOB_CRUST_MANTLE
         b_displ_crust_mantle(:,i) = b_displ_crust_mantle(:,i) &
           + b_deltat*b_veloc_crust_mantle(:,i) + b_deltatsqover2*b_accel_crust_mantle(:,i)
@@ -16,6 +26,8 @@
           + b_deltatover2*b_accel_crust_mantle(:,i)
         b_accel_crust_mantle(:,i) = 0._CUSTOM_REAL
       enddo
+  endif
+
       ! outer core
       do i=1,NGLOB_OUTER_CORE
         b_displ_outer_core(i) = b_displ_outer_core(i) &
@@ -24,7 +36,17 @@
           + b_deltatover2*b_accel_outer_core(i)
         b_accel_outer_core(i) = 0._CUSTOM_REAL
       enddo
+
       ! inner core
+  if(FORCE_VECTORIZATION_VAL) then
+      do i=1,NGLOB_INNER_CORE*NDIM
+        b_displ_inner_core(i,1) = b_displ_inner_core(i,1) &
+          + b_deltat*b_veloc_inner_core(i,1) + b_deltatsqover2*b_accel_inner_core(i,1)
+        b_veloc_inner_core(i,1) = b_veloc_inner_core(i,1) &
+          + b_deltatover2*b_accel_inner_core(i,1)
+        b_accel_inner_core(i,1) = 0._CUSTOM_REAL
+      enddo
+  else
       do i=1,NGLOB_INNER_CORE
         b_displ_inner_core(:,i) = b_displ_inner_core(:,i) &
           + b_deltat*b_veloc_inner_core(:,i) + b_deltatsqover2*b_accel_inner_core(:,i)
@@ -32,6 +54,8 @@
           + b_deltatover2*b_accel_inner_core(:,i)
         b_accel_inner_core(:,i) = 0._CUSTOM_REAL
       enddo
+  endif
+
     endif ! SIMULATION_TYPE == 3
 
     ! compute the maximum of the norm of the displacement
@@ -450,7 +474,6 @@
     ! Stacey
     if(NCHUNKS_VAL /= 6 .and. ABSORBING_CONDITIONS) then
       if(SIMULATION_TYPE == 3) then
-
         call compute_stacey_crust_mantle_backward(ichunk, &
                               NSTEP,it,ibool_crust_mantle, &
                               b_accel_crust_mantle, &
@@ -804,10 +827,18 @@
     ! Newmark time scheme - corrector for elastic parts
 
     if (SIMULATION_TYPE == 3) then
+
       ! mantle
+  if(FORCE_VECTORIZATION_VAL) then
+      do i=1,NGLOB_CRUST_MANTLE*NDIM
+        b_veloc_crust_mantle(i,1) = b_veloc_crust_mantle(i,1) + b_deltatover2*b_accel_crust_mantle(i,1)
+      enddo
+  else
       do i=1,NGLOB_CRUST_MANTLE
         b_veloc_crust_mantle(:,i) = b_veloc_crust_mantle(:,i) + b_deltatover2*b_accel_crust_mantle(:,i)
       enddo
+  endif
+
       ! inner core
       do i=1,NGLOB_INNER_CORE
         b_accel_inner_core(1,i) = b_accel_inner_core(1,i)*rmass_inner_core(i) &
@@ -815,8 +846,18 @@
         b_accel_inner_core(2,i) = b_accel_inner_core(2,i)*rmass_inner_core(i) &
          - b_two_omega_earth*b_veloc_inner_core(1,i)
         b_accel_inner_core(3,i) = b_accel_inner_core(3,i)*rmass_inner_core(i)
+      enddo
+
+  if(FORCE_VECTORIZATION_VAL) then
+      do i=1,NGLOB_INNER_CORE*NDIM
+        b_veloc_inner_core(i,1) = b_veloc_inner_core(i,1) + b_deltatover2*b_accel_inner_core(i,1)
+      enddo
+  else
+      do i=1,NGLOB_INNER_CORE
         b_veloc_inner_core(:,i) = b_veloc_inner_core(:,i) + b_deltatover2*b_accel_inner_core(:,i)
       enddo
+  endif
+
     endif ! SIMULATION_TYPE == 3
 
     ! restores last time snapshot saved for backward/reconstruction of wavefields
@@ -870,4 +911,3 @@
     seismo_current = 0
   endif
 
-

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_undo_att.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_undo_att.f90	2013-07-15 23:16:09 UTC (rev 22620)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_undo_att.f90	2013-07-16 00:06:11 UTC (rev 22621)
@@ -8,7 +8,17 @@
 
     ! backward field
     if (SIMULATION_TYPE == 3) then
+
       ! mantle
+  if(FORCE_VECTORIZATION_VAL) then
+      do i=1,NGLOB_CRUST_MANTLE*NDIM
+        b_displ_crust_mantle(i,1) = b_displ_crust_mantle(i,1) &
+          + b_deltat*b_veloc_crust_mantle(i,1) + b_deltatsqover2*b_accel_crust_mantle(i,1)
+        b_veloc_crust_mantle(i,1) = b_veloc_crust_mantle(i,1) &
+          + b_deltatover2*b_accel_crust_mantle(i,1)
+        b_accel_crust_mantle(i,1) = 0._CUSTOM_REAL
+      enddo
+  else
       do i=1,NGLOB_CRUST_MANTLE
         b_displ_crust_mantle(:,i) = b_displ_crust_mantle(:,i) &
           + b_deltat*b_veloc_crust_mantle(:,i) + b_deltatsqover2*b_accel_crust_mantle(:,i)
@@ -16,6 +26,8 @@
           + b_deltatover2*b_accel_crust_mantle(:,i)
         b_accel_crust_mantle(:,i) = 0._CUSTOM_REAL
       enddo
+  endif
+
       ! outer core
       do i=1,NGLOB_OUTER_CORE
         b_displ_outer_core(i) = b_displ_outer_core(i) &
@@ -24,7 +36,17 @@
           + b_deltatover2*b_accel_outer_core(i)
         b_accel_outer_core(i) = 0._CUSTOM_REAL
       enddo
+
       ! inner core
+  if(FORCE_VECTORIZATION_VAL) then
+      do i=1,NGLOB_INNER_CORE*NDIM
+        b_displ_inner_core(i,1) = b_displ_inner_core(i,1) &
+          + b_deltat*b_veloc_inner_core(i,1) + b_deltatsqover2*b_accel_inner_core(i,1)
+        b_veloc_inner_core(i,1) = b_veloc_inner_core(i,1) &
+          + b_deltatover2*b_accel_inner_core(i,1)
+        b_accel_inner_core(i,1) = 0._CUSTOM_REAL
+      enddo
+  else
       do i=1,NGLOB_INNER_CORE
         b_displ_inner_core(:,i) = b_displ_inner_core(:,i) &
           + b_deltat*b_veloc_inner_core(:,i) + b_deltatsqover2*b_accel_inner_core(:,i)
@@ -32,6 +54,8 @@
           + b_deltatover2*b_accel_inner_core(:,i)
         b_accel_inner_core(:,i) = 0._CUSTOM_REAL
       enddo
+  endif
+
     endif ! SIMULATION_TYPE == 3
 
     ! compute the maximum of the norm of the displacement
@@ -826,7 +850,7 @@
 
 ! ------------------- non blocking implementation -------------------
 
-      if((NCHUNKS_VAL /= 6 .and. ABSORBING_CONDITIONS) .and. .not. USE_LDDRK) then
+      if(NCHUNKS_VAL /= 6 .and. ABSORBING_CONDITIONS .and. .not. USE_LDDRK) then
          if(ROTATION_VAL .and. EXACT_MASS_MATRIX_FOR_ROTATION)then
            do i=1,NGLOB_CRUST_MANTLE
               b_accel_crust_mantle(1,i) = b_accel_crust_mantle(1,i)*b_rmassx_crust_mantle(i) &
@@ -889,27 +913,47 @@
     ! Newmark time scheme - corrector for elastic parts
 
     if (SIMULATION_TYPE == 3) then
+
       ! mantle
+  if(FORCE_VECTORIZATION_VAL) then
+      do i=1,NGLOB_CRUST_MANTLE*NDIM
+        b_veloc_crust_mantle(i,1) = b_veloc_crust_mantle(i,1) + b_deltatover2*b_accel_crust_mantle(i,1)
+      enddo
+  else
       do i=1,NGLOB_CRUST_MANTLE
         b_veloc_crust_mantle(:,i) = b_veloc_crust_mantle(:,i) + b_deltatover2*b_accel_crust_mantle(:,i)
       enddo
+  endif
+
       ! inner core
-      do i=1,NGLOB_INNER_CORE
-        if((ROTATION_VAL .and. EXACT_MASS_MATRIX_FOR_ROTATION) .and. .not. USE_LDDRK) then
+      if(ROTATION_VAL .and. EXACT_MASS_MATRIX_FOR_ROTATION .and. .not. USE_LDDRK) then
+        do i=1,NGLOB_INNER_CORE
             b_accel_inner_core(1,i) = b_accel_inner_core(1,i)*b_rmassx_inner_core(i) &
              + b_two_omega_earth*b_veloc_inner_core(2,i)
             b_accel_inner_core(2,i) = b_accel_inner_core(2,i)*b_rmassy_inner_core(i) &
              - b_two_omega_earth*b_veloc_inner_core(1,i)
             b_accel_inner_core(3,i) = b_accel_inner_core(3,i)*b_rmass_inner_core(i)
-        else
+        enddo
+      else
+        do i=1,NGLOB_INNER_CORE
           b_accel_inner_core(1,i) = b_accel_inner_core(1,i)*b_rmass_inner_core(i) &
            + b_two_omega_earth*b_veloc_inner_core(2,i)
           b_accel_inner_core(2,i) = b_accel_inner_core(2,i)*b_rmass_inner_core(i) &
            - b_two_omega_earth*b_veloc_inner_core(1,i)
           b_accel_inner_core(3,i) = b_accel_inner_core(3,i)*b_rmass_inner_core(i)
-        endif
+        enddo
+      endif
+
+  if(FORCE_VECTORIZATION_VAL) then
+      do i=1,NGLOB_INNER_CORE*NDIM
+        b_veloc_inner_core(i,1) = b_veloc_inner_core(i,1) + b_deltatover2*b_accel_inner_core(i,1)
+      enddo
+  else
+      do i=1,NGLOB_INNER_CORE
         b_veloc_inner_core(:,i) = b_veloc_inner_core(:,i) + b_deltatover2*b_accel_inner_core(:,i)
       enddo
+  endif
+
     endif ! SIMULATION_TYPE == 3
 
     ! restores last time snapshot saved for backward/reconstruction of wavefields
@@ -938,7 +982,6 @@
                                 ispec_selected_rec,number_receiver_global, &
                                 seismo_current,NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
                                 seismograms)
-
     endif
   endif ! nrec_local
 
@@ -984,4 +1027,3 @@
     seismo_current = 0
   endif
 
-



More information about the CIG-COMMITS mailing list