| // Copyright (C) 2006 Douglas Gregor <doug.gregor -at- gmail.com> |
| |
| // Use, modification and distribution is subject to the Boost Software |
| // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at |
| // http://www.boost.org/LICENSE_1_0.txt) |
| |
| /** @file config.hpp |
| * |
| * This header provides MPI configuration details that expose the |
| * capabilities of the underlying MPI implementation, and provides |
| * auto-linking support on Windows. |
| */ |
| #ifndef BOOST_MPI_CONFIG_HPP |
| #define BOOST_MPI_CONFIG_HPP |
| |
| /* Force MPICH not to define SEEK_SET, SEEK_CUR, and SEEK_END, which |
| conflict with the versions in <stdio.h> and <cstdio>. */ |
| #define MPICH_IGNORE_CXX_SEEK 1 |
| |
| #include <mpi.h> |
| #include <boost/config.hpp> |
| |
| /** @brief Define this macro to avoid expensice MPI_Pack/Unpack calls on |
| * homogeneous machines. |
| */ |
| //#define BOOST_MPI_HOMOGENEOUS |
| |
| // If this is an MPI-2 implementation, define configuration macros for |
| // the features we are interested in. |
| #if defined(MPI_VERSION) && MPI_VERSION == 2 |
| /** @brief Determine if the MPI implementation has support for memory |
| * allocation. |
| * |
| * This macro will be defined when the underlying MPI implementation |
| * has support for the MPI-2 memory allocation routines @c |
| * MPI_Alloc_mem and @c MPI_Free_mem. When defined, the @c allocator |
| * class template will provide Standard Library-compliant access to |
| * these memory-allocation routines. |
| */ |
| # define BOOST_MPI_HAS_MEMORY_ALLOCATION |
| |
| /** @brief Determine if the MPI implementation has supports initialization |
| * without command-line arguments. |
| * |
| * This macro will be defined when the underlying implementation |
| * supports initialization of MPI without passing along command-line |
| * arguments, e.g., @c MPI_Init(NULL, NULL). When defined, the @c |
| * environment class will provide a default constructor. This macro is |
| * always defined for MPI-2 implementations. */ |
| # define BOOST_MPI_HAS_NOARG_INITIALIZATION |
| #endif |
| |
| #if defined(MPIAPI) |
| # define BOOST_MPI_CALLING_CONVENTION MPIAPI |
| #else |
| /** @brief Specifies the calling convention that will be used for callbacks |
| * from the underlying C MPI. |
| * |
| * This is a Windows-specific macro, which will be used internally to state |
| * the calling convention of any function that is to be used as a callback |
| * from MPI. For example, the internally-defined functions that are used in |
| * a call to @c MPI_Op_create. This macro is likely only to be useful to |
| * users that wish to bypass Boost.MPI, registering their own callbacks in |
| * certain cases, e.g., through @c MPI_Op_create. |
| */ |
| # define BOOST_MPI_CALLING_CONVENTION |
| #endif |
| |
| #if defined(LAM_MPI) |
| // Configuration for LAM/MPI |
| # define BOOST_MPI_HAS_MEMORY_ALLOCATION |
| # define BOOST_MPI_HAS_NOARG_INITIALIZATION |
| #elif defined(MPICH_NAME) |
| // Configuration for MPICH |
| #endif |
| |
| /***************************************************************************** |
| * * |
| * DLL import/export options * |
| * * |
| *****************************************************************************/ |
| |
| #if defined(BOOST_HAS_DECLSPEC) && (defined(BOOST_MPI_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && !defined(BOOST_MPI_STATIC_LINK) |
| # if defined(BOOST_MPI_SOURCE) |
| # define BOOST_MPI_DECL __declspec(dllexport) |
| # define BOOST_MPI_BUILD_DLL |
| # else |
| # define BOOST_MPI_DECL __declspec(dllimport) |
| # endif |
| #endif |
| |
| #ifndef BOOST_MPI_DECL |
| # define BOOST_MPI_DECL |
| #endif |
| |
| #if !defined(BOOST_MPI_NO_LIB) && !defined(BOOST_MPI_SOURCE) && !defined(BOOST_ALL_NO_LIB) && defined(__cplusplus) |
| # define BOOST_LIB_NAME boost_mpi |
| # if defined(BOOST_MPI_DYN_LINK) || defined(BOOST_ALL_DYN_LINK) |
| # define BOOST_DYN_LINK |
| # endif |
| # ifdef BOOST_MPI_DIAG |
| # define BOOST_LIB_DIAGNOSTIC |
| # endif |
| # include <boost/config/auto_link.hpp> |
| #endif |
| |
| #endif // BOOST_MPI_CONFIG_HPP |