Moody, Adam T.
2018-05-03 21:00:47 UTC
Hello Open MPI team,
I'm looking for the recommended way to produce a debug build of Open MPI v3.0.1 that compiles with â-g -O0â so that I get accurate debug info under a debugger.
So far, I've gone through the following sequence. I started with CFLAGS="-g -O0" on make:
shell$ ./configure --prefix=$installdir --disable-silent-rules \
--disable-new-dtags --enable-mpi-cxx --enable-cxx-exceptions --with-pmi
shell$ make -j CFLAGS="-g -O0" VERBOSE=1
That led to the following error:
In file included from ../../../../opal/util/arch.h:26:0,
from btl_openib.h:43,
from btl_openib_component.c:79:
btl_openib_component.c: In function 'progress_pending_frags_wqe':
btl_openib_component.c:3351:29: error: 'opal_list_item_t' has no member named 'opal_list_item_refcount'
assert(0 == frag->opal_list_item_refcount);
^
make[2]: *** [btl_openib_component.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory `.../openmpi-3.0.1/opal/mca/btl/openib'
So it seems the assert is referring to a field structure that is protected by a debug flag. I then added --enable-debug to configure, which led to:
make[2]: Entering directory `.../openmpi-3.0.1/opal/tools/wrappers'
CC opal_wrapper.o
GENERATE opal_wrapper.1
CCLD opal_wrapper
../../../opal/.libs/libopen-pal.so: undefined reference to `pthread_atfork'
collect2: error: ld returned 1 exit status
make[2]: *** [opal_wrapper] Error 1
make[2]: Leaving directory `.../openmpi-3.0.1/opal/tools/wrappers'
Finally, if I also add LDFLAGS="-lpthread" to make, I get a build:
shell$ ./configure --prefix=$installdir --enable-debug --disable-silent-rules \
--disable-new-dtags --enable-mpi-cxx --enable-cxx-exceptions --with-pmi
shell$ make -j CFLAGS="-g -O0" LDFLAGS="-lpthread" VERBOSE=1
Am I doing this correctly?
Is there a pointer to the configure/make flags for this?
I did find this page that describes the developer build from a git clone, but that seemed a bit overkill since I am looking for a debug build from the distribution tarball instead of the git clone (avoid the autotools nightmare):
https://www.open-mpi.org/source/building.php
Thanks.
-Adam
I'm looking for the recommended way to produce a debug build of Open MPI v3.0.1 that compiles with â-g -O0â so that I get accurate debug info under a debugger.
So far, I've gone through the following sequence. I started with CFLAGS="-g -O0" on make:
shell$ ./configure --prefix=$installdir --disable-silent-rules \
--disable-new-dtags --enable-mpi-cxx --enable-cxx-exceptions --with-pmi
shell$ make -j CFLAGS="-g -O0" VERBOSE=1
That led to the following error:
In file included from ../../../../opal/util/arch.h:26:0,
from btl_openib.h:43,
from btl_openib_component.c:79:
btl_openib_component.c: In function 'progress_pending_frags_wqe':
btl_openib_component.c:3351:29: error: 'opal_list_item_t' has no member named 'opal_list_item_refcount'
assert(0 == frag->opal_list_item_refcount);
^
make[2]: *** [btl_openib_component.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory `.../openmpi-3.0.1/opal/mca/btl/openib'
So it seems the assert is referring to a field structure that is protected by a debug flag. I then added --enable-debug to configure, which led to:
make[2]: Entering directory `.../openmpi-3.0.1/opal/tools/wrappers'
CC opal_wrapper.o
GENERATE opal_wrapper.1
CCLD opal_wrapper
../../../opal/.libs/libopen-pal.so: undefined reference to `pthread_atfork'
collect2: error: ld returned 1 exit status
make[2]: *** [opal_wrapper] Error 1
make[2]: Leaving directory `.../openmpi-3.0.1/opal/tools/wrappers'
Finally, if I also add LDFLAGS="-lpthread" to make, I get a build:
shell$ ./configure --prefix=$installdir --enable-debug --disable-silent-rules \
--disable-new-dtags --enable-mpi-cxx --enable-cxx-exceptions --with-pmi
shell$ make -j CFLAGS="-g -O0" LDFLAGS="-lpthread" VERBOSE=1
Am I doing this correctly?
Is there a pointer to the configure/make flags for this?
I did find this page that describes the developer build from a git clone, but that seemed a bit overkill since I am looking for a debug build from the distribution tarball instead of the git clone (avoid the autotools nightmare):
https://www.open-mpi.org/source/building.php
Thanks.
-Adam