waLBerla 7.3
Loading...
Searching...
No Matches

Detailed Description

Control allocation and placement of buffers between host and accelerator memory spaces.

The memory tag protocol is used by all memory-managing simulation data structures of the V8 core library. It is a compile-time protocol where the desired memory semantics are communicated to a class by passing a memory tag as a template parameter.

Each memory tag specifies whether the allocated memory is accessible from the host and/or the device via two compile-time boolean flags: isHostAccessible and isDeviceAccessible.

Depending on waLBerla's build settings, different memory tags are available.

Classes

struct  walberla::v8::memory::memtag::stdmem
 Standard pageable host memory. More...
struct  walberla::v8::memory::memtag::host
 Aligned pageable host memory. More...
struct  walberla::v8::memory::memtag::unified
 Managed GPU memory with unified memory semantics. More...
struct  walberla::v8::memory::memtag::device
 Memory tag indicating GPU device memory. More...
struct  walberla::v8::memory::memtag::pinned
 Memory tag indicating pinned (page-locked) host memory. More...

Typedefs

using walberla::v8::memory::memtag::automatic
 Automatically select a memory tag according to the current build configuration.

Typedef Documentation

◆ automatic

Initial value:
Aligned pageable host memory.
Definition MemoryTags.hpp:80

Automatically select a memory tag according to the current build configuration.

Select a memory tag according to the build configuration:

  • If CUDA or HIP are enabled, use unified memory
  • If no GPU language is enabled, use host memory