Tpetra Matrix/Vector Services Version of the Day
Public Types | Static Public Member Functions
Tpetra::MatrixMarket::Writer< SparseMatrixType > Class Template Reference

Matrix Market file writer for CrsMatrix and MultiVector. More...

#include <MatrixMarket_Tpetra.hpp>

List of all members.

Public Types

typedef
SparseMatrixType::scalar_type 
scalar_type
 Type of the entries of the sparse matrix.
typedef
SparseMatrixType::local_ordinal_type 
local_ordinal_type
 Only used to define map_type.
typedef
SparseMatrixType::global_ordinal_type 
global_ordinal_type
 Type of indices as read from the Matrix Market file.
typedef SparseMatrixType::node_type node_type
 The Kokkos Node type.
typedef MultiVector
< scalar_type,
local_ordinal_type,
global_ordinal_type, node_type
multivector_type
 The MultiVector type associated with SparseMatrixType.
typedef Map
< local_ordinal_type,
global_ordinal_type, node_type
map_type
 Tpetra::Map specialization associated with SparseMatrixType.

Static Public Member Functions

static void writeSparseFile (const std::string &filename, const RCP< const sparse_matrix_type > &pMatrix, const bool debug=false)
 Print the sparse matrix in Matrix Market format.
static void writeSparse (std::ostream &out, const RCP< const sparse_matrix_type > &pMatrix, const bool debug=false)
 Print the sparse matrix in Matrix Market format.
static void writeDenseFile (const std::string &filename, const RCP< const multivector_type > &X)
 Print the multivector in Matrix Market format.
static void writeDense (std::ostream &out, const RCP< const multivector_type > &X)
 Print the multivector in Matrix Market format.

Detailed Description

template<class SparseMatrixType>
class Tpetra::MatrixMarket::Writer< SparseMatrixType >

Matrix Market file writer for CrsMatrix and MultiVector.

Author:
Mark Hoemmen

The Matrix Market (see their web site for details) defines a human-readable ASCII text file format for interchange of sparse and dense matrices. This class defines methods for writing sparse and dense matrices to a Matrix Market file or input stream.

All methods of this class assume that the file is only openable resp. the input stream is only writeable, on the MPI process with Rank 0 (with respect to the MPI communicator over which the given CrsMatrix or MultiVector is to be distributed).

We define the MultiVector type accepted by writeDense() and writeDenseFile() using the scalar_type, local_ordinal_type, global_ordinal_type, and node_type typedefs in SparseMatrixType. This ensures that the multivectors returned by those methods have a type compatible with the CrsMatrix sparse matrices accepted by writeSparse() and writeSparseFile(). We do this because the typical use case of Matrix Market files in Trilinos is to test sparse matrix methods, which usually involves reading a sparse matrix A and perhaps also a dense right-hand side b. Also, this lets you use CrsMatrix objects with non-default LocalMatOps template parameters. (If we templated on Scalar, LocalOrdinal, GlobalOrdinal, and Node, we would also have to template on LocalMatOps in order to deal with CrsMatrix types with nondefault LocalMatOps. That would tie Writer to CrsMatrix anyway, since MultiVector is not templated on LocalMatOps. As a result, we might as well just template on the CrsMatrix type, in order to use arbitrary LocalMatOps types without additional code.)

Template Parameters:
SparseMatrixTypeA specialization of Tpetra::CrsMatrix.

Definition at line 2291 of file MatrixMarket_Tpetra.hpp.


Member Typedef Documentation

template<class SparseMatrixType >
Tpetra::MatrixMarket::Writer< SparseMatrixType >::scalar_type

Type of the entries of the sparse matrix.

Definition at line 2298 of file MatrixMarket_Tpetra.hpp.

template<class SparseMatrixType >
Tpetra::MatrixMarket::Writer< SparseMatrixType >::local_ordinal_type

Only used to define map_type.

Definition at line 2301 of file MatrixMarket_Tpetra.hpp.

template<class SparseMatrixType >
Tpetra::MatrixMarket::Writer< SparseMatrixType >::global_ordinal_type

Type of indices as read from the Matrix Market file.

Indices of the sparse matrix are stored as global ordinals, since Matrix Market files represent the whole matrix and don't have a notion of distribution.

