There is an attached patch with that change.
If it's ok, and once commited, I'll move to the thread init.
On Mon, 2012-12-31 at 23:05 +0100, Matthias Troyer wrote:
> On Dec 4, 2012, at 10:53 AM, Alain O Miniussi <[email protected]> wrote:
>
> > On Thu, 2012-11-29 at 12:55 -0500, Jeremiah Willcock wrote:
> >> On Thu, 29 Nov 2012, Matthias Troyer wrote:
> >>
> >>>
> >>> On Nov 29, 2012, at 5:23 PM, Jeremiah Willcock <[email protected]>
> >>> wrote:
> >>>>
> >>>> Another issue with MPI versions is that Boost.MPI currently uses
> >>>> functions such as MPI_Address that have been removed in MPI 3.0. Is
> >>>> that something that should be addressed in the future? I think the
> >>>> replacements for some of them did not exist before MPI 2.0.
> >>>
> >>> A valid point - we will have to provide two implementations depending on
> >>> which version of MPI is present. Is there any standardized macro that
> >>> one an check to determine the MPI version at compile time?
> >>
> >> There are MPI_VERSION and MPI_SUBVERSION, but those are in 2.0 and above
> >> only as well. You can probably use their being undefined to mean that the
> >> implementation does not comply to 2.0. I don't know how many 1.1-only MPI
> >> implementations are around anymore, though; there may not be any still in
> >> use (MPI 2.0 was released in 1997).
> >
> > That's a good point, especially if the "historical" C++ API was not
> > present in 1.1 (which I think it's the case, it's not clear to me if it
> > was introduced in 1.2 or 2.0). Maybe we should only take into
> > consideration 2.0 and 3.0.
> > Also, if some 1.1 only API are still use, how many requires a Boost.MPI
> > interface ?
> >
> > As far as the no arg init is concerned, it seems to me that that
> > - providing them will simplify the API,
> > - even if some 1.1 only MPI are still around, even if some of them have
> > a use for Boost.MPI, even if those do not support a no arg Init, theirs
> > users still have the possibility to provide those arguments anyway.
> >
> > Alain
>
> I checked the implementation and we do have a no arg init for MPI 2.0 or
> higher since that can be tested by MPI_VERSION. You can also manually define
> BOOST_MPI_HAS_NOARG_INITIALIZATION to enable it for MPI 1.2 or MPI 1.3
> implementations. I assume that this is good enough and we might just want to
> edit the documentation to make the no arg version the default in the
> documentation.
>
> Matthias
>
>
--
Alain Miniussi
Responsable Tech. Centre de Calcul Haute Performance
Obs. de la Côte d'Azur |Mont Gros: +33 4 92 00 30 09
BP 4229 |Sophia : +33 4 83 61 85 44
06304 Nice Cedex 4 |https://crimson.oca.eu
Index: boost/mpi/environment.hpp
===================================================================
--- boost/mpi/environment.hpp (revision 82512)
+++ boost/mpi/environment.hpp (working copy)
@@ -25,9 +25,17 @@
* The @c environment class is used to initialize, finalize, and
* query the MPI environment. It will typically be used in the @c
* main() function of a program, which will create a single instance
- * of @c environment initialized with the arguments passed to the
- * program:
+ * of @c environment:
+ * @code
+ * int main(int argc, char* argv[])
+ * {
+ * mpi::environment env;
+ * }
+ * @endcode
*
+ * Some implementations requires the environement to be initialized
+ * with the arguments passed to the program:
+ *
* @code
* int main(int argc, char* argv[])
* {
@@ -41,9 +49,11 @@
* uncaught exception) in its destructor.
*
* The use of @c environment is not mandatory. Users may choose to
- * invoke @c MPI_Init and @c MPI_Finalize manually. In this case, no
- * @c environment object is needed. If one is created, however, it
- * will do nothing on either construction or destruction.
+ * invoke @c MPI_Init (or @c MPI_Thread_init and @c MPI_Finalize
+ * manually.
+ * In this case, no @c environment object is needed.
+ * If one is created, however, it will do nothing on either
+ * onstruction or destruction.
*/
class BOOST_MPI_DECL environment : noncopyable {
public:
Index: boost/mpi/config.hpp
===================================================================
--- boost/mpi/config.hpp (revision 82512)
+++ boost/mpi/config.hpp (working copy)
@@ -23,7 +23,7 @@
/** @brief Define this macro to avoid expensice MPI_Pack/Unpack calls on
* homogeneous machines.
*/
-//#define BOOST_MPI_HOMOGENEOUS
+#define BOOST_MPI_HOMOGENEOUS
// If this is an MPI-2 implementation, define configuration macros for
// the features we are interested in.
@@ -48,6 +48,11 @@
* environment class will provide a default constructor. This macro is
* always defined for MPI-2 implementations. */
# define BOOST_MPI_HAS_NOARG_INITIALIZATION
+#else
+// If this is an MPI-1.x implementation, no arg initialization for
+// mpi environement could still be available, but not mandatory.
+// Undef this if no arg init is available:
+//# define BOOST_MPI_HAS_NOARG_INITIALIZATION
#endif
#if defined(MPIAPI)
_______________________________________________
Boost-mpi mailing list
[email protected]
http://lists.boost.org/mailman/listinfo.cgi/boost-mpi