Fix random typos
[alexxy/gromacs.git] / src / gromacs / ewald / pme_gpu_types_host_impl.h
index e134d2c0a79d306d4a6793c24c5ba6bfe2767b63..69121ab07a81bb0e0ffc682ea69b73249ffbcaf3 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2018,2019,2020,2021, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
 #define PMEGPUTYPESHOSTIMPL_H
 
 #include "config.h"
+#include "gromacs/utility/enumerationhelpers.h"
 
 #include <array>
 #include <set>
 #include <vector>
 
-#if GMX_GPU == GMX_GPU_CUDA
-#    include "gromacs/gpu_utils/gpueventsynchronizer.cuh"
+#if GMX_GPU_CUDA
 #    include "gromacs/gpu_utils/gpuregiontimer.cuh"
-#elif GMX_GPU == GMX_GPU_OPENCL
-#    include "gromacs/gpu_utils/gpueventsynchronizer_ocl.h"
+#elif GMX_GPU_OPENCL
 #    include "gromacs/gpu_utils/gpuregiontimer_ocl.h"
+#elif GMX_GPU_SYCL
+#    include "gromacs/gpu_utils/gpuregiontimer_sycl.h"
 #endif
 
+#include "gromacs/gpu_utils/gpueventsynchronizer.h"
+
+#include "gromacs/fft/gpu_3dfft.h"
 #include "gromacs/timing/gpu_timing.h" // for gtPME_EVENT_COUNT
 
-#include "pme_gpu_3dfft.h"
+#ifndef NUMFEPSTATES
+//! Number of FEP states.
+#    define NUMFEPSTATES 2
+#endif
 
-class GpuParallel3dFft;
+namespace gmx
+{
+class Gpu3dFft;
+} // namespace gmx
 
 /*! \internal \brief
  * The main PME CUDA/OpenCL-specific host data structure, included in the PME GPU structure by the archSpecific pointer.
@@ -75,8 +85,7 @@ struct PmeGpuSpecific
      * \param[in] pmeStream      GPU pme stream.
      */
     PmeGpuSpecific(const DeviceContext& deviceContext, const DeviceStream& pmeStream) :
-        deviceContext_(deviceContext),
-        pmeStream_(pmeStream)
+        deviceContext_(deviceContext), pmeStream_(pmeStream)
     {
     }
 
@@ -98,7 +107,7 @@ struct PmeGpuSpecific
     GpuEventSynchronizer syncSpreadGridD2H;
 
     /* Settings which are set at the start of the run */
-    /*! \brief A boolean which tells whether the complex and real grids for cu/clFFT are different or same. Currenty true. */
+    /*! \brief A boolean which tells whether the complex and real grids for cu/clFFT are different or same. Currently true. */
     bool performOutOfPlaceFFT = false;
     /*! \brief A boolean which tells if the GPU timing events are enabled.
      *  False by default, can be enabled by setting the environment variable GMX_ENABLE_GPU_TIMING.
@@ -108,13 +117,13 @@ struct PmeGpuSpecific
     bool useTiming = false;
 
     //! Vector of FFT setups
-    std::vector<std::unique_ptr<GpuParallel3dFft>> fftSetup;
+    std::vector<std::unique_ptr<gmx::Gpu3dFft>> fftSetup;
 
     //! All the timers one might use
-    std::array<GpuRegionTimer, gtPME_EVENT_COUNT> timingEvents;
+    gmx::EnumerationArray<PmeStage, GpuRegionTimer> timingEvents;
 
     //! Indices of timingEvents actually used
-    std::set<size_t> activeTimers;
+    std::set<PmeStage> activeTimers;
 
     /* GPU arrays element counts (not the arrays sizes in bytes!).
      * They might be larger than the actual meaningful data sizes.
@@ -141,21 +150,21 @@ struct PmeGpuSpecific
     /*! \brief Both the kernelParams.atoms.theta and kernelParams.atoms.dtheta float element count (reserved) */
     int splineDataSizeAlloc = 0;
     /*! \brief The kernelParams.atoms.coefficients float element count (actual) */
-    int coefficientsSize = 0;
+    int coefficientsSize[NUMFEPSTATES] = { 0, 0 };
     /*! \brief The kernelParams.atoms.coefficients float element count (reserved) */
-    int coefficientsSizeAlloc = 0;
+    int coefficientsCapacity[NUMFEPSTATES] = { 0, 0 };
     /*! \brief The kernelParams.grid.splineValuesArray float element count (actual) */
-    int splineValuesSize = 0;
+    int splineValuesSize[NUMFEPSTATES] = { 0, 0 };
     /*! \brief The kernelParams.grid.splineValuesArray float element count (reserved) */
-    int splineValuesSizeAlloc = 0;
+    int splineValuesCapacity[NUMFEPSTATES] = { 0, 0 };
     /*! \brief The kernelParams.grid.realGrid float element count (actual) */
-    int realGridSize = 0;
+    int realGridSize[NUMFEPSTATES] = { 0, 0 };
     /*! \brief The kernelParams.grid.realGrid float element count (reserved) */
-    int realGridSizeAlloc = 0;
+    int realGridCapacity[NUMFEPSTATES] = { 0, 0 };
     /*! \brief The kernelParams.grid.fourierGrid float (not float2!) element count (actual) */
-    int complexGridSize = 0;
+    int complexGridSize[NUMFEPSTATES] = { 0, 0 };
     /*! \brief The kernelParams.grid.fourierGrid float (not float2!) element count (reserved) */
-    int complexGridSizeAlloc = 0;
+    int complexGridCapacity[NUMFEPSTATES] = { 0, 0 };
 };
 
 #endif