#include <ParallelMatrixOperations.hpp>
|
| ~ParallelMatrixOperations () |
|
void | initialize (const bool needCyclicComm) |
| Initializes the acceleration.
|
|
template<typename Derived1 , typename Derived2 > |
void | multiply (Eigen::PlainObjectBase< Derived1 > &leftMatrix, Eigen::PlainObjectBase< Derived2 > &rightMatrix, Eigen::PlainObjectBase< Derived2 > &result, const std::vector< int > &offsets, int p, int q, int r, bool dotProductComputation=true) |
|
template<typename Derived1 , typename Derived2 , typename Derived3 > |
void | multiply (const Eigen::MatrixBase< Derived1 > &leftMatrix, const Eigen::MatrixBase< Derived2 > &rightMatrix, Eigen::PlainObjectBase< Derived3 > &result, int p, int q, int r) |
| : Method computes the matrix-matrix/matrix-vector product of a (p x q) matrix that is distributed column-wise (e.g. pseudoInverse Z), with a matrix/vector of size (q x r) with r=1/cols, that is distributed row-wise (e.g. _matrixW, _matrixV, residual).
|
|
|
template<typename Derived1 , typename Derived2 > |
void | _multiplyNN (Eigen::PlainObjectBase< Derived1 > &leftMatrix, Eigen::PlainObjectBase< Derived2 > &rightMatrix, Eigen::PlainObjectBase< Derived2 > &result, const std::vector< int > &offsets, int p, int q, int r) |
|
template<typename Derived1 , typename Derived2 > |
void | _multiplyNM_dotProduct (Eigen::PlainObjectBase< Derived1 > &leftMatrix, Eigen::PlainObjectBase< Derived2 > &rightMatrix, Eigen::PlainObjectBase< Derived2 > &result, const std::vector< int > &offsets, int p, int q, int r) |
|
template<typename Derived1 , typename Derived2 > |
void | _multiplyNM_block (Eigen::PlainObjectBase< Derived1 > &leftMatrix, Eigen::PlainObjectBase< Derived2 > &rightMatrix, Eigen::PlainObjectBase< Derived2 > &result, const std::vector< int > &offsets, int p, int q, int r) |
| Multiplies matrices based on a SAXPY-like block-wise computation with a rectangular result matrix of dimension n x m.
|
|
void | establishCircularCommunication () |
|
void | closeCircularCommunication () |
|
◆ ~ParallelMatrixOperations()
precice::acceleration::impl::ParallelMatrixOperations::~ParallelMatrixOperations |
( |
| ) |
|
◆ _multiplyNM_block()
template<typename Derived1 , typename Derived2 >
void precice::acceleration::impl::ParallelMatrixOperations::_multiplyNM_block |
( |
Eigen::PlainObjectBase< Derived1 > & | leftMatrix, |
|
|
Eigen::PlainObjectBase< Derived2 > & | rightMatrix, |
|
|
Eigen::PlainObjectBase< Derived2 > & | result, |
|
|
const std::vector< int > & | offsets, |
|
|
int | p, |
|
|
int | q, |
|
|
int | r ) |
|
inlineprivate |
Multiplies matrices based on a SAXPY-like block-wise computation with a rectangular result matrix of dimension n x m.
- Todo
- : only primary rank should allocate memory.
Definition at line 259 of file ParallelMatrixOperations.hpp.
◆ _multiplyNM_dotProduct()
template<typename Derived1 , typename Derived2 >
void precice::acceleration::impl::ParallelMatrixOperations::_multiplyNM_dotProduct |
( |
Eigen::PlainObjectBase< Derived1 > & | leftMatrix, |
|
|
Eigen::PlainObjectBase< Derived2 > & | rightMatrix, |
|
|
Eigen::PlainObjectBase< Derived2 > & | result, |
|
|
const std::vector< int > & | offsets, |
|
|
int | p, |
|
|
int | q, |
|
|
int | r ) |
|
inlineprivate |
◆ _multiplyNN()
template<typename Derived1 , typename Derived2 >
void precice::acceleration::impl::ParallelMatrixOperations::_multiplyNN |
( |
Eigen::PlainObjectBase< Derived1 > & | leftMatrix, |
|
|
Eigen::PlainObjectBase< Derived2 > & | rightMatrix, |
|
|
Eigen::PlainObjectBase< Derived2 > & | result, |
|
|
const std::vector< int > & | offsets, |
|
|
int | p, |
|
|
int | q, |
|
|
int | r ) |
|
inlineprivate |
◆ closeCircularCommunication()
void precice::acceleration::impl::ParallelMatrixOperations::closeCircularCommunication |
( |
| ) |
|
|
private |
◆ establishCircularCommunication()
void precice::acceleration::impl::ParallelMatrixOperations::establishCircularCommunication |
( |
| ) |
|
|
private |
Establishes the circular connection between ranks
This creates and connects the ranks.
@precondition _cyclicCommLeft and _cyclicCommRight must be nullptr @postcondition _cyclicCommLeft, _cyclicCommRight are connected
Definition at line 30 of file ParallelMatrixOperations.cpp.
◆ initialize()
void precice::acceleration::impl::ParallelMatrixOperations::initialize |
( |
const bool | needCyclicComm | ) |
|
◆ multiply() [1/2]
template<typename Derived1 , typename Derived2 , typename Derived3 >
void precice::acceleration::impl::ParallelMatrixOperations::multiply |
( |
const Eigen::MatrixBase< Derived1 > & | leftMatrix, |
|
|
const Eigen::MatrixBase< Derived2 > & | rightMatrix, |
|
|
Eigen::PlainObjectBase< Derived3 > & | result, |
|
|
int | p, |
|
|
int | q, |
|
|
int | r ) |
|
inline |
: Method computes the matrix-matrix/matrix-vector product of a (p x q) matrix that is distributed column-wise (e.g. pseudoInverse Z), with a matrix/vector of size (q x r) with r=1/cols, that is distributed row-wise (e.g. _matrixW, _matrixV, residual).
In each case mat-mat or mat-vec product, the result is of size (m x m) or (m x 1), where m is the number of cols, i.e., small such that the result is stored on each proc.
- Parameters
-
[in] | p | - first dimension, i.e., overall (global) number of rows |
[in] | q | - inner dimension |
[in] | r | - second dimension, i.e., overall (global) number cols of result matrix |
Definition at line 90 of file ParallelMatrixOperations.hpp.
◆ multiply() [2/2]
template<typename Derived1 , typename Derived2 >
void precice::acceleration::impl::ParallelMatrixOperations::multiply |
( |
Eigen::PlainObjectBase< Derived1 > & | leftMatrix, |
|
|
Eigen::PlainObjectBase< Derived2 > & | rightMatrix, |
|
|
Eigen::PlainObjectBase< Derived2 > & | result, |
|
|
const std::vector< int > & | offsets, |
|
|
int | p, |
|
|
int | q, |
|
|
int | r, |
|
|
bool | dotProductComputation = true ) |
|
inline |
◆ _cyclicCommLeft
◆ _cyclicCommRight
◆ _log
logging::Logger precice::acceleration::impl::ParallelMatrixOperations::_log {"acceleration::ParallelMatrixOperations"} |
|
private |
◆ _needCyclicComm
bool precice::acceleration::impl::ParallelMatrixOperations::_needCyclicComm = true |
|
private |
The documentation for this class was generated from the following files: