From a29ceeb854b5ac947c3d4574f8479121be4ea107 Mon Sep 17 00:00:00 2001
From: Mathieu Faverge <mathieu.faverge@inria.fr>
Date: Wed, 24 Jan 2018 15:55:59 +0100
Subject: [PATCH] Add extra flush to norm computations for parsec

---
 compute/pzlange.c | 10 ++++++++++
 compute/pzlanhe.c |  7 +++++++
 compute/pzlansy.c |  7 +++++++
 compute/pzlantr.c | 10 ++++++++++
 4 files changed, 34 insertions(+)

diff --git a/compute/pzlange.c b/compute/pzlange.c
index f893a4d9b..0394d6d33 100644
--- a/compute/pzlange.c
+++ b/compute/pzlange.c
@@ -154,6 +154,9 @@ void morse_pzlange( MORSE_enum norm, MORSE_desc_t *A, double *result,
                     VECNORMS_STEP1(m, n), 1 );
             }
         }
+        MORSE_Desc_Flush( VECNORMS_STEP2, sequence );
+        MORSE_Desc_Flush( VECNORMS_STEP1, sequence );
+        MORSE_Desc_Flush( RESULT, sequence );
         RUNTIME_sequence_wait(morse, sequence);
         MORSE_Desc_Destroy( &(VECNORMS_STEP2) );
         break;
@@ -271,6 +274,9 @@ void morse_pzlange( MORSE_enum norm, MORSE_desc_t *A, double *result,
                     VECNORMS_STEP1(m, n), 1 );
             }
         }
+        MORSE_Desc_Flush( VECNORMS_STEP2, sequence );
+        MORSE_Desc_Flush( VECNORMS_STEP1, sequence );
+        MORSE_Desc_Flush( RESULT, sequence );
         RUNTIME_sequence_wait(morse, sequence);
         MORSE_Desc_Destroy( &(VECNORMS_STEP2) );
         break;
@@ -339,6 +345,8 @@ void morse_pzlange( MORSE_enum norm, MORSE_desc_t *A, double *result,
             }
         }
 
+        MORSE_Desc_Flush( VECNORMS_STEP1, sequence );
+        MORSE_Desc_Flush( RESULT, sequence );
         RUNTIME_sequence_wait(morse, sequence);
         break;
 
@@ -400,6 +408,8 @@ void morse_pzlange( MORSE_enum norm, MORSE_desc_t *A, double *result,
             }
         }
 
+        MORSE_Desc_Flush( VECNORMS_STEP1, sequence );
+        MORSE_Desc_Flush( RESULT, sequence );
         RUNTIME_sequence_wait(morse, sequence);
     }
 
diff --git a/compute/pzlanhe.c b/compute/pzlanhe.c
index af3b5bbab..ef78f795f 100644
--- a/compute/pzlanhe.c
+++ b/compute/pzlanhe.c
@@ -202,6 +202,9 @@ void morse_pzlanhe(MORSE_enum norm, MORSE_enum uplo, MORSE_desc_t *A, double *re
                     VECNORMS_STEP1(m, n), 1 );
             }
         }
+        MORSE_Desc_Flush( VECNORMS_STEP2, sequence );
+        MORSE_Desc_Flush( VECNORMS_STEP1, sequence );
+        MORSE_Desc_Flush( RESULT, sequence );
         RUNTIME_sequence_wait(morse, sequence);
         *result = *(double *)VECNORMS_STEP1->get_blkaddr(VECNORMS_STEP1, A->myrank / A->q, A->myrank % A->q );
         MORSE_Desc_Destroy( &(VECNORMS_STEP1) );
@@ -338,6 +341,8 @@ void morse_pzlanhe(MORSE_enum norm, MORSE_enum uplo, MORSE_desc_t *A, double *re
             }
         }
 
+        MORSE_Desc_Flush( VECNORMS_STEP1, sequence );
+        MORSE_Desc_Flush( RESULT, sequence );
         RUNTIME_sequence_wait(morse, sequence);
         *result = *(double *)VECNORMS_STEP1->get_blkaddr(VECNORMS_STEP1, A->myrank / A->q, A->myrank % A->q );
         MORSE_Desc_Destroy( &(VECNORMS_STEP1) );
@@ -449,6 +454,8 @@ void morse_pzlanhe(MORSE_enum norm, MORSE_enum uplo, MORSE_desc_t *A, double *re
                 }
             }
 
+            MORSE_Desc_Flush( VECNORMS_STEP1, sequence );
+            MORSE_Desc_Flush( RESULT, sequence );
             RUNTIME_sequence_wait(morse, sequence);
             *result = *(double *)VECNORMS_STEP1->get_blkaddr(VECNORMS_STEP1, A->myrank / A->q, A->myrank % A->q );
             MORSE_Desc_Destroy( &(VECNORMS_STEP1) );
