Gromacs  2024.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Macros | Functions | Variables
pme_gpu_program_impl_sycl.cpp File Reference
#include "gmxpre.h"
#include "gromacs/gpu_utils/gmxsycl.h"
#include "gromacs/gpu_utils/syclutils.h"
#include "gromacs/hardware/device_information.h"
#include "pme_gather_sycl.h"
#include "pme_gpu_constants.h"
#include "pme_gpu_internal.h"
#include "pme_gpu_program_impl.h"
#include "pme_gpu_types_host.h"
#include "pme_solve_sycl.h"
#include "pme_spread_sycl.h"
+ Include dependency graph for pme_gpu_program_impl_sycl.cpp:

Description

Implements PmeGpuProgramImpl, which stores permanent PME GPU context-derived data, such as (compiled) kernel handles.

Author
Aleksei Iupinov a.yup.nosp@m.inov.nosp@m.@gmai.nosp@m.l.co.nosp@m.m
Andrey Alekseenko al42a.nosp@m.nd@g.nosp@m.mail..nosp@m.com

Macros

#define INSTANTIATE_SPREAD_2(order, computeSplines, spreadCharges, numGrids, writeGlobal, threadsPerAtom, subGroupSize)   extern template class PmeSplineAndSpreadKernel<order, computeSplines, spreadCharges, true, true, numGrids, writeGlobal, threadsPerAtom, subGroupSize>;
 
#define INSTANTIATE_SPREAD(order, numGrids, threadsPerAtom, subGroupSize)
 
#define INSTANTIATE_GATHER_2(order, numGrids, readGlobal, threadsPerAtom, subGroupSize)   extern template class PmeGatherKernel<order, true, true, numGrids, readGlobal, threadsPerAtom, subGroupSize>;
 
#define INSTANTIATE_GATHER(order, numGrids, threadsPerAtom, subGroupSize)
 
#define INSTANTIATE_X(x, order, subGroupSize)
 
#define INSTANTIATE_SOLVE(subGroupSize)
 
#define INSTANTIATE(order, subGroupSize)
 

Functions

static int chooseSubGroupSizeForDevice (const DeviceInformation &deviceInfo)
 
template<int subGroupSize>
static void setKernelPointers (struct PmeGpuProgramImpl *pmeGpuProgram)
 Helper function to set proper kernel functor pointers.
 

Variables

constexpr int c_pmeOrder = 4
 
constexpr bool c_wrapX = true
 
constexpr bool c_wrapY = true
 
constexpr int c_stateA = 0
 
constexpr int c_stateB = 1
 

Macro Definition Documentation

#define INSTANTIATE (   order,
  subGroupSize 
)
Value:
INSTANTIATE_X(SPREAD, order, subGroupSize); \
INSTANTIATE_X(GATHER, order, subGroupSize); \
INSTANTIATE_SOLVE(subGroupSize);
#define INSTANTIATE_GATHER (   order,
  numGrids,
  threadsPerAtom,
  subGroupSize 
)
Value:
INSTANTIATE_GATHER_2(order, numGrids, true, threadsPerAtom, subGroupSize); \
INSTANTIATE_GATHER_2(order, numGrids, false, threadsPerAtom, subGroupSize);
static int numGrids(const GridSet::DomainSetup &domainSetup)
Returns the number of search grids.
Definition: gridset.cpp:57
#define INSTANTIATE_SOLVE (   subGroupSize)
#define INSTANTIATE_SPREAD (   order,
  numGrids,
  threadsPerAtom,
  subGroupSize 
)
Value:
INSTANTIATE_SPREAD_2(order, true, true, numGrids, true, threadsPerAtom, subGroupSize); \
INSTANTIATE_SPREAD_2(order, true, false, numGrids, true, threadsPerAtom, subGroupSize); \
INSTANTIATE_SPREAD_2(order, false, true, numGrids, true, threadsPerAtom, subGroupSize); \
INSTANTIATE_SPREAD_2(order, true, true, numGrids, false, threadsPerAtom, subGroupSize);
static int numGrids(const GridSet::DomainSetup &domainSetup)
Returns the number of search grids.
Definition: gridset.cpp:57
#define INSTANTIATE_X (   x,
  order,
  subGroupSize 
)
Value:
INSTANTIATE_##x(order, 1, ThreadsPerAtom::Order, subGroupSize); \
INSTANTIATE_##x(order, 1, ThreadsPerAtom::OrderSquared, subGroupSize); \
INSTANTIATE_##x(order, 2, ThreadsPerAtom::Order, subGroupSize); \
INSTANTIATE_##x(order, 2, ThreadsPerAtom::OrderSquared, subGroupSize);
Use a number of threads equal to the PME order (ie. 4)
Use a number of threads equal to the square of the PME order (ie. 16)