On Mon, 3 Mar 2008, Brock Palen wrote:

I was writing a simple code to demonstrate deadlock.  I create an
array of some number of doubles, when sizeof(double)*SIZE is >
btl_sm_eager_limit (on a smp machine) I expect the code to deadlock
but not until the buffer size is greater than the eager limit.

Now in 1.2.3 sm_eager_limit is 4096 (bytes?)  So i expect a buffer of
doubles created with malloc to have up to 512 before the code
deadlocks.  (remember this is for demonstrations only) The code
deadlocks at 504 doubles, does the eager limit not include the
envelope overhead?  Is it really 64 Kbytes?

Thus does every message take up 64K no matter the size of buffer* ?

I think you missed an order of magnitude somewhere :). 504 doubles would take 4032 bytes, so that would leave 64 bytes for header.

The eager limit is the total packet size, so headers are also included in that space (explaining why you wouldn't be able to pack a full 512 doubles) into a single eager message.

There are two headers sent in the SM case - one for the PML (16 bytes) and one for the SM BTL (16 bytes for 32 bit builds, 24 bytes for 64 bit builds). So the grand total of header space for an SM message is 32 or 40 bytes, depending on build size. I'm not sure where the other 24 bytes would be going in your case.

Hope this helps,

Brian


Reply via email to