![]() |
(git:b77b4be)
|
#include <assert.h>
#include <omp.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include "dbm_hyperparams.h"
#include "dbm_mempool.h"
#include "dbm_shard.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 125 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 139 of file dbm_shard.c.
|
inlinestatic |
Internal routine for masking a slot in the hash-table.
Definition at line 148 of file dbm_shard.c.
|
static |
Private routine for inserting a block into a shard's hashtable.
Definition at line 156 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 175 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 197 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 231 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 259 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 274 of file dbm_shard.c.