(git:97501a3)
Loading...
Searching...
No Matches
dbm_mempool.c File Reference
#include <assert.h>
#include <omp.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "../offload/offload_library.h"
#include "../offload/offload_runtime.h"
#include "dbm_hyperparams.h"
#include "dbm_mempool.h"
#include "dbm_mpi.h"

Go to the source code of this file.

Data Structures

struct  dbm_memchunk
 Private struct for storing a chunk of memory. More...
 
struct  dbm_mempool
 Private struct for storing a memory pool. More...
 

Typedefs

typedef struct dbm_memchunk dbm_memchunk_t
 Private struct for storing a chunk of memory.
 
typedef struct dbm_mempool dbm_mempool_t
 Private struct for storing a memory pool.
 

Functions

static void * actual_malloc (const size_t size, const bool on_device)
 Private routine for actually allocating system memory.
 
static void actual_free (void *memory, const bool on_device)
 Private routine for actually freeing system memory.
 
static void * internal_mempool_malloc (dbm_mempool_t *pool, const size_t size, const bool on_device)
 Private routine for allocating host or device memory from the pool.
 
void * dbm_mempool_host_malloc (const size_t size)
 Internal routine for allocating host memory from the pool.
 
void * dbm_mempool_device_malloc (const size_t size)
 Internal routine for allocating device memory from the pool.
 
static void internal_mempool_free (dbm_mempool_t *pool, const void *mem)
 Private routine for releasing memory back to the pool.
 
void dbm_mempool_host_free (const void *memory)
 Internal routine for releasing memory back to the pool.
 
void dbm_mempool_device_free (const void *memory)
 Internal routine for releasing memory back to the pool.
 
static void internal_mempool_clear (dbm_mempool_t *pool, const bool on_device)
 Private routine for freeing all memory in the pool.
 
void dbm_mempool_clear (void)
 Internal routine for freeing all memory in the pool.
 
static uint64_t sum_chunks_size (const dbm_memchunk_t *head)
 Private routine for summing alloc sizes of all chunks in given list.
 
static uint64_t sum_chunks_used (const dbm_memchunk_t *head)
 Private routine for summing used sizes of all chunks in given list.
 
void dbm_mempool_statistics (dbm_memstats_t *memstats)
 Internal routine to query statistics.
 

Variables

static dbm_mempool_t mempool_host = {0}
 Private pools for host and device memory.
 
static dbm_mempool_t mempool_device = {0}
 
static uint64_t host_malloc_counter = 0
 Private some counters for statistics.
 
static uint64_t device_malloc_counter = 0
 

Typedef Documentation

◆ dbm_memchunk_t

typedef struct dbm_memchunk dbm_memchunk_t

Private struct for storing a chunk of memory.

Author
Ole Schuett

◆ dbm_mempool_t

typedef struct dbm_mempool dbm_mempool_t

Private struct for storing a memory pool.

Author
Ole Schuett

Function Documentation

◆ actual_malloc()

static void * actual_malloc ( const size_t  size,
const bool  on_device 
)
static

Private routine for actually allocating system memory.

Author
Ole Schuett

Definition at line 56 of file dbm_mempool.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ actual_free()

static void actual_free ( void *  memory,
const bool  on_device 
)
static

Private routine for actually freeing system memory.

Author
Ole Schuett

Definition at line 92 of file dbm_mempool.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ internal_mempool_malloc()

static void * internal_mempool_malloc ( dbm_mempool_t pool,
const size_t  size,
const bool  on_device 
)
static

Private routine for allocating host or device memory from the pool.

Author
Ole Schuett and Hans Pabst

Definition at line 115 of file dbm_mempool.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dbm_mempool_host_malloc()

void * dbm_mempool_host_malloc ( const size_t  size)

Internal routine for allocating host memory from the pool.

Author
Ole Schuett

Definition at line 180 of file dbm_mempool.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dbm_mempool_device_malloc()

void * dbm_mempool_device_malloc ( const size_t  size)

Internal routine for allocating device memory from the pool.

Author
Ole Schuett

Definition at line 188 of file dbm_mempool.c.

Here is the call graph for this function:

◆ internal_mempool_free()

static void internal_mempool_free ( dbm_mempool_t pool,
const void *  mem 
)
static

Private routine for releasing memory back to the pool.

Author
Ole Schuett

Definition at line 196 of file dbm_mempool.c.

Here is the caller graph for this function:

◆ dbm_mempool_host_free()

void dbm_mempool_host_free ( const void *  memory)

Internal routine for releasing memory back to the pool.

Author
Ole Schuett

Definition at line 224 of file dbm_mempool.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dbm_mempool_device_free()

void dbm_mempool_device_free ( const void *  memory)

Internal routine for releasing memory back to the pool.

Author
Ole Schuett

Definition at line 232 of file dbm_mempool.c.

Here is the call graph for this function:

◆ internal_mempool_clear()

static void internal_mempool_clear ( dbm_mempool_t pool,
const bool  on_device 
)
static

Private routine for freeing all memory in the pool.

Author
Ole Schuett

Definition at line 240 of file dbm_mempool.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dbm_mempool_clear()

void dbm_mempool_clear ( void  )

Internal routine for freeing all memory in the pool.

Author
Ole Schuett

Definition at line 260 of file dbm_mempool.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sum_chunks_size()

static uint64_t sum_chunks_size ( const dbm_memchunk_t head)
static

Private routine for summing alloc sizes of all chunks in given list.

Author
Ole Schuett

Definition at line 269 of file dbm_mempool.c.

Here is the caller graph for this function:

◆ sum_chunks_used()

static uint64_t sum_chunks_used ( const dbm_memchunk_t head)
static

Private routine for summing used sizes of all chunks in given list.

Author
Ole Schuett

Definition at line 281 of file dbm_mempool.c.

Here is the caller graph for this function:

◆ dbm_mempool_statistics()

void dbm_mempool_statistics ( dbm_memstats_t memstats)

Internal routine to query statistics.

Author
Hans Pabst

Definition at line 293 of file dbm_mempool.c.

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ mempool_host

dbm_mempool_t mempool_host = {0}
static

Private pools for host and device memory.

Author
Ole Schuett

Definition at line 44 of file dbm_mempool.c.

◆ mempool_device

dbm_mempool_t mempool_device = {0}
static

Definition at line 44 of file dbm_mempool.c.

◆ host_malloc_counter

uint64_t host_malloc_counter = 0
static

Private some counters for statistics.

Author
Hans Pabst

Definition at line 50 of file dbm_mempool.c.

◆ device_malloc_counter

uint64_t device_malloc_counter = 0
static

Definition at line 50 of file dbm_mempool.c.