Difference between revisions of "Synchronization"
From NaplesPU Documentation
Line 11: | Line 11: | ||
In this protocol the ''Setup_Message'' and ''Account_Message'' are out-order and we use an enable bit for managing the Setup. | In this protocol the ''Setup_Message'' and ''Account_Message'' are out-order and we use an enable bit for managing the Setup. | ||
The size of message change with number of Synchronization Barrier supported, as view in figure: | The size of message change with number of Synchronization Barrier supported, as view in figure: | ||
− | [[File:SynchronizationMessages.png| | + | [[File:SynchronizationMessages.png|670px]] |
=== Example of Barrier === | === Example of Barrier === | ||
Revision as of 10:15, 8 November 2017
Per Daniele
The nu+ manycore supports an hardware mechanism for Synchronization. The mechanism of synchronization is based on Barrier primitive. A barrier for a group of threads in the source code means any thread must stop at this point and cannot proceed until all other threads reach this barrier.
Contents
Barrier Synchronization Protocol
The Barrier protocol is based on a message passing. We have three type of message:
- Setup_Message: It configures the struct of Barrier in Synchronization Core;
- Account_Message: It notifies to Synchronization Core that the thread is arrived to point of Barrier;
- Release_Message: It notifies from Synchronization Core to Barrier Core that all threads are arrived to point of Synchronization, so the Barrier can end.
In this protocol the Setup_Message and Account_Message are out-order and we use an enable bit for managing the Setup. The size of message change with number of Synchronization Barrier supported, as view in figure: