Teuchos - Trilinos Tools Package Version of the Day
Loading...
Searching...
No Matches
Teuchos_GlobalMPISession.hpp
Go to the documentation of this file.
1// @HEADER
2// ***********************************************************************
3//
4// Teuchos: Common Tools Package
5// Copyright (2004) Sandia Corporation
6//
7// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8// license for use of this work by or on behalf of the U.S. Government.
9//
10// Redistribution and use in source and binary forms, with or without
11// modification, are permitted provided that the following conditions are
12// met:
13//
14// 1. Redistributions of source code must retain the above copyright
15// notice, this list of conditions and the following disclaimer.
16//
17// 2. Redistributions in binary form must reproduce the above copyright
18// notice, this list of conditions and the following disclaimer in the
19// documentation and/or other materials provided with the distribution.
20//
21// 3. Neither the name of the Corporation nor the names of the
22// contributors may be used to endorse or promote products derived from
23// this software without specific prior written permission.
24//
25// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36//
37// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38//
39// ***********************************************************************
40// @HEADER
41
42#ifndef TEUCHOS_GLOBAL_MPI_SESSION_HPP
43#define TEUCHOS_GLOBAL_MPI_SESSION_HPP
44
50#include "TeuchosCore_ConfigDefs.hpp"
51
52#include "Teuchos_ArrayView.hpp"
53
54
55namespace Teuchos {
56
66//
113class TEUCHOSCORE_LIB_DLL_EXPORT GlobalMPISession
114{
115public:
116
118
119
162 GlobalMPISession( int* argc, char*** argv, std::ostream *out = &std::cout );
163
166
168
170
171
176 static void abort();
177
179
180
188 static bool mpiIsInitialized();
189
195 static bool mpiIsFinalized();
196
207 static int getRank();
208
219 static int getNProc();
220
229 static void barrier();
230
247 static int sum(int localVal);
248
264 static void allGather(int localVal, const ArrayView<int> &allVals);
265
266#ifdef HAVE_TEUCHOSCORE_KOKKOSCORE
274 static std::vector<std::string> getArgv ();
275#endif // HAVE_TEUCHOSCORE_KOKKOSCORE
277
278private:
279
280 static bool haveMPIState_;
281 static bool mpiIsFinalized_;
282 static int rank_;
283 static int nProc_;
284#ifdef HAVE_TEUCHOSCORE_KOKKOSCORE
292 static std::vector<std::string> argvCopy_;
293#endif // HAVE_TEUCHOSCORE_KOKKOSCORE
294
295 static void initialize( std::ostream *out );
296
297 static void justInTimeInitialize();
298
299};
300
301} // namespace Teuchos
302
303#endif // TEUCHOS_GLOBAL_MPI_SESSION_HPP
Initialize, finalize, and query the global MPI session.
Smart reference counting pointer class for automatic garbage collection.
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...