![]() |
MIDAPACK - MIcrowave Data Analysis PACKage 1.0beta
Parallel software tools for high performance CMB DA analysis
|
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. |
These are distributed-memory routines.
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 :
V | [input] distributed data matrix (with the convention V(i,j)=V[i+j*n]) ; [out] result of the product TV |
n | number of rows for each Toeplitz block as stored in T |
m | number of columns of the global data matrix V |
nrow | number of rows of the global data matrix V |
T | Toeplitz 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_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 |
lambda | half bandwith size for each Toeplitz block stroed in T |
idv | global 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. |
id0p | global index of the first element of the local part of V |
local_V_size | 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 |
comm | MPI 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 :
V | [input] distributed data matrix (with the convention V(i,j)=V[i+j*n]) ; [out] result of the product TV |
n | number of rows for each Toeplitz block as stored in T |
m | number of columns of the global data matrix V |
nrow | number of rows of the global data matrix V |
T | Toeplitz 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_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 |
lambda | half bandwith size for each Toeplitz block stroed in T |
idv | global 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. |
idp | global index of the first element of the local part of V |
local_V_size | a number of all elements in local V |
comm | MPI 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 :
V | [input] distributed 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 |
id0 | first index of scattered V |
l | length of the scattered V |
T | Toeplitz matrix. |
lambda | Toeplitz band width. |
comm | communicator (usually MPI_COMM_WORLD) |
Definition at line 946 of file toeplitz.c.