Skip to content

Tinsel 0.7

Compare
Choose a tag to compare
@mn416 mn416 released this 02 Dec 12:58
· 181 commits to master since this release

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.