diff --git a/compute/pzlansy.c b/compute/pzlansy.c
index f71eb5cb0..80c4df5a9 100644
--- a/compute/pzlansy.c
+++ b/compute/pzlansy.c
@@ -202,6 +202,9 @@ void morse_pzlansy(MORSE_enum norm, MORSE_enum uplo, MORSE_desc_t *A, double *re
                     VECNORMS_STEP1(m, n), 1 );
             }
         }
+        MORSE_Desc_Flush( VECNORMS_STEP2, sequence );
+        MORSE_Desc_Flush( VECNORMS_STEP1, sequence );
+        MORSE_Desc_Flush( RESULT, sequence );
         RUNTIME_sequence_wait(morse, sequence);
         *result = *(double *)VECNORMS_STEP1->get_blkaddr(VECNORMS_STEP1, A->myrank / A->q, A->myrank % A->q );
         MORSE_Desc_Destroy( &(VECNORMS_STEP1) );
@@ -347,6 +350,8 @@ void morse_pzlansy(MORSE_enum norm, MORSE_enum uplo, MORSE_desc_t *A, double *re
             }
         }
 
+        MORSE_Desc_Flush( VECNORMS_STEP1, sequence );
+        MORSE_Desc_Flush( RESULT, sequence );
         RUNTIME_sequence_wait(morse, sequence);
         *result = *(double *)VECNORMS_STEP1->get_blkaddr(VECNORMS_STEP1, A->myrank / A->q, A->myrank % A->q );
         MORSE_Desc_Destroy( &(VECNORMS_STEP1) );
@@ -458,6 +463,8 @@ void morse_pzlansy(MORSE_enum norm, MORSE_enum uplo, MORSE_desc_t *A, double *re
             }
         }
 
+        MORSE_Desc_Flush( VECNORMS_STEP1, sequence );
+        MORSE_Desc_Flush( RESULT, sequence );
         RUNTIME_sequence_wait(morse, sequence);
         *result = *(double *)VECNORMS_STEP1->get_blkaddr(VECNORMS_STEP1, A->myrank / A->q, A->myrank % A->q );
         MORSE_Desc_Destroy( &(VECNORMS_STEP1) );
diff --git a/compute/pzlantr.c b/compute/pzlantr.c
index 7c1e28b71..5f6606615 100644
--- a/compute/pzlantr.c
+++ b/compute/pzlantr.c
@@ -225,6 +225,9 @@ void morse_pzlantr(MORSE_enum norm, MORSE_enum uplo, MORSE_enum diag,
                     VECNORMS_STEP1(m, n), 1 );
             }
         }
+        MORSE_Desc_Flush( VECNORMS_STEP2, sequence );
+        MORSE_Desc_Flush( VECNORMS_STEP1, sequence );
+        MORSE_Desc_Flush( RESULT, sequence );
         RUNTIME_sequence_wait(morse, sequence);
         *result = *(double *)VECNORMS_STEP1->get_blkaddr(VECNORMS_STEP1, A->myrank / A->q, A->myrank % A->q );
         MORSE_Desc_Destroy( &(VECNORMS_STEP1) );
@@ -394,6 +397,9 @@ void morse_pzlantr(MORSE_enum norm, MORSE_enum uplo, MORSE_enum diag,
                     VECNORMS_STEP1(m, n), 1 );
             }
         }
+        MORSE_Desc_Flush( VECNORMS_STEP2, sequence );
+        MORSE_Desc_Flush( VECNORMS_STEP1, sequence );
+        MORSE_Desc_Flush( RESULT, sequence );
         RUNTIME_sequence_wait(morse, sequence);
         *result = *(double *)VECNORMS_STEP1->get_blkaddr(VECNORMS_STEP1, A->myrank / A->q, A->myrank % A->q );
         MORSE_Desc_Destroy( &(VECNORMS_STEP1) );
@@ -534,6 +540,8 @@ void morse_pzlantr(MORSE_enum norm, MORSE_enum uplo, MORSE_enum diag,
             }
         }
 
+        MORSE_Desc_Flush( VECNORMS_STEP1, sequence );
+        MORSE_Desc_Flush( RESULT, sequence );
         RUNTIME_sequence_wait(morse, sequence);
         *result = *(double *)VECNORMS_STEP1->get_blkaddr(VECNORMS_STEP1, A->myrank / A->q, A->myrank % A->q );
         MORSE_Desc_Destroy( &(VECNORMS_STEP1) );
@@ -658,6 +666,8 @@ void morse_pzlantr(MORSE_enum norm, MORSE_enum uplo, MORSE_enum diag,
                 }
             }
 
+            MORSE_Desc_Flush( VECNORMS_STEP1, sequence );
+            MORSE_Desc_Flush( RESULT, sequence );
             RUNTIME_sequence_wait(morse, sequence);
             *result = *(double *)VECNORMS_STEP1->get_blkaddr(VECNORMS_STEP1, A->myrank / A->q, A->myrank % A->q );
             MORSE_Desc_Destroy( &(VECNORMS_STEP1) );
-- 
GitLab