Gromacs  2026.0-dev-20251110-920b6d1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Macros | Typedefs | Functions | Variables
gputraits_sycl.h File Reference
#include <cstddef>
#include "gromacs/gpu_utils/gmxsycl.h"
#include "gromacs/utility/vectypes.h"
+ Include dependency graph for gputraits_sycl.h:
+ This graph shows which files directly or indirectly include this file:

Description

Declares the SYCL type traits.

Author
Andrey Alekseenko al42a.nosp@m.nd@g.nosp@m.mail..nosp@m.com

Classes

struct  DeviceFloat4
 Convenience alias for 4-wide float in shared device kernels. More...
 
struct  KernelLaunchConfig
 GPU kernels scheduling description. This is same in OpenCL/HIP. Provides reasonable defaults, one typically only needs to set the GPU stream and non-1 work sizes. More...
 

Macros

#define GMX_HOST_ATTRIBUTE
 
#define GMX_DEVICE_ATTRIBUTE
 
#define GMX_HOSTDEVICE_ATTRIBUTE   GMX_HOST_ATTRIBUTE GMX_DEVICE_ATTRIBUTE
 
#define GMX_DEVICE_ASSERT(condition)
 

Typedefs

using DeviceTexture = void *
 Type of device texture object. In SYCL, that would be sycl::image, but it's not used.
 
using CommandEvent = void *
 Single GPU call timing event, not used with SYCL.
 
using Float4 = sycl::float4
 Convenience alias.
 
using Float3 = gmx::RVec
 Convenience alias. Not using sycl::float3 due to alignment issues.
 
using DeviceFloat3 = gmx::RVec
 Convenience alias for 3-wide float in shared device kernels.
 
using Float2 = sycl::float2
 Convenience alias for sycl::float2.
 
using Int3 = sycl::int3
 Convenience alias for sycl::int3.
 
using Int4 = sycl::int4
 Convenience alias for sycl::int4.
 
using DeviceInt3 = sycl::int3
 Convenience alias for int3 in shared device kernels.
 
using DeviceInt4 = sycl::int4
 Convenience alias for int4 in shared device kernels.
 
template<typename T >
using DeviceGlobalPtr = sycl::global_ptr< T >
 Convenience alias for sycl global device memory.
 
template<typename T >
using DeviceLocalPtr = sycl::local_ptr< T >
 Convenience alias for sycl local device memory.
 
template<typename T >
using DevicePrivatePtr = sycl::private_ptr< T >
 Convenience alias for sycl private device memory.
 

Functions

static DeviceInt4 loadInt4 (DeviceGlobalPtr< const int > input, const int index)
 

Variables

static constexpr bool c_canEmbedBuffers = true
 Sets whether device code can use arrays that are embedded in structs. More...
 

Variable Documentation

constexpr bool c_canEmbedBuffers = true
static

Sets whether device code can use arrays that are embedded in structs.

That is not technically true for SYCL, since DeviceBuffer holds not only the memory pointer, but also the context.

But our prepareGpuKernelArguments and launchGpuKernel functions deal with that, so we can pass embedded buffers to them, which is what this constant actually controls.