Yes this is what I'd need exactly. That sounds great to just include in the released binaries then.

I believe most people who download the binaries will use them to link against those mpi libraries and therefore they write source code, so they debug it.

The user can built release, and would need to link against release mpi libs (include the c++ runtime release version).

The user will also build debug, and woud need debug version of the mpi libs (linked against the c++ runtime debug version)


The only way that the user would be ok to link their debug application vs the release mpi libs, is if the release mpi libs are linked against debug c++ runtime.

which maybe a way to do it too.


I think the cleanest however is to just provide on the website both release and debug vesions of the mpic++, of the libs and of the dlls.


On RHEL for e.g., openmpi package contains release and debug versions of the libs.

THe same issue applies to mpic++. However, the rpm package there contains mpic++ only.


To be perfectionnist, mpic++d doesn't seem such a perfect solution because we never really want to debug mpic++ itself, but user may want to debug libmpid.dll in some cases.


my 2cents,


There is work to do to support openmpi properly in both boost and cmake.

boost build has a  mpi jam file which doesn't properly call mpic++ on windows. To use Option 3, mpi jam needs to change to call either mpic++ or mpic++d

cmake findmpi also needs to change to account for both.





From: Shiqing Fan []
Sent: 17 January 2012 15:06
To: MM
Cc: 'Open MPI Users'; Jeff Squyres
Subject: Re: feature requests: mpic++ to report both release and debug flags


Hi MM,

Actually option 3 has already been implemented for Windows build, and it seems adequate. But it was not targeting for the windows binary, as only quite a few users require this feature.

When enabling WANT_EXE_DEBUG_POSTFIX option in CMake GUI, the build system will generate mpic++.exe (release) and mpic++d.exe (debug), and also their wrapper data files. So it is possible so just use mpic++ -showsome for release options and mpic++d -showsome for debug options.

Is this what you are looking for? If it is really necessary, I don't see any problem to include it in the windows binary releases.

I don't know how this is done on Linux system, can anyone comment?


On 2012-01-16 3:51 PM, MM wrote:



It would be useful for the end user to use mpic++ to obtain the compile and link flags for both release and debug builds.


There is a number of possible solutions:

1.      add the showme flags of mpic++ and any other similar binary to something like -showme:compile_debug -showme:compile_release -showme:link_release -showme:link_debug

2.      add a -showme_debug flag to tune the -showme:compile -showme:link

3.      have 2 versions of the binary mpic++(release) and mpic++(debug)

4.      have 1 version of the mpic++ but 2 versions of the of wrapper-data.txt file

5.      have 1 version of mpic++ and 1 version of the wrapper-data file, and 2 sections in the wrapper-data file


It would be great to have this delivered in the win binaries package (include both release and debug libs, that's already the case), and advise 3rd party packagers on unix/linux/mac distributions to do similarily


It would be also useful to publish the cmake flags used by default to produce the win binaries


I am available to test the packages if possible, also is there a wiki for requests or a similar system where I should file the above.






From: Shiqing Fan []
Sent: 19 November 2011 04:44
To: Open MPI Users
Cc: MM
Subject: Re: [OMPI users] mpic++-wrapper-data.txt msvc10 Release/Debug 1.5.4



There is no easy solution. But you can try to use WANT_EXE_DEBUG_POSTFIX option in CMake GUI. Enabling this option will generate different executable.library names for debug and release build. For example, mpic++d.exe for debug and mpic++.exe for release.

For you case, just build both debug and release version of Open MPI 1.5.4, and install them into the same path, you will get two sets of executables/libraries (with "d" postfix for debug version) and mpic++ config files (mpic++d-wrapper-data.txt for debug version). Then just append your own debug/release compile options in the config files, and build with boost mpi as you need.

Hope this helps.


On 2011-11-18 9:44 PM, MM wrote:



Compiling boost mpi library uses mpic++ to get the compile flags to pass to cl.exe and link libs to pass to the linker.

In my case:

>>> mpic++ -showme:compile

/I"C:\Program Files\openmpi\bin/../include" /TP /EHsc /MD

>>> mpic++ -showme:link

/link /LIBPATH:"C:\Program Files\openmpi\bin/../lib" libmpi_cxx.lib libmpi.lib libopen-pal.lib libopen-rte.lib advapi32.lib Ws2_32.lib shlwapi.lib


To choose Release build or Debug build, is it possible to use mpic++-wrapper-data.txt to specify both options?




libmpi_cxx.lib libmpi.lib libopen-pal.lib libopen-rte.lib advapi32.lib Ws2_32.lib shlwapi.lib




libmpi_cxxd.lib libmpid.lib libopen-pald.lib libopen-rted.lib advapi32.lib Ws2_32.lib shlwapi.lib

is there a debug version of "advapi32.lib Ws2_32.lib shlwapi.lib"


For now, I will just override that file for Release, build boost mpi, override for Debug, build for Debug.





users mailing list

Shiqing Fan
High Performance Computing Center Stuttgart (HLRS)
Tel: ++49(0)711-685-87234      Nobelstrasse 19
Fax: ++49(0)711-685-65832      70569 Stuttgart

Shiqing Fan
High Performance Computing Center Stuttgart (HLRS)
Tel: ++49(0)711-685-87234      Nobelstrasse 19
Fax: ++49(0)711-685-65832      70569 Stuttgart