Tpetra parallel linear algebra  Version of the Day
List of all members
Tpetra::MpiPlatform< ::Tpetra::Details::DefaultTypes::node_type > Class Reference

MpiPlatform specialization for the default Node type. More...

#include <Tpetra_MpiPlatform.hpp>

Inherits Describable.

Public Types

Typedefs
typedef ::Tpetra::Details::DefaultTypes::node_type NodeType
 Kokkos Node type; the template parameter of this class. More...
 

Public Member Functions

Constructors and destructor
 MpiPlatform ()
 Default constructor: uses Kokkos default node and MPI_COMM_WORLD. More...
 
 MpiPlatform (int *argc, char ***argv)
 Constructor that accepts the same arguments as MPI_Init(). More...
 
 MpiPlatform (const Teuchos::RCP< NodeType > &node)
 Constructor that accepts a Kokkos Node. More...
 
 MpiPlatform (int *argc, char ***argv, const Teuchos::RCP< NodeType > &node)
 Constructor that accepts the same arguments as MPI_Init(), plus a Kokkos Node. More...
 
 MpiPlatform (const Teuchos::RCP< NodeType > &node, const Teuchos::RCP< const Teuchos::OpaqueWrapper< MPI_Comm > > &rawMpiComm)
 Constructor that accepts a Kokkos Node and a wrapped MPI communicator. More...
 
 MpiPlatform (int *argc, char ***argv, const Teuchos::RCP< NodeType > &node, const Teuchos::RCP< const Teuchos::OpaqueWrapper< MPI_Comm > > &rawMpiComm)
 Constructor that accepts the same arguments as MPI_Init(), plus a Kokkos Node and a wrapped MPI communicator. More...
 
 MpiPlatform (const Teuchos::RCP< NodeType > &node, MPI_Comm rawMpiComm)
 Constructor that accepts a Kokkos Node and a raw MPI communicator. More...
 
 MpiPlatform (int *argc, char ***argv, const Teuchos::RCP< NodeType > &node, MPI_Comm rawMpiComm)
 Constructor that accepts the same arguments as MPI_Init(), plus a Kokkos Node and a raw MPI communicator. More...
 
virtual ~MpiPlatform ()
 Destructor (virtual for memory safety of derived classes). More...
 

Methods to access the communicator and Kokkos Node.

Teuchos::RCP< const Teuchos::Comm< int > > comm_
 Teuchos::Comm object instantiated for the platform. More...
 
Teuchos::RCP< const Teuchos::Comm< int > > getComm () const
 The Teuchos::Comm instance with which this object was created. More...
 
Teuchos::RCP< NodeTypegetNode () const
 The default Kokkos Node instance. More...
 

Detailed Description

MpiPlatform specialization for the default Node type.

Warning
This class is DEPRECATED and will be REMOVED SOON. Do not use *Platform classes any more. To initialize Tpetra, include Tpetra_Core.hpp and use Tpetra::ScopeGuard, or Tpetra::initialize and Tpetra::finalize. To get Tpetra's default Comm instance, include Tpetra_Core.hpp and call Tpetra::getDefaultComm(). For the default Node type, use Tpetra::Map<>::node_type. Do not create Node instances yourself. It is OK for Node instances to be null.

Definition at line 300 of file Tpetra_MpiPlatform.hpp.

Member Typedef Documentation

◆ NodeType

Kokkos Node type; the template parameter of this class.

Definition at line 307 of file Tpetra_MpiPlatform.hpp.

Constructor & Destructor Documentation

◆ MpiPlatform() [1/8]

Default constructor: uses Kokkos default node and MPI_COMM_WORLD.

◆ MpiPlatform() [2/8]

Constructor that accepts the same arguments as MPI_Init().

Parameters
argc[in/out] First argument of MPI_Init().
argv[in/out] Second argument of MPI_Init().

◆ MpiPlatform() [3/8]

Tpetra::MpiPlatform< ::Tpetra::Details::DefaultTypes::node_type >::MpiPlatform ( const Teuchos::RCP< NodeType > &  node)
explicit

Constructor that accepts a Kokkos Node.

This version of the constructor uses MPI_COMM_WORLD as the communicator. It is declared "explicit" to forbid silent type conversions from the Node instance to an MpiPlatform. (A single-argument constructor that is not declared "explicit" defines a type conversion method from the input type to the constructor's class's type.) The "explicit" declaration does not affect typical use of this constructor.

Parameters
node[in/out] The Kokkos Node instance.

Node will be deprecated and removed in favor of Kokkos::Device, so the Node can and should always be Teuchos::null.

◆ MpiPlatform() [4/8]

Tpetra::MpiPlatform< ::Tpetra::Details::DefaultTypes::node_type >::MpiPlatform ( int *  argc,
char ***  argv,
const Teuchos::RCP< NodeType > &  node 
)

Constructor that accepts the same arguments as MPI_Init(), plus a Kokkos Node.

This version of the constructor uses MPI_COMM_WORLD as the default communicator.

Parameters
argc[in/out] First argument of MPI_Init().
argv[in/out] Second argument of MPI_Init().
node[in/out] The Kokkos Node instance.

