Hi George,
It turned out that memchecker break our usage of weak symbols. The
problem is that the definition of the weak symbol should always appear
before the first use of the function. There are two MPI functions that
are used in the memchecker.h file: MPI_Type_get_contents and
MPI_Type_get_envelope. The memchecker.h header get included before we
get a chance to define the #pragma weak, and the symbols are
incorrectly marked in the resulting object file.
Additionally, I remember that we decided not to use any MPI level
functions inside the Open MPI library. I guess the correct way of
doing this is to use directly the functions provided by the datatype
engine ompi_ddt_get_args once with which set to zero (to retrieve the
values i.e. similar to MPI_Type_get_envelope) and once with "which"
set to one (to retrieve the content i.e. similar to
MPI_Type_get_content).
Yes, you are correct. This has been fixed with r17469. Thanks a lot. :-)
Moreover, there is a better way to have the memchecker_call function
implemented by taking advantage of the data-type engine. It will make
memchecker really dependent of Open MPI ... but I guess not more than
it is right now :) Ping me if you are interested in exploring this
option.
That sounds nice, I'm very interested, could you explain a little bit
more in detail?
Thanks,
Shiqing
--
--------------------------------------------------------------
Shiqing Fan
http://www.hlrs.de/people/fan
High Performance Computing Tel.: +49 711 685 87234
Center Stuttgart (HLRS) Fax.: +49 711 685 65832
POSTAL:Nobelstrasse 19 email: f...@hlrs.de
ACTUAL:Allmandring 30
70569 Stuttgart