[mpich-discuss] Question about MPIU_Handle_obj_alloc (&MPID_Request_mem)

William Gropp wgropp at illinois.edu
Tue Jan 27 12:37:56 CST 2009

There is a tradeoff in the design.  There were two objectives:

1) Make allocations of small numbers of objects *very* fast (the case  
in many typical programs)
2) Bound the memory consumed by MPI internals.

The handle allocator uses three levels of allocations - preallocated,  
direct, and indirect.  Objects in the indirect pool require an extra  
dereference to access, but this allows a large (but bounded) number of  
objects to be allocated.

I'm surprised that you ran out - the parameters in the design allow  
for 256k objects.  It would be possible to realloc the indirect array  
and increase the size, but I don't know of an application case that  
needs this.  Do you have an example?


On Jan 23, 2009, at 3:09 PM, Tejus A G wrote:

> I have an mpich-2 question. In the function, MPIU_Handle_indirect_init
> used during object_allocation, there is the below fail case,
>  /* See if we can allocate another block */
> if (*indirect_size >= indirect_max_size-1) {
>      return 0;
> }
> How/Why is this a failure case? I have a test which fails at  
> MPIU_Handle_obj_alloc
> due to above check, but the system has a lot of memory free.

William Gropp
Deputy Director for Research
Institute for Advanced Computing Applications and Technologies
Paul and Cynthia Saylor Professor of Computer Science
University of Illinois Urbana-Champaign

More information about the mpich-discuss mailing list