Node will be deprecated and removed in favor of Kokkos::Device, so the Node can and should always be Teuchos::null.

◆ MpiPlatform() [5/8]

Tpetra::MpiPlatform< ::Tpetra::Details::DefaultTypes::node_type >::MpiPlatform ( const Teuchos::RCP< NodeType > &  node,
const Teuchos::RCP< const Teuchos::OpaqueWrapper< MPI_Comm > > &  rawMpiComm 
)

Constructor that accepts a Kokkos Node and a wrapped MPI communicator.

This version of the constructor accepts an arbitrary MPI communicator. It requires that you first wrap the MPI communicator in a Teuchos::OpaqueWrapper. This is helpful if you want to "free" the communicator automatically after use.

If you just have a raw MPI_Comm and you want to be responsible for freeing it after use, use the constructor version that takes a raw MPI_Comm. Otherwise, see the documentation of Teuchos::OpaqueWrapper to learn how to wrap an MPI_Comm and how to set the wrapper to free the communicator automatically after use.

Parameters
node[in/out] The Kokkos Node instance.
rawMpiComm[in] The MPI communicator, wrapped in a Teuchos::OpaqueWrapper.

Node will be deprecated and removed in favor of Kokkos::Device, so the Node can and should always be Teuchos::null.

◆ MpiPlatform() [6/8]

Tpetra::MpiPlatform< ::Tpetra::Details::DefaultTypes::node_type >::MpiPlatform ( int *  argc,
char ***  argv,
const Teuchos::RCP< NodeType > &  node,
const Teuchos::RCP< const Teuchos::OpaqueWrapper< MPI_Comm > > &  rawMpiComm 
)

Constructor that accepts the same arguments as MPI_Init(), plus a Kokkos Node and a wrapped MPI communicator.

This version of the constructor accepts an arbitrary MPI communicator. It requires that you first wrap the MPI communicator in a Teuchos::OpaqueWrapper. This is helpful if you want to "free" the communicator automatically after use.

If you just have a raw MPI_Comm and you want to be responsible for freeing it after use, use the constructor version that takes a raw MPI_Comm. Otherwise, see the documentation of Teuchos::OpaqueWrapper to learn how to wrap an MPI_Comm and how to set the wrapper to free the communicator automatically after use.

Parameters
argc[in/out] First argument of MPI_Init().
argv[in/out] Second argument of MPI_Init().
node[in/out] The Kokkos Node instance.
rawMpiComm[in] The MPI communicator, wrapped in a Teuchos::OpaqueWrapper.

Node will be deprecated and removed in favor of Kokkos::Device, so the Node can and should always be Teuchos::null.

◆ MpiPlatform() [7/8]

Tpetra::MpiPlatform< ::Tpetra::Details::DefaultTypes::node_type >::MpiPlatform ( const Teuchos::RCP< NodeType > &  node,
MPI_Comm  rawMpiComm 
)

Constructor that accepts a Kokkos Node and a raw MPI communicator.

This version of constructor accepts an arbitrary "raw" (not wrapped) MPI communicator. You are responsible for freeing the MPI communicator after use, if necessary.

Parameters
node[in/out] The Kokkos Node instance.
rawMpiComm[in] The "raw" (not wrapped) MPI communicator.

Node will be deprecated and removed in favor of Kokkos::Device, so the Node can and should always be Teuchos::null.

◆ MpiPlatform() [8/8]

Tpetra::MpiPlatform< ::Tpetra::Details::DefaultTypes::node_type >::MpiPlatform ( int *  argc,
char ***  argv,
const Teuchos::RCP< NodeType > &  node,
MPI_Comm  rawMpiComm 
)

Constructor that accepts the same arguments as MPI_Init(), plus a Kokkos Node and a raw MPI communicator.

This version of the constructor accepts an arbitrary "raw" (not wrapped) MPI communicator. You are responsible for freeing the MPI communicator after use, if necessary.

Parameters
argc[in/out] First argument of MPI_Init().
argv[in/out] Second argument of MPI_Init().
node[in/out] The Kokkos Node instance.
rawMpiComm[in] The "raw" (not wrapped) MPI communicator.

Node will be deprecated and removed in favor of Kokkos::Device, so the Node can and should always be Teuchos::null.

◆ ~MpiPlatform()

Destructor (virtual for memory safety of derived classes).

Member Function Documentation

◆ getComm()

Teuchos::RCP<const Teuchos::Comm<int> > Tpetra::MpiPlatform< ::Tpetra::Details::DefaultTypes::node_type >::getComm ( ) const

The Teuchos::Comm instance with which this object was created.

◆ getNode()

The default Kokkos Node instance.

Node will be deprecated and removed in favor of Kokkos::Device, so the Node can and should always be Teuchos::null.

Member Data Documentation

◆ comm_

Teuchos::RCP<const Teuchos::Comm<int> > Tpetra::MpiPlatform< ::Tpetra::Details::DefaultTypes::node_type >::comm_
protected

Teuchos::Comm object instantiated for the platform.

Definition at line 474 of file Tpetra_MpiPlatform.hpp.


The documentation for this class was generated from the following file: