Tpetra parallel linear algebra Version of the Day
Loading...
Searching...
No Matches
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.
 

Public Attributes

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

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

◆ assign()

Deep-copy src into *this.

Definition at line 139 of file Tpetra_Details_EquilibrationInfo.hpp.

Member Data Documentation

◆ rowNorms

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.

◆ rowDiagonalEntries

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.

◆ colNorms

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.

◆ colDiagonalEntries

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.

◆ rowScaledColNorms

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.

◆ 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.

◆ foundInf

Found an Inf somewhere in the matrix.

Definition at line 223 of file Tpetra_Details_EquilibrationInfo.hpp.

◆ foundNan

Found a NaN somewhere in the matrix.

Definition at line 226 of file Tpetra_Details_EquilibrationInfo.hpp.

◆ foundZeroDiag

Found a zero diagonal entry somewhere in the matrix.

Definition at line 229 of file Tpetra_Details_EquilibrationInfo.hpp.

◆ 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: