MIDAPACK - MIcrowave Data Analysis PACKage  1.1b
Parallel software tools for high performance CMB DA analysis
 All Data Structures Files Functions Variables Typedefs Groups Pages
distributed memory (MPI) routines

Functions

int mpi_stmm (double **V, int n, int m, int id0, int l, double *T, int lambda, Flag flag_stgy, MPI_Comm comm)
 Performs the product of a Toeplitz matrix by a general matrix using MPI. We assume that the matrix has already been scattered. (a USER routine)
int mpi_gstbmm (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, 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. This matrix V contains defined gaps which represents the useless data for the comutation. The gaps indexes are defined in the global time space as the generized toeplitz matrix, meaning the row dimension. Each of his diagonal blocks is a symmetric, band-diagonal Toeplitz matrix, which can be different for each block.
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.

Detailed Description

These are distributed-memory routines.


Function Documentation

int mpi_stmm ( double **  V,
int  n,
int  m,
int  id0,
int  l,
double *  T,
int  lambda,
Flag  flag_stgy,
MPI_Comm  comm 
)

Performs the product of a Toeplitz matrix by a general matrix using MPI. We assume that the matrix has already been scattered. (a USER routine)

The multiplication is performed using FFT applied to circulant matrix in order to diagonalized it. The parameters are :

Parameters:
V[input] distributed data matrix (with the convention V(i,j)=V[i+j*n]); [out] result of the product TV
nnumber of rows of V
mnumber of columns of V
id0first index of scattered V
llength of the scattered V
TToeplitz matrix.
lambdaToeplitz band width.
flag_stgyflag strategy for the product computation
commcommunicator (usually MPI_COMM_WORLD)

Definition at line 980 of file toeplitz.c.

int mpi_gstbmm ( 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,
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. This matrix V contains defined gaps which represents the useless data for the comutation. The gaps indexes are defined in the global time space as the generized toeplitz matrix, meaning the row dimension. Each of his diagonal blocks is a symmetric, band-diagonal Toeplitz matrix, which can be different for each block.

We first rebuild the Toeplitz block matrix structure to reduce the computation cost and skip the computations of the values on the defined gaps. then, each process performs the multiplication sequentially for each of the gappy block and based on the sliding window algorithm. Prior to that MPI calls are used to exchange data between neighboring process. The parameters are :

Parameters:
V[input] distributed data matrix (with the convention V(i,j)=V[i+j*n]) ; [out] result of the product TV
nrownumber of rows of the global data matrix V
mnumber of columns for the data matrix V in the global rowwise order
m_rowwisenumber of columns for the data matrix V in the rowwise order per processor
tpltzblockslist of the toeplitz blocks struture with its own parameters (idv, n, T_block, lambda) :
  • idv is the global row index defining for each Toeplitz block as stored in the vector T ;
  • n size of each Toeplitz block
  • T_block location of each Toeplitz matrix data composed of the non-zero entries of the first row ;
  • lambda size of each Toeplitz block data T_block. The bandwith size is then equal to lambda*2-1
nb_blocks_allnumber of all Toeplitz block on the diagonal of the full Toeplitz matrix
nb_blocks_localnumber of Toeplitz blocks as stored in T
idpglobal index of the first element of the local part of V
local_V_sizea number of all elements in local V
id0gapindex of the first element of each defined gap
lgaplength of each defined gaps
ngapnumber of defined gaps
flag_stgyflag strategy for the product computation
commMPI communicator

Definition at line 88 of file toeplitz_gappy.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 :

Parameters:
V[input] distributed data matrix (with the convention V(i,j)=V[i+j*n]) ; [out] result of the product TV
nrownumber of rows of the global data matrix V
mnumber of columns for the data matrix V in the global rowwise order
m_rowwisenumber of columns for the data matrix V in the rowwise order per processor
tpltzblockslist of the toeplitz blocks struture with its own parameters (idv, n, T_block, lambda) :
nb_blocksnumber of Toeplitz blocks as stored in T
idpglobal index of the first element of the local part of V
local_V_sizea number of all elements in local V
flag_stgyflag strategy for the product computation

Definition at line 121 of file toeplitz_seq.c.