[Beowulf] Re: Re: Home beowulf - NIC latencies

Rob Ross rross at mcs.anl.gov
Fri Feb 11 13:47:39 PST 2005

On Fri, 11 Feb 2005, Isaac Dooley wrote:

> >True. I always wonder what the low-CPU-usage-advocates want the MPI 
> >process to do while i.e. an MPI_Send() is executed. 
> >
> They don't want the process to do anything when the call MPI_Send, 
> however carefully using asynchronous or non-blocking messaging ideally 
> would not use the CPU.

Unless your code is multi-threaded, why do you care what the CPU 
utilization is during MPI_Send()?  Saving on the power bill?

When you call MPI_Send() semantically you've said "Hey, send this, and 
btw I can't do anything else until you are done."  Likewise for 
MPI_Recv().  So the implementation will be built to get things done as 
quickly as possible.

Often the path to lowest latency leads to polling, which leads to the high
CPU utilization.  Same issue with interrupt mitigation, as mentioned
earlier in the thread; you can save CPU by coalescing, or you can get 
better performance.

> Using MPI_ISend() allows programs to not waste CPU cycles waiting on the
> completion of a message transaction.

No, it allows the programmer to express that it wants to send a message 
but not wait for it to complete right now.  The API doesn't specify the 
semantics of CPU utilization.  It cannot, because the API doesn't have 
knowledge of the hardware that will be used in the implementation.

> This is critical for some tightly coupled fine grained applications.

What exactly is critical for tightly coupled, fine grained applications?  

I would think that extremely low latency communication would be the most 
important factor, not whether or not we crank on the CPU to get that.

> Also it allows for overlapping computation and communication, which is
> beneficial.


Rob Ross, Mathematics and Computer Science Division, Argonne National Lab

More information about the Beowulf mailing list