MIDAPACK - MIcrowave Data Analysis PACKage
1.1b
Parallel software tools for high performance CMB DA analysis
|
Contains routines related to the Toeplitz blocks diagonal routine for Toeplitz algebra. More...
Go to the source code of this file.
Functions | |
int | mpi_stbmm (double **V, int64_t nrow, int m, int m_rowwise, Block *tpltzblocks, int nb_blocks_local, int nb_blocks_all, int64_t idp, int local_V_size, Flag flag_stgy, MPI_Comm comm) |
Contains routines related to the Toeplitz blocks diagonal routine 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_block.c.
int mpi_stbmm | ( | double ** | V, |
int64_t | nrow, | ||
int | m, | ||
int | m_rowwise, | ||
Block * | tpltzblocks, | ||
int | nb_blocks_local, | ||
int | nb_blocks_all, | ||
int64_t | idp, | ||
int | local_V_size, | ||
Flag | flag_stgy, | ||
MPI_Comm | comm | ||
) |
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_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 |
flag_stgy | flag strategy for the product computation |
comm | MPI communicator |
[communication blocking example]
[communication blocking example]
[communication non-blocking example]
[communication non-blocking example]
[communication Wait example]
[communication Wait example]
Select the useful flotting blocks for the local data of the current processor. parameters (idpnew, local_V_size_new, nnew) for the computation. ide the local range are set with a size nnew equal to zero.
This compute the right parameters (idpnew, local_V_size_new, nnew) for the computation. All the block outside the local range are set with a size nnew equal to zero. local_V_size_new correspond to the size without the shift between the global rank index and the global index of the first flotting block. idnew is then set to the index of this first flotting block.
Definition at line 115 of file toeplitz_block.c.