Gromacs
2021.4
|
#include "gmxpre.h"
#include "gromacs/gpu_utils/devicebuffer.h"
#include "gromacs/gpu_utils/gmxsycl.h"
#include "gromacs/math/vec.h"
#include "gromacs/mdlib/leapfrog_gpu.h"
#include "gromacs/mdtypes/group.h"
#include "gromacs/utility/arrayref.h"
#include "gromacs/utility/fatalerror.h"
#include "gromacs/utility/template_mp.h"
Implements Leap-Frog using SYCL.
This file contains implementation of basic Leap-Frog integrator using SYCL, including class initialization, data-structures management and GPU kernel.
Functions | |
template<NumTempScaleValues numTempScaleValues, VelocityScalingType velocityScaling> | |
auto | gmx::leapFrogKernel (cl::sycl::handler &cgh, DeviceAccessor< float3, mode::read_write > a_x, DeviceAccessor< float3, mode::discard_write > a_xp, DeviceAccessor< float3, mode::read_write > a_v, DeviceAccessor< float3, mode::read > a_f, DeviceAccessor< float, mode::read > a_inverseMasses, float dt, OptionalAccessor< float, mode::read, numTempScaleValues!=NumTempScaleValues::None > a_lambdas, OptionalAccessor< unsigned short, mode::read, numTempScaleValues==NumTempScaleValues::Multiple > a_tempScaleGroups, float3 prVelocityScalingMatrixDiagonal) |
Main kernel for the Leap-Frog integrator. More... | |
template<NumTempScaleValues numTempScaleValues, VelocityScalingType velocityScaling, class... Args> | |
static cl::sycl::event | gmx::launchLeapFrogKernel (const DeviceStream &deviceStream, int numAtoms, Args &&...args) |
static NumTempScaleValues | gmx::getTempScalingType (bool doTemperatureScaling, int numTempScaleValues) |
template<class... Args> | |
static cl::sycl::event | gmx::launchLeapFrogKernel (NumTempScaleValues tempScalingType, VelocityScalingType prVelocityScalingType, Args &&...args) |
Select templated kernel and launch it. | |