|
PULSAR
0.1
Parallel Unified Linear Algebra with Systolic Arrays
|
PRT communication proxy. More...
#include "prt.h"

Go to the source code of this file.
Data Structures | |
| struct | prt_proxy_s |
| VSA's communication proxy Serves communication requests from the worker threads. Contains a list of recv requests from each worker thread. Contains a list of send requests from each worker thread. More... | |
Macros | |
| #define | PRT_PROXY_MAX_TAGS_PER_NODE 1009 |
| maximum tags per node Size of the proxy's hash table of tags. Should be a prime number. More... | |
| #define | PRT_PROXY_MAX_SENDS_PER_THREAD 1 |
| #define | PRT_PROXY_MAX_RECVS_PER_THREAD 1 |
Typedefs | |
| typedef struct prt_proxy_s | prt_proxy_t |
| VSA's communication proxy Serves communication requests from the worker threads. Contains a list of recv requests from each worker thread. Contains a list of send requests from each worker thread. More... | |
Functions | |
| prt_proxy_t * | prt_proxy_new (int num_threads) |
| communication proxy constructor More... | |
| void | prt_proxy_delete (prt_proxy_t *proxy) |
| communication proxy destructor Checking if all the lists are empty at the time of destruction. Not destroying the list of receives (destroyed at the end of prt_proxy_run). More... | |
| void | prt_proxy_max_packet_size (prt_proxy_t *proxy, struct prt_channel_s *channel) |
| Look for maximum channel/packet size. More... | |
| void | prt_proxy_send (prt_proxy_t *proxy, int thread_rank, struct prt_channel_s *channel) |
| send from a channel More... | |
| void | prt_proxy_recv (prt_proxy_t *proxy, struct prt_request_s *request) |
| recv to a channel More... | |
| void | prt_proxy_run (prt_proxy_t *proxy) |
| communication proxy production cycle Serves communication requests of local worker threads until shut down. More... | |
PRT communication proxy.
PULSAR Runtime /pulsar/ Copyright (C) 2012-2013 University of Tennessee.
Definition in file prt_proxy.h.
| #define PRT_PROXY_MAX_RECVS_PER_THREAD 1 |
Definition at line 31 of file prt_proxy.h.
| #define PRT_PROXY_MAX_SENDS_PER_THREAD 1 |
Definition at line 30 of file prt_proxy.h.
| #define PRT_PROXY_MAX_TAGS_PER_NODE 1009 |
maximum tags per node Size of the proxy's hash table of tags. Should be a prime number.
Definition at line 29 of file prt_proxy.h.
| typedef struct prt_proxy_s prt_proxy_t |
VSA's communication proxy Serves communication requests from the worker threads. Contains a list of recv requests from each worker thread. Contains a list of send requests from each worker thread.
| void prt_proxy_delete | ( | prt_proxy_t * | proxy | ) |
communication proxy destructor Checking if all the lists are empty at the time of destruction. Not destroying the list of receives (destroyed at the end of prt_proxy_run).
| proxy |
Definition at line 66 of file prt_proxy.c.
References icl_deque_destroy(), icl_deque_size(), icl_hash_destroy(), icl_list_destroy(), icl_list_size(), prt_proxy_s::num_threads, prt_assert, prt_proxy_s::sends_posted, prt_proxy_s::sends_requested, and prt_proxy_s::tags_hash.


| void prt_proxy_max_packet_size | ( | prt_proxy_t * | proxy, |
| prt_channel_t * | channel | ||
| ) |
Look for maximum channel/packet size.
| proxy | |
| channel |
Definition at line 105 of file prt_proxy.c.
References prt_channel_s::count, prt_channel_s::datatype, and prt_proxy_s::max_packet_size.

| prt_proxy_t* prt_proxy_new | ( | int | num_threads | ) |
communication proxy constructor
| num_threads | number of local worker threads |
Definition at line 21 of file prt_proxy.c.
References icl_deque_new(), icl_hash_create(), icl_list_new(), prt_proxy_s::max_packet_size, prt_proxy_s::num_threads, prt_assert, PRT_PROXY_MAX_TAGS_PER_NODE, prt_tuple_equal(), prt_tuple_hash(), prt_proxy_s::recvs_posted, prt_proxy_s::sends_posted, prt_proxy_s::sends_requested, and prt_proxy_s::tags_hash.


| void prt_proxy_recv | ( | prt_proxy_t * | proxy, |
| prt_request_t * | request | ||
| ) |
recv to a channel
| proxy | |
| request |
Definition at line 143 of file prt_proxy.c.
References prt_packet_s::data, icl_hash_find(), prt_packet_s::num_refs, prt_request_s::packet, prt_assert, prt_channel_push(), prt_tuple_new2, prt_request_s::status, and prt_proxy_s::tags_hash.


| void prt_proxy_run | ( | prt_proxy_t * | proxy | ) |
communication proxy production cycle Serves communication requests of local worker threads until shut down.
| proxy |
Definition at line 171 of file prt_proxy.c.
References icl_list_s::data, prt_thread_s::finished, icl_deque_delete(), icl_deque_first(), icl_deque_size(), icl_list_append(), icl_list_delete(), icl_list_destroy(), icl_list_first(), icl_list_size(), prt_proxy_s::max_packet_size, prt_proxy_s::num_threads, prt_request_s::packet, prt_packet_new(), prt_packet_release(), PRT_PROXY_MAX_RECVS_PER_THREAD, PRT_PROXY_MAX_SENDS_PER_THREAD, prt_proxy_recv(), prt_request_cancel(), prt_request_destroy(), prt_request_new(), prt_request_recv(), prt_request_send(), prt_request_test(), prt_proxy_s::recvs_posted, prt_proxy_s::sends_posted, prt_proxy_s::sends_requested, prt_vsa_s::thread, and prt_proxy_s::vsa.


| void prt_proxy_send | ( | prt_proxy_t * | proxy, |
| int | thread_rank, | ||
| prt_channel_t * | channel | ||
| ) |
send from a channel
| proxy | |
| thread_rank | |
| channel | channel requesting a send |
Definition at line 122 of file prt_proxy.c.
References prt_channel_s::count, prt_channel_s::datatype, prt_channel_s::dst_node, icl_deque_append(), prt_channel_pop(), prt_request_new(), prt_proxy_s::sends_requested, and prt_channel_s::tag.

