Cyclops Tensor Framework
parallel arithmetic on multidimensional arrays
Ao_mo_transf

Transformation between atomic and molecular orbitals. More...

Collaboration diagram for Ao_mo_transf:

Functions

template<typename dtype >
Tensor< dtype > ao_mo_transf_naive (Tensor< dtype > &U, Matrix< dtype > &C)
 naive implementation of AO-MO orbital transformation LIMITATIONS: (1) does not exploit output (syrk-like) symmetry in 3rd and 4th products. that may increase flop cost by 1.5X (2) multiple buffers and no auxiliary blocking to minimize memory usage More...
 
template<typename dtype >
Tensor< dtype > ao_mo_transf_slice (Tensor< dtype > &U, Matrix< dtype > &C)
 AO-MO orbital transformation applied to a slice. More...
 
void test_ao_mo_transf (int n, int m, int k, MPI_Comm cm=MPI_COMM_WORLD, bool flt_test=true, bool ns_test=true)
 
template<typename dtype >
void bench_ao_mo_transf (int n, int m, int k)
 
char * getCmdOption (char **begin, char **end, const std::string &option)
 
int main (int argc, char **argv)
 

Detailed Description

Transformation between atomic and molecular orbitals.

Function Documentation

template<typename dtype >
Tensor<dtype> ao_mo_transf_naive ( Tensor< dtype > &  U,
Matrix< dtype > &  C 
)

naive implementation of AO-MO orbital transformation LIMITATIONS: (1) does not exploit output (syrk-like) symmetry in 3rd and 4th products. that may increase flop cost by 1.5X (2) multiple buffers and no auxiliary blocking to minimize memory usage

Parameters
[in]Un-by-n-by-n-by-n AO tensor which is partially antisymmetric {AS, NS, AS, NS}: U^{ij}_{kl}=-U^{ji}_{kl}=U^{ji}_{lk}=-U^{ij}_{lk}
[in]Cn-by-m matrix for the AO->MO index transform

Definition at line 21 of file ao_mo_transf.cxx.

References AS, CTF_int::tensor::free_self(), CTF::Matrix< dtype >::ncol, CTF::Matrix< dtype >::nrow, NS, and CTF_int::tensor::wrld.

Referenced by bench_ao_mo_transf(), and test_ao_mo_transf().

template<typename dtype >
Tensor<dtype> ao_mo_transf_slice ( Tensor< dtype > &  U,
Matrix< dtype > &  C 
)

AO-MO orbital transformation applied to a slice.

Parameters
[in]Un-by-n-by-n-by-k AO tensor which is partially antisymmetric {AS, NS, NS, NS}: U^{ij}_{kl}=-U^{ji}_{kl}
[in]Cn-by-m matrix for the AO->MO index transform

Definition at line 70 of file ao_mo_transf.cxx.

References AS, CTF_int::tensor::free_self(), CTF_int::tensor::lens, CTF::Matrix< dtype >::ncol, CTF::Matrix< dtype >::nrow, NS, and CTF_int::tensor::wrld.

Referenced by bench_ao_mo_transf().

template<typename dtype >
void bench_ao_mo_transf ( int  n,
int  m,
int  k 
)
char* getCmdOption ( char **  begin,
char **  end,
const std::string &  option 
)

Definition at line 207 of file ao_mo_transf.cxx.

Referenced by main().

int main ( int  argc,
char **  argv 
)

Definition at line 217 of file ao_mo_transf.cxx.

References getCmdOption(), and test_ao_mo_transf().

void test_ao_mo_transf ( int  n,
int  m,
int  k,
MPI_Comm  cm = MPI_COMM_WORLD,
bool  flt_test = true,
bool  ns_test = true 
)