|
PULSAR
0.1
Parallel Unified Linear Algebra with Systolic Arrays
|
PULSAR Runtime (PRT) More...
#include "prt_vsa.h"
Go to the source code of this file.
Functions | |
| int | prt_tuple_equal (void *tuple_a, void *tuple_b) |
| tuple equality check Check if tuples are identical in length and content. More... | |
| unsigned int | prt_tuple_hash (void *tuple) |
| tuple hash Required by the VSA's tuples hash table. Computes the lenght in characters and calls a string hash function. More... | |
| 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, 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. More... | |
| void | prt_vsa_vdp_insert_local (prt_vsa_t *vsa, prt_vdp_t *vdp, int core, int node_rank) |
| void | prt_vsa_vdp_merge_channels (prt_vsa_t *vsa, prt_vdp_t *vdp) |
| void | prt_vsa_vdp_track_tags_local (prt_vsa_t *vsa, prt_vdp_t *vdp, int core, int node_rank) |
| void | prt_vsa_vdp_track_tags_remote (prt_vsa_t *vsa, prt_vdp_t *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, prt_config_param_t param, prt_config_value_t value) |
| Set VSA configuration parameter. More... | |
| void | prt_vsa_dump (prt_vsa_t *vsa) |
| Dump the VSA structure. More... | |
PULSAR Runtime (PRT)
Virtual Systolic Array (VSA) implementation.
PULSAR Runtime /pulsar/ Copyright (C) 2012-2013 University of Tennessee.
Definition in file prt_vsa.c.
| int prt_tuple_equal | ( | void * | tuple_a, |
| void * | tuple_b | ||
| ) |
tuple equality check Check if tuples are identical in length and content.
| tuple_a | |
| tuple_b |
| 0 | Tuples differ. |
| 1 | Tuples are identical. |
Definition at line 161 of file prt_tuple.c.
References prt_tuple_compare().


| unsigned int prt_tuple_hash | ( | void * | tuple | ) |
tuple hash Required by the VSA's tuples hash table. Computes the lenght in characters and calls a string hash function.
| tuple |
Definition at line 188 of file prt_tuple.c.

| void prt_vsa_config_set | ( | prt_vsa_t * | vsa, |
| prt_config_param_t | param, | ||
| prt_config_value_t | value | ||
| ) |
Set VSA configuration parameter.
| vsa | |
| param | |
| value |
Definition at line 416 of file prt_vsa.c.
References prt_vsa_s::config, prt_error, PRT_SVG_TRACING, PRT_SVG_TRACING_OFF, PRT_SVG_TRACING_ON, PRT_VDP_SCHEDULING, PRT_VDP_SCHEDULING_AGGRESSIVE, PRT_VDP_SCHEDULING_LAZY, prt_config_s::svg_tracing, and prt_config_s::vdp_scheduling.
| 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.

| void prt_vsa_dump | ( | prt_vsa_t * | vsa | ) |
Dump the VSA structure.
| vsa |
Definition at line 454 of file prt_vsa.c.
References icl_list_s::data, prt_channel_s::dst_slot, prt_channel_s::dst_tuple, icl_hash_foreach, icl_list_first(), icl_list_next(), prt_vdp_s::input, prt_vsa_s::node_rank, prt_vdp_s::num_inputs, prt_vsa_s::num_nodes, prt_vdp_s::num_outputs, prt_vsa_s::num_threads, prt_vdp_s::output, prt_vsa_s::proxy, prt_tuple_print(), prt_channel_s::src_slot, prt_channel_s::src_tuple, prt_channel_s::tag, prt_proxy_s::tags_hash, prt_vsa_s::thread, prt_vdp_s::tuple, prt_channel_s::vdp, and prt_thread_s::vdps.

| 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.


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.

