Cyclops Tensor Framework
parallel arithmetic on multidimensional arrays
|
Transformation between atomic and molecular orbitals. More...
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) |
Transformation between atomic and molecular orbitals.
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
[in] | U | n-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] | C | n-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().
Tensor<dtype> ao_mo_transf_slice | ( | Tensor< dtype > & | U, |
Matrix< dtype > & | C | ||
) |
AO-MO orbital transformation applied to a slice.
[in] | U | n-by-n-by-n-by-k AO tensor which is partially antisymmetric {AS, NS, NS, NS}: U^{ij}_{kl}=-U^{ji}_{kl} |
[in] | C | n-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().
void bench_ao_mo_transf | ( | int | n, |
int | m, | ||
int | k | ||
) |
Definition at line 175 of file ao_mo_transf.cxx.
References ao_mo_transf_naive(), ao_mo_transf_slice(), AS, ctf.core::dtype, CTF::Tensor< dtype >::fill_random(), NS, and CTF::World::rank.
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 |
||
) |
Definition at line 122 of file ao_mo_transf.cxx.
References ctf.core::a, ao_mo_transf_naive(), AS, CTF::Tensor< dtype >::fill_random(), CTF::Tensor< dtype >::norm2(), NS, and CTF::World::rank.
Referenced by main().