From 30889b5aa910abdc43b41bbb917f2d51f6b8db64 Mon Sep 17 00:00:00 2001
From: Jacques Xing <k2258928@erc-hpc-login1.create.kcl.ac.uk>
Date: Thu, 18 Jan 2024 09:27:07 +0000
Subject: [PATCH] Some tidy-up for the Mass and Matrix operators

---
 Operators/Mass/MassCUDA.hpp       |  6 +-----
 Operators/Matrix/MatrixCUDA.hpp   | 21 ++++-----------------
 Operators/Matrix/MatrixStdMat.hpp |  2 --
 3 files changed, 5 insertions(+), 24 deletions(-)

diff --git a/Operators/Mass/MassCUDA.hpp b/Operators/Mass/MassCUDA.hpp
index d48b50c..8575a96 100644
--- a/Operators/Mass/MassCUDA.hpp
+++ b/Operators/Mass/MassCUDA.hpp
@@ -18,8 +18,6 @@ public:
               Field<TData, FieldState::Phys>::template create<MemoryRegionCUDA>(
                   GetBlockAttributes(FieldState::Phys, expansionList)))
     {
-        auto nCoord = this->m_expansionList->GetCoordim(0);
-
         m_BwdTransOp = BwdTrans<>::create(this->m_expansionList, "CUDA");
         m_IProductWRTBaseOp =
             IProductWRTBase<>::create(this->m_expansionList, "CUDA");
@@ -44,12 +42,10 @@ public:
 
     static std::string className;
 
-private:
+protected:
     std::shared_ptr<OperatorBwdTrans<TData>> m_BwdTransOp;
     std::shared_ptr<OperatorIProductWRTBase<TData>> m_IProductWRTBaseOp;
     Field<TData, FieldState::Phys> m_field;
-    size_t m_blockSize = 32;
-    size_t m_gridSize;
 };
 
 } // namespace Nektar::Operators::detail
diff --git a/Operators/Matrix/MatrixCUDA.hpp b/Operators/Matrix/MatrixCUDA.hpp
index 40dfd5f..40910be 100644
--- a/Operators/Matrix/MatrixCUDA.hpp
+++ b/Operators/Matrix/MatrixCUDA.hpp
@@ -1,3 +1,5 @@
+#pragma once
+
 #include "MemoryRegionCUDA.hpp"
 #include "Operators/Matrix/MatrixCUDAKernels.cuh"
 #include "Operators/OperatorHelper.cuh"
@@ -6,11 +8,6 @@
 namespace Nektar::Operators::detail
 {
 
-template <typename TData>
-void MatrixKernel(const size_t gridSize, const size_t blockSize,
-                  const size_t numPts, const size_t nElmts, const size_t size,
-                  const TData *mat, const TData *in, TData *out);
-
 // Matrix implementation
 template <typename TData, FieldState TFieldState>
 class OperatorMatrixImpl<TData, TFieldState, ImplCUDA>
@@ -34,7 +31,6 @@ public:
     ~OperatorMatrixImpl()
     {
         cudaFree(m_matrix);
-        m_matrix = nullptr;
     }
 
     size_t size()
@@ -99,8 +95,8 @@ public:
             m_gridSize = nElmts / m_blockSize;
             m_gridSize += (nElmts % m_blockSize == 0) ? 0 : 1;
 
-            MatrixKernel(m_gridSize, m_blockSize, numPts, nElmts, m_size,
-                         m_matrix, inptr, outptr);
+            MatrixKernel<<<m_gridSize, m_blockSize>>>(numPts, nElmts, m_size,
+                                                      m_matrix, inptr, outptr);
 
             // Increment pointer and index for next element type.
             inptr += numPts * nElmts;
@@ -126,13 +122,4 @@ private:
     size_t m_blockSize = 32;
 };
 
-template <typename TData>
-void MatrixKernel(const size_t gridSize, const size_t blockSize,
-                  const size_t numPts, const size_t nElmts, const size_t size,
-                  const TData *mat, const TData *in, TData *out)
-{
-    MatrixKernel<TData>
-        <<<gridSize, blockSize>>>(numPts, nElmts, size, mat, in, out);
-}
-
 } // namespace Nektar::Operators::detail
diff --git a/Operators/Matrix/MatrixStdMat.hpp b/Operators/Matrix/MatrixStdMat.hpp
index 10c10f7..fd045a1 100644
--- a/Operators/Matrix/MatrixStdMat.hpp
+++ b/Operators/Matrix/MatrixStdMat.hpp
@@ -1,8 +1,6 @@
 #pragma once
 
 #include <numeric>
-
-#include "Field.hpp"
 #include "Operators/OperatorMatrix.hpp"
 
 namespace Nektar::Operators::detail
-- 
GitLab