32 #define PRT_VSA_MAX_VDPS_PER_NODE 1009
62 int num_threads,
void *global_store,
int (*vdp_to_core)(
int*,
void*,
int));
void prt_vsa_config_set(prt_vsa_t *vsa, prt_config_param_t param, prt_config_value_t value)
Set VSA configuration parameter.
void prt_vsa_delete(prt_vsa_t *vsa)
VSA destructor.
prt_vdp_map_func_t vdp_to_core
void prt_vsa_vdp_merge_channels(prt_vsa_t *vsa, prt_vdp_t *vdp)
struct prt_config_s * config
struct prt_thread_s ** thread
void prt_vsa_vdp_insert(prt_vsa_t *vsa, prt_vdp_t *vdp)
Inserts a new VDP into a VSA. Puts the VDP in the list of VDPs of the owner thread. Connects corresponding input and output channels of connected VDPs.
void prt_vsa_vdp_track_tags_local(prt_vsa_t *vsa, prt_vdp_t *vdp, int core, int node_rank)
Virtual Systolic Array (VSA) VSA contains global informationa about the system, a local communication...
VSA's communication proxy Serves communication requests from the worker threads. Contains a list of r...
void prt_vsa_vdp_insert_local(prt_vsa_t *vsa, prt_vdp_t *vdp, int core, int node_rank)
prt_config_param_e
PRT configuration parameters.
void prt_vsa_vdp_track_tags_remote(prt_vsa_t *vsa, prt_vdp_t *vdp, int node_rank)
pthread_attr_t thread_attr
Virtual Data Processor (VDP) Is uniquely identified by a tuple. Fires for a predefined number of cycl...
VSA's worker thread Owns a number of VDPs. Knows the communication proxy.
icl_list_t ** channel_lists
struct prt_proxy_s * proxy
prt_config_value_e
values of PRT configuration parameters
int(* prt_vdp_map_func_t)(int *, void *, int)
VSA's VDPs mapping function pointer Defines the pointer to the function mapping VDPs to cores...
struct prt_vsa_s prt_vsa_t
Virtual Systolic Array (VSA) VSA contains global informationa about the system, a local communication...
void prt_vsa_run(prt_vsa_t *vsa)
VSA's production cycle Launches worker threads. Sends the master thread in the communication proxy pr...
prt_vsa_t * prt_vsa_new(int num_threads, void *global_store, int(*vdp_to_core)(int *, void *, int))
VSA constructor.