[cig-commits] [commit] devel: re-orders loop in Deville routine, leads to faster code on tested systems (dac76e6)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Fri Nov 28 14:14:19 PST 2014


Repository : https://github.com/geodynamics/specfem3d

On branch  : devel
Link       : https://github.com/geodynamics/specfem3d/compare/9a84d06c76e869f5276019e4f84affce23830a4d...8dce71b713c1fd0b510e7538fea0f2307c7b29e8

>---------------------------------------------------------------

commit dac76e6155ffdfcb3a413aac88d737955e2ccf54
Author: daniel peter <peterda at ethz.ch>
Date:   Fri Nov 28 13:52:21 2014 +0100

    re-orders loop in Deville routine, leads to faster code on tested systems


>---------------------------------------------------------------

dac76e6155ffdfcb3a413aac88d737955e2ccf54
 src/specfem3D/compute_forces_acoustic_Dev.F90     | 7 +++----
 src/specfem3D/compute_forces_viscoelastic_Dev.F90 | 7 +++----
 2 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/src/specfem3D/compute_forces_acoustic_Dev.F90 b/src/specfem3D/compute_forces_acoustic_Dev.F90
index 1ab13be..7da1062 100644
--- a/src/specfem3D/compute_forces_acoustic_Dev.F90
+++ b/src/specfem3D/compute_forces_acoustic_Dev.F90
@@ -351,10 +351,9 @@
   integer :: i,j,k
 
   ! matrix-matrix multiplication
-  do j = 1,n2
-    do i = 1,n1
-      ! for efficiency it is better to leave this loop on k inside, it leads to slightly faster code
-      do k = 1,n3
+  do k = 1,n3
+    do j = 1,n2
+      do i = 1,n1
         C(i,j,k) =  A(i,1,k) * B(1,j) &
                   + A(i,2,k) * B(2,j) &
                   + A(i,3,k) * B(3,j) &
diff --git a/src/specfem3D/compute_forces_viscoelastic_Dev.F90 b/src/specfem3D/compute_forces_viscoelastic_Dev.F90
index d28f1a1..eded6af 100644
--- a/src/specfem3D/compute_forces_viscoelastic_Dev.F90
+++ b/src/specfem3D/compute_forces_viscoelastic_Dev.F90
@@ -1089,10 +1089,9 @@
   integer :: i,j,k
 
   ! matrix-matrix multiplication
-  do j = 1,n2
-    do i = 1,n1
-      ! for efficiency it is better to leave this loop on k inside, it leads to slightly faster code
-      do k = 1,n3
+  do k = 1,n3
+    do j = 1,n2
+      do i = 1,n1
         C1(i,j,k) =  A1(i,1,k) * B(1,j) &
                    + A1(i,2,k) * B(2,j) &
                    + A1(i,3,k) * B(3,j) &



More information about the CIG-COMMITS mailing list