PULSAR
2.0.0
Parallel Ultra-Light Systolic Array Runtime
|
Virtual Systolic Array. More...
#include "prt_vsa.h"
Go to the source code of this file.
Functions | |
int | prt_tuple_equal (void *tuple_a, void *tuple_b) |
Checks if two tuples are identical. Check if tuples are identical in length and content. More... | |
unsigned int | prt_tuple_hash (void *tuple) |
Hashes a tuple. This function is required by the VSA's tuples hash table. It computes the lenght in characters and calls a string hashing function. More... | |
prt_vsa_t * | prt_vsa_new (int num_threads, int num_devices, void *global_store, struct prt_mapping_s(*vdp_mapping)(int *, void *, int, int)) |
Creates a new VSA. More... | |
void | prt_vsa_delete (prt_vsa_t *vsa) |
Destroys a VSA. More... | |
void | prt_vsa_vdp_insert (prt_vsa_t *vsa, prt_vdp_t *vdp) |
Inserts a VDP in a VSA. Destroys VDPs that do not belong to this node. Puts the VDP in the list of VDPs of the owner thread or device. Connects corresponding input and output channels of intra-node VDPs. Builds the list of channel connections to other nodes. For a device VDP, creates a CUDA stream with the cudaStreamNonBlocking flag. This indicates no synchronization with the default stream (stream 0). Stream 0 is not used anywere in PRT. More... | |
void | prt_vsa_vdp_merge_channels (prt_vsa_t *vsa, prt_vdp_t *vdp) |
Connects corresponding input and output channels of intra-node VDPs. An input channel always overrides an output channel. This way the on/off switch of the input channel is preserved. More... | |
void | prt_vsa_vdp_track_tags (prt_vsa_t *vsa, prt_vdp_t *vdp) |
Builds the list of channel connections to other nodes. More... | |
void | prt_vsa_channel_tags (prt_vsa_t *vsa) |
Assigns channel tags. Builds the node-tag lookup. Destroys channel lists. More... | |
void | prt_vsa_channel_streams (prt_vsa_t *vsa) |
Creates channel streams. More... | |
double | prt_vsa_run (prt_vsa_t *vsa) |
Implements the VSA's production cycle. Launches worker threads. Sends the master thread in the 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) |
Sets a VSA configuration parameter. More... | |
void | prt_vsa_thread_warmup_func_set (prt_vsa_t *vsa, void(*func)()) |
Sets a thread warmup function. If set, the thread warmup function is called by each thread right after launching and before threads are barriered and the timer is started. Allows for excluding the time for initialization procedures of libraries, such as loading of dynamic libraries, internal memory allocations, possibly time consuming pinned memory allocations, etc. A NULL function pointer can be passed to remove the thread warmup function. More... | |
void | prt_vsa_device_warmup_func_set (prt_vsa_t *vsa, void(*func)()) |
Sets a device warmup function. If set, the device warmup function is called by each device right after launching and before devices are barriered and the timer is started. Allows for excluding the time for initialization procedures of libraries, such as loading of dynamic libraries, internal memory allocations, possibly time consuming pinned memory allocations, etc. A NULL function pointer can be passed to remove the device warmup function. More... | |
void | prt_vsa_devices_warmup (prt_vsa_t *vsa) |
Calls the warmup function for all devices and synchronizes. More... | |
Virtual Systolic Array.
PULSAR Runtime http://icl.utk.edu/pulsar/ Copyright (C) 2012-2015 University of Tennessee.
Definition in file prt_vsa.c.
int prt_tuple_equal | ( | void * | tuple_a, |
void * | tuple_b | ||
) |
Checks if two tuples are identical. Check if tuples are identical in length and content.
tuple_a | – The first tuple. |
tuple_b | – The second tuple. |
0 | if tuples are different. |
1 | if tuples are identical. |
Definition at line 167 of file prt_tuple.c.
unsigned int prt_tuple_hash | ( | void * | tuple) |
Hashes a tuple. This function is required by the VSA's tuples hash table. It computes the lenght in characters and calls a string hashing function.
tuple | – The tuple to hash. |
Definition at line 194 of file prt_tuple.c.
void prt_vsa_channel_streams | ( | prt_vsa_t * | vsa) |
void prt_vsa_channel_tags | ( | prt_vsa_t * | vsa) |
void prt_vsa_devices_warmup | ( | prt_vsa_t * | vsa) |
Connects corresponding input and output channels of intra-node VDPs. An input channel always overrides an output channel. This way the on/off switch of the input channel is preserved.
vsa | – The VSA to merge channels within. |
vdp | – The VDP to merge channels for. |