/*
* 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_CUDA
-# include "gromacs/gpu_utils/gpueventsynchronizer.cuh"
# include "gromacs/gpu_utils/gpuregiontimer.cuh"
#elif GMX_GPU_OPENCL
-# include "gromacs/gpu_utils/gpueventsynchronizer_ocl.h"
# include "gromacs/gpu_utils/gpuregiontimer_ocl.h"
+#elif GMX_GPU_SYCL
+# include "gromacs/gpu_utils/gpuregiontimer_sycl.h"
#endif
-#include "gromacs/timing/gpu_timing.h" // for gtPME_EVENT_COUNT
+#include "gromacs/gpu_utils/gpueventsynchronizer.h"
-#include "pme_gpu_3dfft.h"
+#include "gromacs/fft/gpu_3dfft.h"
+#include "gromacs/timing/gpu_timing.h" // for gtPME_EVENT_COUNT
#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.
* \param[in] pmeStream GPU pme stream.
*/
PmeGpuSpecific(const DeviceContext& deviceContext, const DeviceStream& pmeStream) :
- deviceContext_(deviceContext),
- pmeStream_(pmeStream)
+ deviceContext_(deviceContext), pmeStream_(pmeStream)
{
}
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.
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.