KMR
|
Key-Value Stream. More...
#include <kmr.h>
Public Attributes | |
_Bool | _uniformly_sized_: 1 |
struct kmr_kvs_entry * | adding_point |
long | block_count |
size_t | block_size |
long | ckpt_consumed_op |
long | ckpt_generated_op |
long | ckpt_kvs_id |
struct kmr_kvs_block * | current_block |
long | element_count |
size_t | element_size_limit |
struct kmr_kvs_block * | first_block |
struct kmr_code_line | info_line0 |
enum kmr_kv_field | key_data |
struct kmr_kvs_list | link |
enum kmr_kvs_magic | magic |
KMR * | mr |
struct kmr_map_ms_state * | ms |
_Bool | nogrow: 1 |
_Bool | oncore: 1 |
_Bool | shuffled_in_pushoff: 1 |
_Bool | sorted: 1 |
size_t | storage_netsize |
_Bool | stowed: 1 |
void * | temporary_data |
_Bool | under_threaded_operation |
enum kmr_kv_field | value_data |
Key-Value Stream.
MAGIC and MR holds the relevant data. LINK is used to list all allocated key-value streams in the context to detect unfreed ones. KEY_DATA is a datatype of a key field. VALUE_DATA is a datatype of a value field. INFO_LINE0 records the location of its allocation in a program. ELEMENT_COUNT is the local count of the number of elements.
STOWED is set when adding key-value is finished. ONCORE is always true (currently ignored). NOGROW is set when the buffer is preallocated by an enough size. SORTED indicates the key-value stream is locally sorted. SHUFFLED_IN_PUSHOFF is true when its contents are already shuffled. (UNIFORMLY_SIZED is set when all key-values are of the same size. (currently ignored)). (SHUFFLE_TO_SINGLE is set when the shuffling target is a single rank, which only checked locally at each rank. (currently ignored)).
Fields start from CKPT_ are used only when checkpoint/restart is enabled. CKPT_KVS_ID stores a sequence number starts from 0 which is assigned to Key-Value Stream and used to distinguish each other. CKPT_GENERATED_OP and CKPT_CONSUMED_OP store sequence numbers of operations performed to this Key-Value Stream. When this Key-Value Stream is used as an output, the sequence number of the operation is set to CKPT_GENERATED_OP. When this Key-Value Stream is used as an input, the sequence number of the operation is set to CKPT_CONSUMED_OP.
BLOCK_SIZE is an unit of memory allocation invoked at adding a key-value pair. It is PRESET_BLOCK_SIZE in the KMR-context by default. ELEMENT_SIZE_LIMIT restricts the size of one key-value pair (for error detection), and it is set to the 1/4 of BLOCK_SIZE by default.
STORAGE_NETSIZE is the local total size used to hold key-value pairs. The size is the sum of kmr_kvs_entry_netsize() corresponding to opaque fields, and is much larger than actually occupied when the data fields are pointers. FIRST_BLOCK points to the chain of blocks of data.
MS field holds a state during master-slave mapping.
A pair of transient fields CURRENT_BLOCK and ADDING_POINT points to the current insertion point.