Gromacs  2026.0-dev-20241204-d69d709
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Types | Static Public Member Functions
gmx::PageAlignedAllocationPolicy Class Reference

#include <gromacs/utility/include/gromacs/utility/alignedallocator.h>

Description

Policy class for configuring gmx::Allocator, to manage allocations of page-aligned memory that can be locked for asynchronous transfer to GPU devices.

Public Types

using is_always_equal = std::true_type
 Stateless allocation policies are always equal.
 

Static Public Member Functions

static std::size_t alignment ()
 Return the alignment size of memory pages on this system. More...
 
static void * malloc (std::size_t bytes)
 Allocate memory aligned to alignment() bytes. More...
 
static void free (void *p)
 Free aligned memory. More...
 

Member Function Documentation

std::size_t gmx::PageAlignedAllocationPolicy::alignment ( )
static

Return the alignment size of memory pages on this system.

Queries sysconf/WinAPI, otherwise guesses 4096.

void gmx::PageAlignedAllocationPolicy::free ( void *  p)
static

Free aligned memory.

Parameters
pMemory pointer previously returned from malloc()
Note
This routine should only be called with pointers obtained from gmx::PageAlignedAllocationPolicy::malloc(), and absolutely not any pointers obtained the system malloc().
void * gmx::PageAlignedAllocationPolicy::malloc ( std::size_t  bytes)
static

Allocate memory aligned to alignment() bytes.

Parameters
bytesAmount of memory (bytes) to allocate. It is valid to ask for 0 bytes, which will return a non-null pointer that is properly aligned and padded (but that you should not use).
Returns
Valid pointer if the allocation worked, otherwise nullptr.
Note
Memory allocated with this routine must be released with gmx::PageAlignedAllocationPolicy::free(), and absolutely not the system free().

The documentation for this class was generated from the following files: