On Aug 29, 2013, at 7:33 PM, Christopher Samuel <samuel_at_[hidden]> wrote:
> OK, so I'll try testing again with a larger limit to see if that will
> ameliorate this issue. I'm also wondering where this is happening in
> OMPI, I've a sneaking suspicion this is at MPI_INIT().
FWIW, the stack traces you sent are not during MPI_INIT.
What happens with OMPI's memory manager is that it inserts itself to be *the* memory allocator for the entire process before main() even starts. We have to do this as part of the horribleness of that is OpenFabrics/verbs and how it just doesn't match the MPI programming model at all. :-( (I think I wrote some blog entries about this a while ago... Ah, here's a few:
Or, more generally: http://blogs.cisco.com/tag/rdma/
Therefore, (in C) if you call malloc() before MPI_Init(), it'll be calling OMPI's ptmalloc. The stack traces you sent imply that it's just when your app is calling the fortran allocate -- which is after MPI_Init().
FWIW, you can build OMPI with --without-memory-manager, or you can setenv OMPI_MCA_memory_linux_disable to 1 (note: this is NOT a regular MCA parameter -- it *must* be set in the environment before the MPI app starts). If this env variable is set, OMPI will *not* interpose its own memory manager in the pre-main hook. That should be a quick/easy way to try with and without the memory manager and see what happens.
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/