On Jun 13, 2012, at 10:35 AM, Filippo Donida wrote:

> My idea is to have a thread to be launched just after the MPI_Isend call with 
> a fake MPI_Test function call, just to make the sending operation 
> progressing. 

Sorry for jumping in late (usual disclaimer about my INBOX being a disaster...).

As is usual in engineering, the answer is: "it depends".  :-)

Short version: balance your overheads vs. the delivered performance.

For example, the cost of launching a new thread (and reaping it when it is 
done) vs. claiming a thread from a pool of existing/waiting threads may be 
significant -- especially for transports where latency is already very low 
(e.g., shared memory, InfiniBand, etc.).  

In general, prior research has shown that threaded MPI progress is *generally* 
best for long messages.  I.e., have a thread going in the background that 
processes incoming and outgoing long messages.  But keep the progress of short 
messages in the foreground thread, because the overhead of passing short 
messages to a background thread quickly overwhelms the performance benefit of 
asynchronous progress (unless there's a backlog of short messages, ...etc.).

-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to: 
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to