Tinsel 0.7
This release introduces mailbox-local multicast, i.e. the ability for a thread to send a message simultaneously to any subset of threads on a specified destination mailbox. POLite has been extended to use the feature automatically.
There have been a some changes to the Tinsel API. The tinselSlot()
and tinselAlloc()
API calls have been dropped. Instead, a static number of message slots have been reserved per thread for sending messages, and a pointer to one of these slots can be obtained by calling tinselSendSlot()
. All other message slots are implicitly made available for receiving messages. After receiving a message via tinselRecv()
, and processing it, a thread can indicate it has finished with the message via a new function tinselFree()
. For termination detection, a message is considered in-flight until it has been freed.
There have also been a few minor changes to the POLite API. The PMessage
type is no longer parameterised by the edge type. Edge properties are now edge states, i.e. they can be modified in the receive handler. The POLITE_MAX_FANOUT
macro has been dropped. A new macro POLITE_NUM_PINS
is provided, which is 1
by default (applications requiring more than one pin per device will need to set this accordingly). The mapEdgesToDRAM
variable has now been split in two: mapOutEdgesToDRAM
and mapInEdgesToDRAM
(there are now routing tables at both sender and receiver sides).
See the Tinsel documentation and API listings for more details.