SpatialOps
SpatialOps::EigenDecomposition< FieldT > Class Template Reference

Operator to perform eigen decomposition. More...

#include <MatVecOps.h>

Public Types

typedef FieldMatrix< FieldT > RhsT
 right hand side is a matrix
 
typedef FieldVector< FieldT > ResultT
 real value result is a vector
 
typedef FieldVector< FieldT > ResultT2
 complex value result is a vector
 

Static Public Member Functions

static void cpu_launch (ResultT *const result, const RhsT &mat)
 receive pointers to the operand and result and call operate More...
 
static void cpu_launch (ResultT1 *const result1, ResultT2 *const result2, const RhsT &mat)
 complex value overload of cpu_launch More...
 
static void gpu_launch (ResultT *const result, const RhsT &mat)
 receive pointers to the operand and result and call operate More...
 
static void gpu_launch (ResultT1 *const result1, ResultT2 *const result2, const RhsT &mat)
 complex value overload of gpu_launch More...
 

Detailed Description

template<typename FieldT>
class SpatialOps::EigenDecomposition< FieldT >

Operator to perform eigen decomposition.

This class calculates the eigenvalues and eigenvectors of a matrix. The operations are performed by the Eigen library. This method can take REAL inputs only and returns the REAL and COMPLEX value of the eigen values depending on how it is called. Eigen also provides eigen vectors, but this functionality is not yet included.

Definition at line 809 of file MatVecOps.h.

Member Function Documentation

◆ cpu_launch() [1/2]

template<typename FieldT >
void SpatialOps::EigenDecomposition< FieldT >::cpu_launch ( ResultT *const  result,
const RhsT mat 
)
static

receive pointers to the operand and result and call operate

Parameters
resultResultT* const vector to assign real eigenvalues
matconst RhsT& the matrix we are operating on
Returns
void

This function is called by a MatUnaryOp object or BinaryRetMatUnaryOp object to pass along pointers for the left hand side and right hand side. If multi-threading is on, we divide the work evenly (as possible) across threads and each thread calls ::operate, where the calculation takes place.

Definition at line 1308 of file MatVecOps.h.

◆ cpu_launch() [2/2]

template<typename FieldT >
void SpatialOps::EigenDecomposition< FieldT >::cpu_launch ( ResultT1 *const  result1,
ResultT2 *const  result2,
const RhsT mat 
)
static

complex value overload of cpu_launch

Parameters
result1ResultT1* const vector to assign real eigenvalues
result1ResultT1* const vector to assign complex eigenvalues
matconst RhsT& the matrix we are operating on
Returns
void

Definition at line 1315 of file MatVecOps.h.

References SpatialOps::ThreadPoolFIFO::self(), and SpatialOps::Semaphore::wait().

Here is the call graph for this function:

◆ gpu_launch() [1/2]

template<typename FieldT >
void SpatialOps::EigenDecomposition< FieldT >::gpu_launch ( ResultT *const  result,
const RhsT mat 
)
static

receive pointers to the operand and result and call operate

Parameters
resultResultT* const vector to assign real eigenvalues
matconst RhsT& the matrix we are operating on
Returns
void

This function is called by a MatUnaryOp object or BinaryRetMatUnaryOp object to pass along pointers for the left hand side and right hand side. This function calls the GPU backend to compute the eigen decomposition.

Definition at line 1292 of file MatVecOps.h.

◆ gpu_launch() [2/2]

template<typename FieldT >
void SpatialOps::EigenDecomposition< FieldT >::gpu_launch ( ResultT1 *const  result1,
ResultT2 *const  result2,
const RhsT mat 
)
static

complex value overload of gpu_launch

Parameters
result1ResultT1* const vector to assign real eigenvalues
result1ResultT1* const vector to assign complex eigenvalues
matconst RhsT& the matrix we are operating on
Returns
void

Definition at line 1299 of file MatVecOps.h.


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