Tpetra parallel linear algebra  Version of the Day
List of all members
Tpetra::MpiPlatform< ::Tpetra::Details::DefaultTypes::node_type > Class Template 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

template<>
class Tpetra::MpiPlatform< ::Tpetra::Details::DefaultTypes::node_type >

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: