MIDAPACK - MIcrowave Data Analysis PACKage 1.0beta
Parallel software tools for high performance CMB DA analysis
distributed memory (MPI) routines

Functions

int mpi_stmm (double **V, int n, int m, int id0, int l, double *T, int lambda, MPI_Comm comm)
 Perform the multiplication of a Toeplitz matrix by a matrix with MPI. We assume that the matrix has already been scattered.
int mpi_stbmm (double **V, int *n, int m, int nrow, double *T, int nb_blocks_local, int nb_blocks_all, int *lambda, int *idv, int idp, int local_V_size, 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.
int mpi_gstbmm (double **V, int *n, int m, int nrow, double *T, int nb_blocks_local, int nb_blocks_all, int *lambda, int *idv, int id0p, int local_V_size, int *id0gap, int *lgap, int ngap, 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.

Detailed Description

These are distributed-memory routines.


Function Documentation

int mpi_gstbmm ( double **  V,
int *  n,
int  m,
int  nrow,
double *  T,
int  nb_blocks_local,
int  nb_blocks_all,
int *  lambda,
int *  idv,
int  id0p,
int  local_V_size,
int *  id0gap,
int *  lgap,
int  ngap,
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
nnumber of rows for each Toeplitz block as stored in T
mnumber of columns of the global data matrix V
nrownumber of rows of the global data matrix V
TToeplitz matrix composed of the non-zero entries of the first row of each Toeplitz block and concatenated together have to be arranged in the increasing order of n without repetitions and overlaps.
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
lambdahalf bandwith size for each Toeplitz block stroed in T
idvglobal row index defining for each Toeplitz block as stored in the vector T first element of the interval to which given Toeplitz matrix is to be applied.
id0pglobal index of the first element of the local part of V
local_V_sizenumber of all elements in local V
id0gapindex of the first element of each defined gap
lgaplength of each defined gaps
ngapnumber of defined gaps
commMPI communicator

Definition at line 1576 of file toeplitz.c.

int mpi_stbmm ( double **  V,
int *  n,
int  m,
int  nrow,
double *  T,
int  nb_blocks_local,
int  nb_blocks_all,
int *  lambda,
int *  idv,
int  idp,
int  local_V_size,
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 :

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 for each Toeplitz block as stored in T
mnumber of columns of the global data matrix V
nrownumber of rows of the global data matrix V
TToeplitz matrix composed of the non-zero entries of the first row of each Toeplitz block and concatenated together have to be arranged in the increasing order of n without repetitions and overlaps.
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
lambdahalf bandwith size for each Toeplitz block stroed in T
idvglobal row index defining for each Toeplitz block as stored in the vector T first element of the interval to which given Toeplitz matrix is to be applied.
idpglobal index of the first element of the local part of V
local_V_sizea number of all elements in local V
commMPI communicator

Definition at line 1090 of file toeplitz.c.

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

Perform the multiplication of a Toeplitz matrix by a matrix with MPI. We assume that the matrix has already been scattered.

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.
commcommunicator (usually MPI_COMM_WORLD)

Definition at line 946 of file toeplitz.c.