This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
ffnamespace:faq [2013/05/07 18:41] peter [Why using both bound and unbound queues?] |
ffnamespace:faq [2014/08/14 15:59] aldinuc |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ~~NOTOC~~ | ||
====== Frequently Asked Questions ====== | ====== Frequently Asked Questions ====== | ||
+ | |||
+ | <note important>Work in progress</note> | ||
+ | |||
===== Programming effort ===== | ===== Programming effort ===== | ||
==== FastFlow vs OpenMP and Intel TBB (and CnC) ==== | ==== FastFlow vs OpenMP and Intel TBB (and CnC) ==== | ||
Line 42: | Line 44: | ||
==== Why use both bound and unbound queues? ==== | ==== Why use both bound and unbound queues? ==== | ||
Bound and unbound queues target different problems. Bound queues can be used to exploit a limited degree of asynchrony among threads, and so are useful for enforcing temporal synchronizations. Unbounded queues enforce data-dependency only (asynchrony degree is unbound), they are very useful in deadlock avoidance strategies of cyclic streaming networks, but do not induce temporal synchronicity among threads. A good system should find a fair trade-off between the two kinds of queue as well as properly defining the size of bound queues. As an example, a queue with length 1 can be used to model a temporal synchronization device since the producer can check when the consumer has received the data. | Bound and unbound queues target different problems. Bound queues can be used to exploit a limited degree of asynchrony among threads, and so are useful for enforcing temporal synchronizations. Unbounded queues enforce data-dependency only (asynchrony degree is unbound), they are very useful in deadlock avoidance strategies of cyclic streaming networks, but do not induce temporal synchronicity among threads. A good system should find a fair trade-off between the two kinds of queue as well as properly defining the size of bound queues. As an example, a queue with length 1 can be used to model a temporal synchronization device since the producer can check when the consumer has received the data. | ||
- | ==== Do FastFlow queues represent a novel research results? ==== | + | ==== Do FastFlow queues represent a novel research result? ==== |
- | Bound SPSC queues are inspired to //P1C1// queues by Higham and Kavalsh (1997), despite the implementation differ from many important details. FastFlow MPMC queues are, to the best of our knowledge, an original usage of SPSC queues. FastFlow unbound SPSC queues idea and design, to the best of our knowledge, is fully novel. Unbound queues can be combined exactly as other SPSC queues to compose MPSC unbound queues (and this is again a novel result). | + | Bound SPSC queues are inspired by //P1C1// queues by Higham and Kavalsh (1997), although the implementation differs in many important details. FastFlow MPMC queues are, to the best of our knowledge, an original use of SPSC queues. The FastFlow unbound SPSC queue idea and design, to the best of our knowledge, is fully novel. Unbound queues can be combined exactly as other SPSC queues to compose MPSC unbound queues (and this is again a novel result). |