MIDAPACK - MIcrowave Data Analysis PACKage
1.1b
Parallel software tools for high performance CMB DA analysis
|
Contains sequential/openMP routines for Toeplitz algebra. More...
Go to the source code of this file.
Functions | |
int | stmm (double **V, int n, int m, double *T, int lambda, Flag flag_stgy) |
int | stbmm (double **V, int nrow, int m_cw, int m_rw, Block *tpltzblocks, int nb_blocks, int64_t idp, int local_V_size, Flag flag_stgy) |
int | gstbmm (double **V, int nrow, int m_cw, int m_rw, Block *tpltzblocks, int nb_blocks, int64_t idp, int local_V_size, int64_t *id0gap, int *lgap, int ngap, Flag flag_stgy) |
int | gstbmm0 (double **V, int nrow, int m, int m_rowwise, Block *tpltzblocks, int nb_blocks_local, int nb_blocks_all, int id0p, int local_V_size, int64_t *id0gap, int *lgap, int ngap, Flag flag_stgy) |
Contains sequential/openMP routines for Toeplitz algebra.
version 1.1b, July 2012
Project: Midapack library, ANR MIDAS'09 - Toeplitz Algebra module Purpose: Provide Toeplitz algebra tools suitable for Cosmic Microwave Background (CMB) data analysis.
Log: toeplitz*.c
Revision 1.0b 2012/05/07 Frederic Dauvergne (APC) Official release 1.0beta. The first installement of the library is the Toeplitz algebra module.
Revision 1.1b 2012/07/- Frederic Dauvergne (APC)
Definition in file toeplitz_seq.c.
int stmm | ( | double ** | V, |
int | n, | ||
int | m, | ||
double * | T, | ||
int | lambda, | ||
Flag | flag_stgy | ||
) |
Perform the product of a Toeplitz matrix by a general matrix using the sliding window algorithm.
This is a simplifed call of the sequential product including initialization and cleaning. This use the flag parameters to set the comutational options.
V | [input] data matrix (with the convention V(i,j)=V[i+j*n]) ; [out] result of the product TV |
n | number of rows of V |
m | number of columns of V |
m | number of columns of V |
T | Toeplitz matrix data composed of the non-zero entries of his first row |
lambda | number of non-zero in the first row of the Toeplitz and size of T |
flag_stgy | flag strategy for the product computation |
Definition at line 85 of file toeplitz_seq.c.
int stbmm | ( | double ** | V, |
int | nrow, | ||
int | m_cw, | ||
int | m_rw, | ||
Block * | tpltzblocks, | ||
int | nb_blocks, | ||
int64_t | idp, | ||
int | local_V_size, | ||
Flag | flag_stgy | ||
) |
Performs the multiplication of a symmetric, Toeplitz block-diagonal matrix, T, by an arbitrary matrix, V, distributed over processes in the generalized column-wise way.
Each process performs the multiplication sequentially for each diagonal block and based on the sliding window algorithm. Prior to that MPI calls are used to exchange data between neighboring process. Each of the diagonal blocks is a symmetric, band-diagonal Toeplitz matrix, which can be different for each block. The parameters are :
V | [input] distributed data matrix (with the convention V(i,j)=V[i+j*n]) ; [out] result of the product TV |
nrow | number of rows of the global data matrix V |
m | number of columns for the data matrix V in the global rowwise order |
m_rowwise | number of columns for the data matrix V in the rowwise order per processor |
tpltzblocks | list of the toeplitz blocks struture with its own parameters (idv, n, T_block, lambda) : |
nb_blocks | number of Toeplitz blocks as stored in T |
idp | global index of the first element of the local part of V |
local_V_size | a number of all elements in local V |
flag_stgy | flag strategy for the product computation |
Definition at line 136 of file toeplitz_seq.c.
int gstbmm | ( | double ** | V, |
int | nrow, | ||
int | m_cw, | ||
int | m_rw, | ||
Block * | tpltzblocks, | ||
int | nb_blocks, | ||
int64_t | idp, | ||
int | local_V_size, | ||
int64_t * | id0gap, | ||
int * | lgap, | ||
int | ngap, | ||
Flag | flag_stgy | ||
) |
Performs the multiplication of a symmetric, Toeplitz block-diagonal matrix with gaps, T, by an arbitrary matrix, V, distributed over processes.
We first rebuild the Toeplitz block matrix structure to reduce the computation cost and skip the computations of the values on the defined gaps.
The parameters are :
V | [input] distributed data matrix (with the convention V(i,j)=V[i+j*n]) ; [out] result of the product TV |
nrow | number of rows of the global data matrix V |
m | number of columns for the data matrix V in the global rowwise order |
m_rowwise | number of columns for the data matrix V in the rowwise order per processor |
tpltzblocks | list of the toeplitz blocks struture with its own parameters (idv, n, T_block, lambda) :
|
nb_blocks_all | number of all Toeplitz block on the diagonal of the full Toeplitz matrix |
nb_blocks_local | number of Toeplitz blocks as stored in T |
idp | global index of the first element of the local part of V |
local_V_size | a number of all elements in local V |
id0gap | index of the first element of each defined gap |
lgap | length of each defined gaps |
ngap | number of defined gaps |
flag_stgy | flag strategy for the product computation |
Definition at line 189 of file toeplitz_seq.c.
int gstbmm0 | ( | double ** | V, |
int | nrow, | ||
int | m, | ||
int | m_rowwise, | ||
Block * | tpltzblocks, | ||
int | nb_blocks_local, | ||
int | nb_blocks_all, | ||
int | id0p, | ||
int | local_V_size, | ||
int64_t * | id0gap, | ||
int * | lgap, | ||
int | ngap, | ||
Flag | flag_stgy | ||
) |
Definition at line 206 of file toeplitz_seq.c.