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

Reply via email to