From e52e58611b25b6e56347cfa3a3afffb5fd7f9251 Mon Sep 17 00:00:00 2001
From: Berenger Bramas <Berenger.Bramas@inria.fr>
Date: Thu, 21 Jan 2016 23:10:08 +0100
Subject: [PATCH] update hmat

---
 Addons/HMat/Src/Containers/FBlockPMapping.hpp | 40 +++++++++++++++----
 .../Tests/testPartitionsMappingGemvBlock.cpp  |  2 +-
 2 files changed, 33 insertions(+), 9 deletions(-)

diff --git a/Addons/HMat/Src/Containers/FBlockPMapping.hpp b/Addons/HMat/Src/Containers/FBlockPMapping.hpp
index fb9e52e57..cfdc94d31 100644
--- a/Addons/HMat/Src/Containers/FBlockPMapping.hpp
+++ b/Addons/HMat/Src/Containers/FBlockPMapping.hpp
@@ -96,11 +96,11 @@ public:
 
         colBlocks = new ColNode[nbPartitions];
         for(int idxPartCol = 0 ; idxPartCol < nbPartitions ; ++idxPartCol){
-            colBlocks[idxPartRow].infos.row = 0;
-            colBlocks[idxPartRow].infos.col = partitionsOffset[idxPartCol];
-            colBlocks[idxPartRow].infos.nbRows = dim;
-            colBlocks[idxPartRow].infos.nbCols = partitions[idxPartRow];
-            colBlocks[idxPartRow].infos.level = 0;
+            colBlocks[idxPartCol].infos.row = 0;
+            colBlocks[idxPartCol].infos.col = partitionsOffset[idxPartCol];
+            colBlocks[idxPartCol].infos.nbRows = dim;
+            colBlocks[idxPartCol].infos.nbCols = partitions[idxPartCol];
+            colBlocks[idxPartCol].infos.level = 0;
         }
     }
 
@@ -140,8 +140,8 @@ public:
             for(int idxPartRow = 0 ; idxPartRow < nbPartitions ; ++idxPartRow){
                 callback(cells[idxPartCol*nbPartitions + idxPartRow].infos,
                      cells[idxPartCol*nbPartitions + idxPartRow].cell,
-                     rowBlocks[idxPartRow],
-                     colBlocks[idxPartCol]);
+                     rowBlocks[idxPartRow].cell,
+                     colBlocks[idxPartCol].cell);
             }
         }
     }
@@ -171,11 +171,35 @@ public:
         return colBlocks[idxColPart].cell;
     }
 
-    const ColBlockClass& getColCellInfo(const int idxColPart) const {
+    const FBlockDescriptor& getColCellInfo(const int idxColPart) const {
         return colBlocks[idxColPart].infos;
     }
 
     // Operations
+    void gemv(FReal res[], const FReal vec[]) const {
+        for(int idxPartCol = 0 ; idxPartCol < nbPartitions ; ++idxPartCol){
+            for(int idxPartRow = 0 ; idxPartRow < nbPartitions ; ++idxPartRow){
+//                &res[cells[idxPartCol*nbPartitions + idxPartRow].infos.row],
+//                &vec[cells[idxPartCol*nbPartitions + idxPartRow].infos.col])
+//                cells[idxPartCol*nbPartitions + idxPartRow].cell,
+//                rowBlocks[idxPartRow].cell,
+//                colBlocks[idxPartCol].cell;
+            }
+        }
+    }
+
+    void gemm(FReal res[], const FReal mat[], const int nbRhs) const {
+        for(int idxPartCol = 0 ; idxPartCol < nbPartitions ; ++idxPartCol){
+            for(int idxPartRow = 0 ; idxPartRow < nbPartitions ; ++idxPartRow){
+//                &res[cells[idxPartCol*nbPartitions + idxPartRow].infos.row],
+//                &vec[cells[idxPartCol*nbPartitions + idxPartRow].infos.col])
+//                cells[idxPartCol*nbPartitions + idxPartRow].cell,
+//                rowBlocks[idxPartRow].cell,
+//                colBlocks[idxPartCol].cell;
+//                nbRhs, dim
+            }
+        }
+    }
 };
 
 #endif // FBLOCKPMAPPING_HPP
diff --git a/Addons/HMat/Tests/testPartitionsMappingGemvBlock.cpp b/Addons/HMat/Tests/testPartitionsMappingGemvBlock.cpp
index 0d8cd99ed..2b43578ee 100644
--- a/Addons/HMat/Tests/testPartitionsMappingGemvBlock.cpp
+++ b/Addons/HMat/Tests/testPartitionsMappingGemvBlock.cpp
@@ -116,7 +116,7 @@ int main(int argc, char** argv){
         std::unique_ptr<FReal[]> resDense(new FReal[dim]);
         FSetToZeros(resDense.get(), dim);
 
-        grid.gemv(resDense.get(), vec.get());
+        //grid.gemv(resDense.get(), vec.get());
 
         FMath::FAccurater<FReal> testDense(resTest.get(), resDense.get(), dim);
 
-- 
GitLab