Definition at line 2308 of file MatrixMarket_Tpetra.hpp.

template<class SparseMatrixType >
Tpetra::MatrixMarket::Writer< SparseMatrixType >::node_type

The Kokkos Node type.

Definition at line 2311 of file MatrixMarket_Tpetra.hpp.

template<class SparseMatrixType >
Tpetra::MatrixMarket::Writer< SparseMatrixType >::multivector_type

The MultiVector type associated with SparseMatrixType.

Definition at line 2318 of file MatrixMarket_Tpetra.hpp.

template<class SparseMatrixType >
Tpetra::MatrixMarket::Writer< SparseMatrixType >::map_type

Tpetra::Map specialization associated with SparseMatrixType.

Definition at line 2321 of file MatrixMarket_Tpetra.hpp.


Member Function Documentation

template<class SparseMatrixType >
static void Tpetra::MatrixMarket::Writer< SparseMatrixType >::writeSparseFile ( const std::string &  filename,
const RCP< const sparse_matrix_type > &  pMatrix,
const bool  debug = false 
) [inline, static]

Print the sparse matrix in Matrix Market format.

Write the given Tpetra::CrsMatrix sparse matrix to the given file, using the Matrix Market "coordinate" format. MPI Proc 0 is the only MPI process that opens or writes to the file.

Parameters:
filename[in] Name of the file to which to write the given sparse matrix. The matrix is distributed, but only Proc 0 opens the file and writes to it.
pMatrix[in] The sparse matrix to write to the file.
debug[in] Whether to print possibly copious debugging output to stderr on Proc 0.
Warning:
The current implementation gathers the whole matrix onto MPI Proc 0. This will cause out-of-memory errors if the matrix is too big to fit on one process. This will be fixed in the future.

Definition at line 2344 of file MatrixMarket_Tpetra.hpp.

template<class SparseMatrixType >
static void Tpetra::MatrixMarket::Writer< SparseMatrixType >::writeSparse ( std::ostream &  out,
const RCP< const sparse_matrix_type > &  pMatrix,
const bool  debug = false 
) [inline, static]

Print the sparse matrix in Matrix Market format.

Write the given Tpetra::CrsMatrix sparse matrix to an output stream, using the Matrix Market "coordinate" format. MPI Proc 0 is the only MPI process that writes to the output stream.

Parameters:
out[out] Name of the output stream to which to write the given sparse matrix. The matrix is distributed, but only Proc 0 writes to the output stream.
pMatrix[in] The sparse matrix to write to the given output stream.
debug[in] Whether to print possibly copious debugging output to stderr on Proc 0.
Warning:
The current implementation gathers the whole matrix onto MPI Proc 0. This will cause out-of-memory errors if the matrix is too big to fit on one process. This will be fixed in the future.

Definition at line 2382 of file MatrixMarket_Tpetra.hpp.

template<class SparseMatrixType >
static void Tpetra::MatrixMarket::Writer< SparseMatrixType >::writeDenseFile ( const std::string &  filename,
const RCP< const multivector_type > &  X 
) [inline, static]

Print the multivector in Matrix Market format.

Write the given Tpetra::MultiVector matrix to the given file, using the Matrix Market "array" format for dense matrices. MPI Proc 0 is the only MPI process that opens or writes to the file.

Warning:
The current implementation gathers the whole matrix onto MPI Proc 0. This will cause out-of-memory errors if the matrix is too big to fit on one process. This will be fixed in the future.

Definition at line 2626 of file MatrixMarket_Tpetra.hpp.

template<class SparseMatrixType >
static void Tpetra::MatrixMarket::Writer< SparseMatrixType >::writeDense ( std::ostream &  out,
const RCP< const multivector_type > &  X 
) [inline, static]

Print the multivector in Matrix Market format.

Write the given Tpetra::MultiVector matrix to an output stream, using the Matrix Market "array" format for dense matrices. MPI Proc 0 is the only MPI process that writes to the output stream.

Warning:
The current implementation gathers the whole matrix onto MPI Proc 0. This will cause out-of-memory errors if the matrix is too big to fit on one process. This will be fixed in the future.

Definition at line 2652 of file MatrixMarket_Tpetra.hpp.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines