|
PULSAR
0.1
Parallel Unified Linear Algebra with Systolic Arrays
|
Virtual Systolic Array (VSA) More...
#include "prt.h"

Go to the source code of this file.
Data Structures | |
| struct | prt_vsa_s |
| Virtual Systolic Array (VSA) VSA contains global informationa about the system, a local communication proxy and an array of local worker threads. More... | |
Macros | |
| #define | PRT_VSA_MAX_VDPS_PER_NODE 1009 |
| maximum VDPs per node She size of the VSA's hash table of VDPs. Should be a prime number More... | |
Typedefs | |
| typedef 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. More... | |
| typedef struct prt_vsa_s | prt_vsa_t |
| Virtual Systolic Array (VSA) VSA contains global informationa about the system, a local communication proxy and an array of local worker threads. More... | |
Functions | |
| prt_vsa_t * | prt_vsa_new (int num_threads, void *global_store, int(*vdp_to_core)(int *, void *, int)) |
| VSA constructor. More... | |
| void | prt_vsa_delete (prt_vsa_t *vsa) |
| VSA destructor. More... | |
| void | prt_vsa_vdp_insert (prt_vsa_t *vsa, struct prt_vdp_s *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. More... | |
| void | prt_vsa_vdp_insert_local (prt_vsa_t *vsa, struct prt_vdp_s *vdp, int core, int node_rank) |
| void | prt_vsa_vdp_merge_channels (prt_vsa_t *vsa, struct prt_vdp_s *vdp) |
| void | prt_vsa_vdp_track_tags_local (prt_vsa_t *vsa, struct prt_vdp_s *vdp, int core, int node_rank) |
| void | prt_vsa_vdp_track_tags_remote (prt_vsa_t *vsa, struct prt_vdp_s *vdp, int node_rank) |
| void | prt_vsa_run (prt_vsa_t *vsa) |
| VSA's production cycle Launches worker threads. Sends the master thread in the communication proxy production cycle. Joins the worker threads. More... | |
| void | prt_vsa_config_set (prt_vsa_t *vsa, enum prt_config_param_e param, enum prt_config_value_e value) |
Virtual Systolic Array (VSA)
PULSAR Runtime /pulsar/ Copyright (C) 2012-2013 University of Tennessee.
Definition in file prt_vsa.h.
| #define PRT_VSA_MAX_VDPS_PER_NODE 1009 |
| typedef int(* prt_vdp_map_func_t)(int *, void *, int) |
Virtual Systolic Array (VSA) VSA contains global informationa about the system, a local communication proxy and an array of local worker threads.
| void prt_vsa_config_set | ( | prt_vsa_t * | vsa, |
| enum prt_config_param_e | param, | ||
| enum prt_config_value_e | value | ||
| ) |
| void prt_vsa_delete | ( | prt_vsa_t * | vsa | ) |
VSA destructor.
| VSA |
Definition at line 83 of file prt_vsa.c.
References prt_vsa_s::channel_lists, prt_vsa_s::channel_tags, prt_vsa_s::config, icl_hash_destroy(), icl_list_destroy(), prt_vsa_s::num_nodes, prt_vsa_s::num_threads, prt_vsa_s::proxy, prt_assert, prt_channel_delete(), prt_config_delete(), prt_proxy_delete(), prt_thread_delete(), prt_vsa_s::thread, prt_vsa_s::thread_attr, and prt_vsa_s::vdps_hash.

| prt_vsa_t* prt_vsa_new | ( | int | num_threads, |
| void * | global_store, | ||
| int(*)(int *, void *, int) | vdp_to_core | ||
| ) |
VSA constructor.
| num_threads | number of local worker threads |
| global_store | VSA's global store accessible to all VDPs |
| vdp_to_core | function mapping VDP's tuple to a global core number |
| max_vdps | maximum number of VDP's within a node |
Definition at line 27 of file prt_vsa.c.
References prt_vsa_s::channel_lists, prt_vsa_s::channel_tags, prt_vsa_s::config, prt_vsa_s::global_store, icl_hash_create(), prt_vsa_s::node_rank, prt_vsa_s::num_cores, prt_vsa_s::num_nodes, prt_vsa_s::num_threads, prt_vsa_s::proxy, prt_assert, prt_config_new(), prt_proxy_new(), prt_thread_new(), prt_tuple_equal(), prt_tuple_hash(), PRT_VSA_MAX_VDPS_PER_NODE, prt_vsa_s::thread, prt_vsa_s::thread_attr, prt_vsa_s::vdp_to_core, prt_vsa_s::vdps_hash, prt_thread_s::vsa, and prt_proxy_s::vsa.

| void prt_vsa_run | ( | prt_vsa_t * | vsa | ) |
VSA's production cycle Launches worker threads. Sends the master thread in the communication proxy production cycle. Joins the worker threads.
| vsa |
Definition at line 376 of file prt_vsa.c.
References prt_vsa_s::config, prt_thread_s::id, Indigo, prt_vsa_s::num_threads, prt_vsa_s::proxy, prt_assert, prt_proxy_run(), PRT_SVG_TRACING_ON, prt_thread_run(), svg_trace_finish(), svg_trace_init(), svg_trace_start(), svg_trace_stop(), prt_config_s::svg_tracing, prt_vsa_s::thread, and prt_vsa_s::thread_attr.

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.
| vsa | |
| vdp |
Definition at line 127 of file prt_vsa.c.
References prt_vsa_s::global_store, prt_vsa_s::node_rank, prt_vsa_s::num_cores, prt_vsa_s::num_threads, prt_assert, prt_vsa_vdp_insert_local(), prt_vsa_vdp_track_tags_remote(), prt_vdp_s::tuple, and prt_vsa_s::vdp_to_core.

Definition at line 147 of file prt_vsa.c.
References icl_hash_insert(), icl_list_append(), prt_vsa_s::num_threads, prt_assert, prt_vsa_vdp_merge_channels(), prt_vsa_vdp_track_tags_local(), prt_vdp_s::thread, prt_vsa_s::thread, prt_vdp_s::tuple, prt_thread_s::vdps, and prt_vsa_s::vdps_hash.


Definition at line 168 of file prt_vsa.c.
References prt_channel_s::dst_slot, prt_channel_s::dst_tuple, icl_hash_find(), prt_vdp_s::input, prt_vdp_s::num_inputs, prt_vdp_s::num_outputs, prt_vdp_s::output, prt_vsa_s::proxy, prt_assert, prt_channel_delete(), prt_proxy_max_packet_size(), prt_tuple_equal(), prt_channel_s::src_slot, prt_channel_s::src_tuple, prt_channel_s::tag, prt_vdp_s::tuple, and prt_vsa_s::vdps_hash.


| void prt_vsa_vdp_track_tags_local | ( | prt_vsa_t * | vsa, |
| struct prt_vdp_s * | vdp, | ||
| int | core, | ||
| int | node_rank | ||
| ) |
Definition at line 215 of file prt_vsa.c.
References prt_vsa_s::channel_lists, prt_vsa_s::channel_tags, icl_list_s::data, prt_channel_s::dst_node, prt_channel_s::dst_tuple, prt_vsa_s::global_store, icl_hash_insert(), icl_list_append(), icl_list_new(), icl_list_search(), prt_vdp_s::input, prt_vsa_s::node_rank, prt_vsa_s::num_cores, prt_vdp_s::num_inputs, prt_vdp_s::num_outputs, prt_vsa_s::num_threads, prt_vdp_s::output, prt_vsa_s::proxy, prt_assert, prt_channel_compare(), prt_tuple_new2, prt_channel_s::src_tuple, prt_channel_s::tag, prt_proxy_s::tags_hash, and prt_vsa_s::vdp_to_core.


Definition at line 298 of file prt_vsa.c.
References prt_vsa_s::channel_lists, prt_vsa_s::channel_tags, prt_channel_s::dst_node, prt_channel_s::dst_tuple, prt_vsa_s::global_store, icl_list_append(), icl_list_new(), icl_list_search(), prt_vdp_s::input, prt_vsa_s::node_rank, prt_vsa_s::num_cores, prt_vdp_s::num_inputs, prt_vdp_s::num_outputs, prt_vsa_s::num_threads, prt_vdp_s::output, prt_channel_compare(), prt_channel_delete(), prt_channel_s::src_tuple, prt_channel_s::tag, and prt_vsa_s::vdp_to_core.

