42 #ifndef TPETRA_MPIPLATFORM_HPP
43 #define TPETRA_MPIPLATFORM_HPP
45 #include <Tpetra_ConfigDefs.hpp>
47 #include <Kokkos_DefaultNode.hpp>
48 #include <Teuchos_DefaultMpiComm.hpp>
49 #include <Teuchos_Describable.hpp>
67 class TPETRA_DEPRECATED
MpiPlatform :
public Teuchos::Describable {
92 comm_ (new Teuchos::MpiComm<int> (MPI_COMM_WORLD))
110 const Teuchos::RCP<NodeType>& ) :
111 comm_ (Teuchos::null)
140 const Teuchos::RCP<
const Teuchos::OpaqueWrapper<MPI_Comm> >& rawMpiComm)
141 : comm_ (Teuchos::null)
143 TEUCHOS_TEST_FOR_EXCEPTION(
144 rawMpiComm.is_null (), std::invalid_argument,
"Tpetra::MpiPlatform "
145 "constructor: The input RCP<OpaqueWrapper<MPI_Comm> > is null. That "
146 "means something different than MPI_COMM_NULL. If you want to give "
147 "MPI_COMM_NULL to this constructor, please wrap MPI_COMM_NULL in a "
148 "nonnull Teuchos::OpaqueWrapper by using the "
149 "Teuchos::opaqueWrapper<MPI_Comm>() nonmember constructor.");
150 comm_ = Teuchos::createMpiComm<int> (rawMpiComm);
180 const Teuchos::RCP<NodeType>& ,
181 const Teuchos::RCP<
const Teuchos::OpaqueWrapper<MPI_Comm> >& rawMpiComm)
182 : comm_ (Teuchos::null)
184 TEUCHOS_TEST_FOR_EXCEPTION(
185 rawMpiComm.is_null (), std::invalid_argument,
"Tpetra::MpiPlatform "
186 "constructor: The input RCP<OpaqueWrapper<MPI_Comm> > is null. That "
187 "means something different than MPI_COMM_NULL. If you want to give "
188 "MPI_COMM_NULL to this constructor, please wrap MPI_COMM_NULL in a "
189 "nonnull Teuchos::OpaqueWrapper by using the "
190 "Teuchos::opaqueWrapper<MPI_Comm>() nonmember constructor.");
191 comm_ = Teuchos::createMpiComm<int> (rawMpiComm);
219 MpiPlatform (
const Teuchos::RCP<NodeType>& node, MPI_Comm rawMpiComm)
220 : comm_ (new Teuchos::MpiComm<int> (rawMpiComm))
241 const Teuchos::RCP<NodeType>& ,
243 : comm_ (Teuchos::null)
257 Teuchos::RCP<const Teuchos::Comm<int> >
getComm ()
const {
258 TEUCHOS_TEST_FOR_EXCEPTION(
259 comm_.is_null (), std::logic_error,
"Tpetra::MpiPlatform::getComm: "
260 "The default communicator is null. This should never happen. "
261 "Please report this bug to the Tpetra developers.");
277 Teuchos::RCP<const Teuchos::Comm<int> >
comm_;
301 public Teuchos::Describable {
307 typedef ::Tpetra::Details::DefaultTypes::node_type
NodeType;
338 explicit MpiPlatform (
const Teuchos::RCP<NodeType>& node);
353 MpiPlatform (
int* argc,
char*** argv,
const Teuchos::RCP<NodeType>& node);
378 const Teuchos::RCP<
const Teuchos::OpaqueWrapper<MPI_Comm> >& rawMpiComm);
407 const Teuchos::RCP<NodeType>& node,
408 const Teuchos::RCP<
const Teuchos::OpaqueWrapper<MPI_Comm> >& rawMpiComm);
424 MpiPlatform (
const Teuchos::RCP<NodeType>& node, MPI_Comm rawMpiComm);
444 const Teuchos::RCP<NodeType>& node,
445 MPI_Comm rawMpiComm);
455 Teuchos::RCP<const Teuchos::Comm<int> > getComm ()
const;
462 Teuchos::RCP<NodeType> getNode ()
const;
474 Teuchos::RCP<const Teuchos::Comm<int> >
comm_;
479 #endif // TPETRA_MPIPLATFORM_HPP
void initialize(int *argc, char ***argv)
Initialize Tpetra.
Functions for initializing and finalizing Tpetra.
::Kokkos::Compat::KokkosDeviceWrapperNode< execution_space > node_type
Default value of Node template parameter.
Teuchos::RCP< const Teuchos::Comm< int > > getDefaultComm()
Get Tpetra's default communicator.