|
ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
|
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>
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< T > | A_tmp_ |
| std::vector< T > | isend_tmp_ |
| T * | U_tmp_ = nullptr |
| T * | B_tmp_ = nullptr |
| T * | A_tmp_device_ = nullptr |
B = alpha * A * U + beta * B A and B are local matrice U can be a local matrix or a global matrix.
| using hsolver::PLinearTransform< T, Device >::delmem_dev_op = base_device::memory::delete_memory_op<T, Device> |
| using hsolver::PLinearTransform< T, Device >::resmem_dev_op = base_device::memory::resize_memory_op<T, Device> |
| using hsolver::PLinearTransform< T, Device >::setmem_dev_op = base_device::memory::set_memory_op<T, Device> |
| using hsolver::PLinearTransform< T, Device >::syncmem_dev_op = base_device::memory::synchronize_memory_op<T, Device, Device> |
| hsolver::PLinearTransform< T, Device >::~PLinearTransform | ( | ) |
| void hsolver::PLinearTransform< T, Device >::act | ( | const T | alpha, |
| const T * | A, | ||
| const T * | U_global, | ||
| const T | beta, | ||
| T * | B | ||
| ) |
| 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
|
private |
|
private |
|
private |
| MPI_Comm hsolver::PLinearTransform< T, Device >::col_world = MPI_COMM_NULL |
| std::vector<int> hsolver::PLinearTransform< T, Device >::colA_loc |
|
private |
| int hsolver::PLinearTransform< T, Device >::LDA = 0 |
| bool hsolver::PLinearTransform< T, Device >::localU = false |
| int hsolver::PLinearTransform< T, Device >::max_colA = 0 |
| int hsolver::PLinearTransform< T, Device >::max_colB = 0 |
| int hsolver::PLinearTransform< T, Device >::ncolA = 0 |
| int hsolver::PLinearTransform< T, Device >::ncolA_glo = 0 |
| int hsolver::PLinearTransform< T, Device >::ncolB = 0 |
| int hsolver::PLinearTransform< T, Device >::nproc_col = 1 |
| int hsolver::PLinearTransform< T, Device >::nrowA = 0 |
| int hsolver::PLinearTransform< T, Device >::rank_col = 0 |
| std::vector<int> hsolver::PLinearTransform< T, Device >::start_colA |
| std::vector<int> hsolver::PLinearTransform< T, Device >::start_colB |
|
private |