Tpetra parallel linear algebra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Public Attributes | List of all members
Tpetra::Details::EquilibrationInfo< ScalarType, DeviceType > Struct Template Reference

Struct storing results of Tpetra::computeRowAndColumnOneNorms. More...

#include <Tpetra_Details_EquilibrationInfo.hpp>

Inheritance diagram for Tpetra::Details::EquilibrationInfo< ScalarType, DeviceType >:
Inheritance graph
[legend]

Public Member Functions

template<class SrcDeviceType >
void assign (const EquilibrationInfo< ScalarType, SrcDeviceType > &src)
 Deep-copy src into *this. More...
 

Public Attributes

Kokkos::View< mag_type
*, device_type > 
rowNorms
 One-norms of the matrix's rows, distributed via the row Map. More...
 
Kokkos::View< val_type
*, device_type > 
rowDiagonalEntries
 Diagonal entries of the matrix, distributed via the row Map. More...
 
Kokkos::View< mag_type
*, device_type > 
colNorms
 One-norms of the matrix's columns, distributed via the column Map. More...
 
Kokkos::View< val_type
*, device_type > 
colDiagonalEntries
 Diagonal entries of the matrix, distributed via the column Map. More...
 
Kokkos::View< mag_type
*, device_type > 
rowScaledColNorms
 One-norms of the matrix's columns, after the matrix's rows have been scaled by rowNorms. More...
 
bool assumeSymmetric
 Whether to assume that the matrix is (globally) symmetric. More...
 
bool foundInf
 Found an Inf somewhere in the matrix. More...
 
bool foundNan
 Found a NaN somewhere in the matrix. More...
 
bool foundZeroDiag
 Found a zero diagonal entry somewhere in the matrix. More...
 
bool foundZeroRowNorm
 At least one row of the matrix has a zero norm. More...
 

Detailed Description

template<class ScalarType, class DeviceType>
struct Tpetra::Details::EquilibrationInfo< ScalarType, DeviceType >

Struct storing results of Tpetra::computeRowAndColumnOneNorms.

Template Parameters
ScalarTypeType of the entries in the Tpetra::RowMatrix / Tpetra::CrsMatrix. This must be the Kokkos-ized version, that is, Kokkos::ArithTraits<ScalarType>::val_type.
DeviceTypeKokkos::Device specialization.

Tpetra users may NOT do anything with this struct other than get it as the return value of Tpetra::computeRowAndColumnOneNorms, and pass it into Tpetra::leftAndOrRightScaleCrsMatrix.

Tpetra developers may use the fields in this struct, to implement equilibration, balancing (in the symmetric / Hermitian positive definite case only), or to analyze the matrix (e.g., whether it is diagonally dominant).

If this is the return value of computeRowAndColumnOneNorms, results are always global. computeLocalRowAndColumnOneNorms only computes local results, where "local" means "to an MPI process." globalizeRowOneNorms and globalizeColumnOneNorms "globalize" the results, so they refer to the entire matrix, globally distributed over an MPI communicator.

Definition at line 79 of file Tpetra_Details_EquilibrationInfo.hpp.

Member Function Documentation

template<class ScalarType, class DeviceType>
template<class SrcDeviceType >
void Tpetra::Details::EquilibrationInfo< ScalarType, DeviceType >::assign ( const EquilibrationInfo< ScalarType, SrcDeviceType > &  src)
inline

Deep-copy src into *this.

Definition at line 139 of file Tpetra_Details_EquilibrationInfo.hpp.

Member Data Documentation

template<class ScalarType, class DeviceType>
Kokkos::View<mag_type*, device_type> Tpetra::Details::EquilibrationInfo< ScalarType, DeviceType >::rowNorms

One-norms of the matrix's rows, distributed via the row Map.

Definition at line 187 of file Tpetra_Details_EquilibrationInfo.hpp.

template<class ScalarType, class DeviceType>
Kokkos::View<val_type*, device_type> Tpetra::Details::EquilibrationInfo< ScalarType, DeviceType >::rowDiagonalEntries

Diagonal entries of the matrix, distributed via the row Map.

Definition at line 190 of file Tpetra_Details_EquilibrationInfo.hpp.

template<class ScalarType, class DeviceType>
Kokkos::View<mag_type*, device_type> Tpetra::Details::EquilibrationInfo< ScalarType, DeviceType >::colNorms

One-norms of the matrix's columns, distributed via the column Map.

If assumeSymmetric is true, this is just a redistributed version of rowNorms.

Definition at line 197 of file Tpetra_Details_EquilibrationInfo.hpp.

template<class ScalarType, class DeviceType>
Kokkos::View<val_type*, device_type> Tpetra::Details::EquilibrationInfo< ScalarType, DeviceType >::colDiagonalEntries

Diagonal entries of the matrix, distributed via the column Map.

Only use this if assumeSymmetric is false.

Definition at line 202 of file Tpetra_Details_EquilibrationInfo.hpp.

template<class ScalarType, class DeviceType>
Kokkos::View<mag_type*, device_type> Tpetra::Details::EquilibrationInfo< ScalarType, DeviceType >::rowScaledColNorms

One-norms of the matrix's columns, after the matrix's rows have been scaled by rowNorms.

This is only valid if assumeSymmetric is false.

For the nonsymmetric case, we imitate LAPACK's DGEEQU, in doing the row scaling first, then the column scaling. Thus, the column norms are "scaled" by the row norms (above). We still keep the unscaled column norms (colNorms; see above) in that case, because they are diagnostic.

Definition at line 214 of file Tpetra_Details_EquilibrationInfo.hpp.

template<class ScalarType, class DeviceType>
bool Tpetra::Details::EquilibrationInfo< ScalarType, DeviceType >::assumeSymmetric

Whether to assume that the matrix is (globally) symmetric.

This affects whether colDiagonalEntries and rowScaledColNorms are valid.

Definition at line 220 of file Tpetra_Details_EquilibrationInfo.hpp.

template<class ScalarType, class DeviceType>
bool Tpetra::Details::EquilibrationInfo< ScalarType, DeviceType >::foundInf

Found an Inf somewhere in the matrix.

Definition at line 223 of file Tpetra_Details_EquilibrationInfo.hpp.

template<class ScalarType, class DeviceType>
bool Tpetra::Details::EquilibrationInfo< ScalarType, DeviceType >::foundNan

Found a NaN somewhere in the matrix.

Definition at line 226 of file Tpetra_Details_EquilibrationInfo.hpp.

template<class ScalarType, class DeviceType>
bool Tpetra::Details::EquilibrationInfo< ScalarType, DeviceType >::foundZeroDiag

Found a zero diagonal entry somewhere in the matrix.

Definition at line 229 of file Tpetra_Details_EquilibrationInfo.hpp.

template<class ScalarType, class DeviceType>
bool Tpetra::Details::EquilibrationInfo< ScalarType, DeviceType >::foundZeroRowNorm

At least one row of the matrix has a zero norm.

Definition at line 232 of file Tpetra_Details_EquilibrationInfo.hpp.


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