Memclave Artifact Documentation
Loading...
Searching...
No Matches
vud_mem.h File Reference
#include "vud.h"
#include <stdint.h>

Go to the source code of this file.

Typedefs

typedef uint32_t vud_mram_addr
 
typedef uint32_t vud_mram_size
 

Functions

void vud_broadcast_transfer (vud_rank *r, vud_mram_size sz, const uint64_t(*src)[sz], vud_mram_addr tgt)
 transfer the same buffer to all DPUs of one rank
 
void vud_simple_transfer (vud_rank *r, vud_mram_size sz, const uint64_t *(*src)[64], vud_mram_addr tgt)
 transfer 64 possibly different buffers to the DPUs of one rank
 
void vud_simple_gather (vud_rank *r, vud_mram_size sz, vud_mram_addr src, uint64_t *(*tgt)[64])
 transfer words from all DPUs to the host
 
void vud_broadcast_to (vud_rank *r, vud_mram_size sz, const uint64_t(*src)[sz], const char *symbol)
 broadcast data to some variable in MRAM
 
void vud_transfer_to (vud_rank *r, vud_mram_size sz, const uint64_t *(*src)[64], const char *symbol)
 transfer per-DPU data to some variable in MRAM
 
void vud_gather_from (vud_rank *r, vud_mram_size sz, const char *symbol, uint64_t *(*tgt)[64])
 gather data per-DPU from some variable in MRAM
 

Typedef Documentation

◆ vud_mram_addr

typedef uint32_t vud_mram_addr

◆ vud_mram_size

typedef uint32_t vud_mram_size

Function Documentation

◆ vud_broadcast_to()

void vud_broadcast_to ( vud_rank r,
vud_mram_size  sz,
const uint64_t(*)  src[sz],
const char *  symbol 
)

broadcast data to some variable in MRAM

NOTE: In hotloops, it may be desirable to call vud_get_symbol directly and cache the result, as these functions call readelf at each invocation.

Parameters
rrank to broadcast data to
szamount of words (8-bytes each) to transfer
srcbuffer holding data to transfer
symbolname of the variable to transfer to - call vud_ime_load before

◆ vud_broadcast_transfer()

void vud_broadcast_transfer ( vud_rank r,
vud_mram_size  sz,
const uint64_t(*)  src[sz],
vud_mram_addr  tgt 
)

transfer the same buffer to all DPUs of one rank

Parameters
rrank to transfer buffer to
szamount of words (8-bytes each) to transfer
srcbuffer holding data to transfer
tgtmram address to copy buffer to

◆ vud_gather_from()

void vud_gather_from ( vud_rank r,
vud_mram_size  sz,
const char *  symbol,
uint64_t *(*)  tgt[64] 
)

gather data per-DPU from some variable in MRAM

Parameters
rrank to gather data from
szamount of words (8-bytes each) to gather
symbolvariable in MRAM to gather data from
tgtBuffer to write words to.

◆ vud_simple_gather()

void vud_simple_gather ( vud_rank r,
vud_mram_size  sz,
vud_mram_addr  src,
uint64_t *(*)  tgt[64] 
)

transfer words from all DPUs to the host

Parameters
rrank to transfer bytes from
szamount of words (8-bytes each) to transfer
srcAddress to read from, the same for all DPUs.
tgtBuffer to write words to.

◆ vud_simple_transfer()

void vud_simple_transfer ( vud_rank r,
vud_mram_size  sz,
const uint64_t *(*)  src[64],
vud_mram_addr  tgt 
)

transfer 64 possibly different buffers to the DPUs of one rank

Parameters
rrank to transfer to
szamount of words (8-bytes each) to transfer
srcarray of pointers to the 64 buffers
tgtmram address to copy buffers to (same for all DPUs)

◆ vud_transfer_to()

void vud_transfer_to ( vud_rank r,
vud_mram_size  sz,
const uint64_t *(*)  src[64],
const char *  symbol 
)

transfer per-DPU data to some variable in MRAM

Parameters
rrank to transfer data to
szamount of words (8-bytes each) to transfer
srcarray of pointers to the 64 buffers
symbolname of the variable to transfer to - call vud_ime_load before