On Mon, 6 Dec 2010, Pedro Lopes wrote:
to GridFlow's packet-oriented nature (packets more like TCP/IP, not like PDP, but still based on function->calls)
Yep, that's a consideration that will ultimately yield in a lot of dead times if its parallel. I can try to talk to some openMP heads and figure out if that's out of the equation or not.
can you do something like have a thread per object, such that :
[#for] | [#store] | [#convolve]
... runs in three threads ?
a GridOut struct is a transmission connector, and that's what's being passed in grid-messages. After the sending of the grid-message returns, each call to the .flow method «sends» a packet from one object to another. But you can't parallelise that all over because, quite often, the buffer used for that is reused immediately because it's assumed that the data is already consumed. However, in many other cases, the data being «sent» is just a piece of a grid that will stay constant (for at least until the transmission is over).
Frankly, I'm open to a lot of changes in grid.cxx's API, because I believe that it's not efficient enough (even from my totally single-threaded perspective), and I've been hesitating for too long about this. Perhaps that the ways to make it more efficient as a single thread will also be related to the ways to make it more threadable.
| Mathieu Bouchard ---- tél: +1.514.383.3801 ---- Villeray, Montréal, QC