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> 135 const Teuchos::RCP<NodeType>& node) :
170 const Teuchos::RCP<
const Teuchos::OpaqueWrapper<MPI_Comm> >& rawMpiComm)
174 TEUCHOS_TEST_FOR_EXCEPTION(
175 rawMpiComm.is_null (), std::invalid_argument,
"Tpetra::MpiPlatform " 176 "constructor: The input RCP<OpaqueWrapper<MPI_Comm> > is null. That " 177 "means something different than MPI_COMM_NULL. If you want to give " 178 "MPI_COMM_NULL to this constructor, please wrap MPI_COMM_NULL in a " 179 "nonnull Teuchos::OpaqueWrapper by using the " 180 "Teuchos::opaqueWrapper<MPI_Comm>() nonmember constructor.");
181 comm_ = Teuchos::createMpiComm<int> (rawMpiComm);
215 const Teuchos::RCP<NodeType>& node,
216 const Teuchos::RCP<
const Teuchos::OpaqueWrapper<MPI_Comm> >& rawMpiComm)
220 TEUCHOS_TEST_FOR_EXCEPTION(
221 rawMpiComm.is_null (), std::invalid_argument,
"Tpetra::MpiPlatform " 222 "constructor: The input RCP<OpaqueWrapper<MPI_Comm> > is null. That " 223 "means something different than MPI_COMM_NULL. If you want to give " 224 "MPI_COMM_NULL to this constructor, please wrap MPI_COMM_NULL in a " 225 "nonnull Teuchos::OpaqueWrapper by using the " 226 "Teuchos::opaqueWrapper<MPI_Comm>() nonmember constructor.");
227 comm_ = Teuchos::createMpiComm<int> (rawMpiComm);
259 MpiPlatform (
const Teuchos::RCP<NodeType>& node, MPI_Comm rawMpiComm)
286 const Teuchos::RCP<NodeType>& node,
309 Teuchos::RCP<const Teuchos::Comm<int> >
getComm ()
const {
310 TEUCHOS_TEST_FOR_EXCEPTION(
311 comm_.is_null (), std::logic_error,
"Tpetra::MpiPlatform::getComm: " 312 "The default communicator is null. This should never happen. " 313 "Please report this bug to the Tpetra developers.");
326 if (
node_.is_null ()) {
339 const_cast<this_type*
> (
this)->
node_ =
340 KokkosClassic::Details::getNode<NodeType> ();
341 TEUCHOS_TEST_FOR_EXCEPTION(
342 node_.is_null (), std::logic_error,
"Tpetra::MpiPlatform::getNode: " 343 "KokkosClassic::Details::getNode<NodeType>() returned null. " 344 "This should never happen. " 345 "Please report this bug to the Tpetra developers.");
353 Teuchos::RCP<const Teuchos::Comm<int> >
comm_;
371 public Teuchos::Describable {
377 typedef ::Tpetra::Details::DefaultTypes::node_type
NodeType;
409 explicit MpiPlatform (
const Teuchos::RCP<NodeType>& node);
422 MpiPlatform (
int* argc,
char*** argv,
const Teuchos::RCP<NodeType>& node);
445 const Teuchos::RCP<
const Teuchos::OpaqueWrapper<MPI_Comm> >& rawMpiComm);
472 const Teuchos::RCP<NodeType>& node,
473 const Teuchos::RCP<
const Teuchos::OpaqueWrapper<MPI_Comm> >& rawMpiComm);
487 MpiPlatform (
const Teuchos::RCP<NodeType>& node, MPI_Comm rawMpiComm);
505 const Teuchos::RCP<NodeType>& node,
506 MPI_Comm rawMpiComm);
516 Teuchos::RCP<const Teuchos::Comm<int> >
getComm ()
const;
525 Teuchos::RCP<NodeType>
getNode ()
const;
537 Teuchos::RCP<const Teuchos::Comm<int> >
comm_;
545 #endif // TPETRA_MPIPLATFORM_HPP void initialize(int *argc, char ***argv)
Initialize Tpetra.
Namespace Tpetra contains the class and methods constituting the Tpetra library.
KokkosClassic::DefaultNode::DefaultNodeType node_type
Default value of Node template parameter.
Functions for initializing and finalizing Tpetra.
Teuchos::RCP< const Teuchos::Comm< int > > getDefaultComm()
Get Tpetra's default communicator.