ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | Private Attributes | List of all members
hsolver::PLinearTransform< T, Device > Class Template Reference

B = alpha * A * U + beta * B A and B are local matrice U can be a local matrix or a global matrix. More...

#include <para_linear_transform.h>

Collaboration diagram for hsolver::PLinearTransform< T, Device >:

Public Types

using syncmem_dev_op = base_device::memory::synchronize_memory_op< T, Device, Device >
 
using resmem_dev_op = base_device::memory::resize_memory_op< T, Device >
 
using setmem_dev_op = base_device::memory::set_memory_op< T, Device >
 
using delmem_dev_op = base_device::memory::delete_memory_op< T, Device >
 

Public Member Functions

 ~PLinearTransform ()
 
void set_dimension (const int nrowA, const int ncolA, const int ncolB, const int LDA, MPI_Comm col_world, const bool localU)
 set the dimension of A, B, and U A: LDA * nrow, U_global: ncolA_global * ncolB_global, U_local: ncolA_global * ncolB B: LDA * ncolB
 
void act (const T alpha, const T *A, const T *U_global, const T beta, T *B)
 

Public Attributes

int nproc_col = 1
 
int rank_col = 0
 
int nrowA = 0
 
int ncolA = 0
 
int ncolB = 0
 
int LDA = 0
 
bool localU = false
 
MPI_Comm col_world = MPI_COMM_NULL
 
std::vector< int > colA_loc
 
std::vector< int > start_colA
 
std::vector< int > start_colB
 
int max_colA = 0
 
int ncolA_glo = 0
 
int max_colB = 0
 

Private Attributes

std::vector< TA_tmp_
 
std::vector< Tisend_tmp_
 
TU_tmp_ = nullptr
 
TB_tmp_ = nullptr
 
TA_tmp_device_ = nullptr
 

Detailed Description

template<typename T, typename Device>
class hsolver::PLinearTransform< T, Device >

B = alpha * A * U + beta * B A and B are local matrice U can be a local matrix or a global matrix.

Member Typedef Documentation

◆ delmem_dev_op

template<typename T , typename Device >
using hsolver::PLinearTransform< T, Device >::delmem_dev_op = base_device::memory::delete_memory_op<T, Device>

◆ resmem_dev_op

template<typename T , typename Device >
using hsolver::PLinearTransform< T, Device >::resmem_dev_op = base_device::memory::resize_memory_op<T, Device>

◆ setmem_dev_op

template<typename T , typename Device >
using hsolver::PLinearTransform< T, Device >::setmem_dev_op = base_device::memory::set_memory_op<T, Device>

◆ syncmem_dev_op

template<typename T , typename Device >
using hsolver::PLinearTransform< T, Device >::syncmem_dev_op = base_device::memory::synchronize_memory_op<T, Device, Device>

Constructor & Destructor Documentation

◆ ~PLinearTransform()

template<typename T , typename Device >
hsolver::PLinearTransform< T, Device >::~PLinearTransform ( )

Member Function Documentation

◆ act()

template<typename T , typename Device >
void hsolver::PLinearTransform< T, Device >::act ( const T  alpha,
const T A,
const T U_global,
const T  beta,
T B 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_dimension()

template<typename T , typename Device >
void hsolver::PLinearTransform< T, Device >::set_dimension ( const int  nrowA,
const int  ncolA,
const int  ncolB,
const int  LDA,
MPI_Comm  col_world,
const bool  localU 
)

set the dimension of A, B, and U A: LDA * nrow, U_global: ncolA_global * ncolB_global, U_local: ncolA_global * ncolB B: LDA * ncolB

Here is the caller graph for this function:

Member Data Documentation

◆ A_tmp_

template<typename T , typename Device >
std::vector<T> hsolver::PLinearTransform< T, Device >::A_tmp_
private

◆ A_tmp_device_

template<typename T , typename Device >
T* hsolver::PLinearTransform< T, Device >::A_tmp_device_ = nullptr
private

◆ B_tmp_

template<typename T , typename Device >
T* hsolver::PLinearTransform< T, Device >::B_tmp_ = nullptr
private

◆ col_world

template<typename T , typename Device >
MPI_Comm hsolver::PLinearTransform< T, Device >::col_world = MPI_COMM_NULL

◆ colA_loc

template<typename T , typename Device >
std::vector<int> hsolver::PLinearTransform< T, Device >::colA_loc

◆ isend_tmp_

template<typename T , typename Device >
std::vector<T> hsolver::PLinearTransform< T, Device >::isend_tmp_
private

◆ LDA

template<typename T , typename Device >
int hsolver::PLinearTransform< T, Device >::LDA = 0

◆ localU

template<typename T , typename Device >
bool hsolver::PLinearTransform< T, Device >::localU = false

◆ max_colA

template<typename T , typename Device >
int hsolver::PLinearTransform< T, Device >::max_colA = 0

◆ max_colB

template<typename T , typename Device >
int hsolver::PLinearTransform< T, Device >::max_colB = 0

◆ ncolA

template<typename T , typename Device >
int hsolver::PLinearTransform< T, Device >::ncolA = 0

◆ ncolA_glo

template<typename T , typename Device >
int hsolver::PLinearTransform< T, Device >::ncolA_glo = 0

◆ ncolB

template<typename T , typename Device >
int hsolver::PLinearTransform< T, Device >::ncolB = 0

◆ nproc_col

template<typename T , typename Device >
int hsolver::PLinearTransform< T, Device >::nproc_col = 1

◆ nrowA

template<typename T , typename Device >
int hsolver::PLinearTransform< T, Device >::nrowA = 0

◆ rank_col

template<typename T , typename Device >
int hsolver::PLinearTransform< T, Device >::rank_col = 0

◆ start_colA

template<typename T , typename Device >
std::vector<int> hsolver::PLinearTransform< T, Device >::start_colA

◆ start_colB

template<typename T , typename Device >
std::vector<int> hsolver::PLinearTransform< T, Device >::start_colB

◆ U_tmp_

template<typename T , typename Device >
T* hsolver::PLinearTransform< T, Device >::U_tmp_ = nullptr
private

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