![]() |
(git:73f2880)
|
#include "dbm_shard.h"#include "../offload/offload_mempool.h"#include "dbm_hyperparams.h"#include <assert.h>#include <omp.h>#include <stdbool.h>#include <stddef.h>#include <stdlib.h>#include <string.h>Go to the source code of this file.
Functions | |
| static int | next_power2 (const int start) |
| Internal routine for finding a power of two greater than given number. | |
| static int | next_prime (const int start) |
| Internal routine for finding a prime greater equal than given number. | |
| static void | hashtable_init (dbm_shard_t *shard) |
| Internal routine for initializing a shard's hashtable. | |
| void | dbm_shard_init (dbm_shard_t *shard) |
| Internal routine for initializing a shard. | |
| void | dbm_shard_copy (dbm_shard_t *shard_a, const dbm_shard_t *shard_b) |
| Internal routine for copying content of shard_b into shard_a. | |
| void | dbm_shard_release (dbm_shard_t *shard) |
| Internal routine for releasing a shard. | |
| static unsigned int | hash (const unsigned int row, const unsigned int col) |
| Private hash function based on Cantor pairing function. https://en.wikipedia.org/wiki/Pairing_function#Cantor_pairing_function Szudzik's elegant pairing proved to be too asymmetric wrt. row / col. Using unsigned int to return a positive number even after overflow. | |
| static int | hashtable_mask (const dbm_shard_t *shard) |
| Internal routine for masking a slot in the hash-table. | |
| static void | hashtable_insert (dbm_shard_t *shard, const int block_idx) |
| Private routine for inserting a block into a shard's hashtable. | |
| dbm_block_t * | dbm_shard_lookup (const dbm_shard_t *shard, const int row, const int col) |
| Internal routine for looking up a block from a shard. | |
| dbm_block_t * | dbm_shard_promise_new_block (dbm_shard_t *shard, const int row, const int col, const int block_size) |
| Internal routine for allocating the metadata of a new block. | |
| void | dbm_shard_allocate_promised_blocks (dbm_shard_t *shard) |
| Internal routine for allocating and zeroing any promised block's data. | |
| dbm_block_t * | dbm_shard_get_or_promise_block (dbm_shard_t *shard, const int row, const int col, const int block_size) |
| Internal routine for getting block or promising a new one. | |
| dbm_block_t * | dbm_shard_get_or_allocate_block (dbm_shard_t *shard, const int row, const int col, const int block_size) |
| Internal routine for getting block or allocating a new one. | |
|
static |
Internal routine for finding a power of two greater than given number.
Definition at line 22 of file dbm_shard.c.
|
static |
Internal routine for finding a prime greater equal than given number.
Definition at line 34 of file dbm_shard.c.
|
static |
Internal routine for initializing a shard's hashtable.
Definition at line 51 of file dbm_shard.c.
| void dbm_shard_init | ( | dbm_shard_t * | shard | ) |
Internal routine for initializing a shard.
Definition at line 64 of file dbm_shard.c.
| void dbm_shard_copy | ( | dbm_shard_t * | shard_a, |
| const dbm_shard_t * | shard_b | ||
| ) |
Internal routine for copying content of shard_b into shard_a.
Definition at line 80 of file dbm_shard.c.
| void dbm_shard_release | ( | dbm_shard_t * | shard | ) |
Internal routine for releasing a shard.
Definition at line 128 of file dbm_shard.c.
|
inlinestatic |
Private hash function based on Cantor pairing function. https://en.wikipedia.org/wiki/Pairing_function#Cantor_pairing_function Szudzik's elegant pairing proved to be too asymmetric wrt. row / col. Using unsigned int to return a positive number even after overflow.
Definition at line 142 of file dbm_shard.c.
|
inlinestatic |
Internal routine for masking a slot in the hash-table.
Definition at line 151 of file dbm_shard.c.
|
static |
Private routine for inserting a block into a shard's hashtable.
Definition at line 159 of file dbm_shard.c.
| dbm_block_t * dbm_shard_lookup | ( | const dbm_shard_t * | shard, |
| const int | row, | ||
| const int | col | ||
| ) |
Internal routine for looking up a block from a shard.
Definition at line 178 of file dbm_shard.c.
| dbm_block_t * dbm_shard_promise_new_block | ( | dbm_shard_t * | shard, |
| const int | row, | ||
| const int | col, | ||
| const int | block_size | ||
| ) |
Internal routine for allocating the metadata of a new block.
Definition at line 200 of file dbm_shard.c.
| void dbm_shard_allocate_promised_blocks | ( | dbm_shard_t * | shard | ) |
Internal routine for allocating and zeroing any promised block's data.
Definition at line 234 of file dbm_shard.c.
| dbm_block_t * dbm_shard_get_or_promise_block | ( | dbm_shard_t * | shard, |
| const int | row, | ||
| const int | col, | ||
| const int | block_size | ||
| ) |
Internal routine for getting block or promising a new one.
Definition at line 264 of file dbm_shard.c.
| dbm_block_t * dbm_shard_get_or_allocate_block | ( | dbm_shard_t * | shard, |
| const int | row, | ||
| const int | col, | ||
| const int | block_size | ||
| ) |
Internal routine for getting block or allocating a new one.
Definition at line 279 of file dbm_shard.c.