0d52271cd6
and https://svn.open-mpi.org/trac/ompi/ticket/1853, mallopt() hints do not always work -- it is possible for memory to be returned to the OS and therefore OMPI's registration cache becomes invalid. This commit removes all use of mallopt() and uses a different way to integrate ptmalloc2 than we have done in the past. In particular, we use almost exactly the same technique as MX: * Remove all uses of mallopt, to include the opal/memory mallopt component. * Name-shift all of OMPI's internal ptmalloc2 public symbols (e.g., malloc -> opal_memory_ptmalloc2_malloc). * At run-time, use the existing glibc allocator malloc hook function pointers to fully hijack the glibc allocator with our own name-shifted ptmalloc2. * Make the decision whether to hijack the glibc allocator ''at run time'' (vs. at link time, as previous ptmalloc2 integration attempts have done). Look at the OMPI_MCA_mpi_leave_pinned and OMPI_MCA_mpi_leave_pinned_pipeline environment variables and the existence of /sys/class/infiniband to determine if we should install the hooks or not. * As an added bonus, we can now tell if libopen-pal is linked statically or dynamically, and if we're linked statically, we assume that munmap intercept support doesn't work. See the opal/mca/memory/ptmalloc2/README-open-mpi.txt file for all the gory details about the implementation. Fixes trac:1853. This commit was SVN r20921. The following Trac tickets were found above: Ticket 1853 --> https://svn.open-mpi.org/trac/ompi/ticket/1853
50 строки
1.4 KiB
Plaintext
50 строки
1.4 KiB
Plaintext
# -*- text -*-
|
|
#
|
|
# Copyright (c) 2007-2009 Cisco Systems, Inc. All rights reserved.
|
|
# $COPYRIGHT$
|
|
#
|
|
# Additional copyrights may follow
|
|
#
|
|
# $HEADER$
|
|
#
|
|
[all mem leaks]
|
|
The following memory locations were allocated via MPI_ALLOC_MEM but
|
|
not freed via MPI_FREE_MEM before invoking MPI_FINALIZE:
|
|
|
|
Process ID: %s
|
|
Hostname: %s
|
|
PID: %d
|
|
|
|
%s
|
|
#
|
|
[some mem leaks]
|
|
The following memory locations were allocated via MPI_ALLOC_MEM but
|
|
not freed via MPI_FREE_MEM before invoking MPI_FINALIZE:
|
|
|
|
Process ID: %s
|
|
Hostname: %s
|
|
PID: %d
|
|
|
|
%s
|
|
|
|
%d additional leak%s recorded but %s not displayed here. Set the MCA
|
|
parameter mpi_show_mpi_alloc_mem_leaks to a larger number to see that
|
|
many leaks, or set it to a negative number to see all leaks.
|
|
#
|
|
[leave pinned failed]
|
|
A process attempted to use the "leave pinned" MPI feature, but no
|
|
memory registration hooks were found on the system at run time. This
|
|
may be the result of running on a system that does not support memory
|
|
hooks or having some other software subvert Open MPI's use of the
|
|
memory hooks. You can disable Open MPI's use of memory hooks by
|
|
setting both the mpi_leave_pinned and mpi_leave_pinned_pipeline MCA
|
|
parameters to 0.
|
|
|
|
Open MPI will disable any transports that are attempting to use the
|
|
leave pinned functionality; your job may still run, but may fall back
|
|
to a slower network transport (such as TCP).
|
|
|
|
Mpool name: %s
|
|
Process: %s
|
|
Local host: %s
|