MIDAPACK - MIcrowave Data Analysis PACKage
1.1b
Parallel software tools for high performance CMB DA analysis
|
Functions | |
int | print_error_message (int error_number, char const *file, int line) |
Prints error message corresponding to an error number. | |
int | copy_block (int ninrow, int nincol, double *Vin, int noutrow, int noutcol, double *Vout, int inrow, int incol, int nblockrow, int nblockcol, int outrow, int outcol, double norm, int set_zero_flag) |
Copies (and potentially reshapes) a selected block of the input matrix to a specified position of the output matrix. | |
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. | |
int | gap_reduce (double **V, int id0, int l, int lambda, int *id0gap, int *lgap, int ngap, int *newl, int id0out) |
...convert the data vector structure into a matrix structure optimized for nfft |
These are lower internal routines.
int print_error_message | ( | int | error_number, |
char const * | file, | ||
int | line | ||
) |
Prints error message corresponding to an error number.
error_number | error number |
file | file name |
line | line number |
Definition at line 93 of file toeplitz.c.
int copy_block | ( | int | ninrow, |
int | nincol, | ||
double * | Vin, | ||
int | noutrow, | ||
int | noutcol, | ||
double * | Vout, | ||
int | inrow, | ||
int | incol, | ||
int | nblockrow, | ||
int | nblockcol, | ||
int | outrow, | ||
int | outcol, | ||
double | norm, | ||
int | set_zero_flag | ||
) |
Copies (and potentially reshapes) a selected block of the input matrix to a specified position of the output matrix.
Copy a matrix block of a size nblockrow x nblockcol from the input matrix Vin (size ninrow x nincol) starting with the element (inrow, incol) to the output matrix Vout (size notrow x noutcol) starting with the element (outrow, outcol) after multiplying by norm. If the output matrix is larger than the block the extra elements are either left as they were on the input or zeroed if zero_flag is set to 1. If the block to be copied is larger than either the input or the output matrix an error occurs.
Definition at line 459 of file toeplitz.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 |
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 87 of file toeplitz_block.c.
int gap_reduce | ( | double ** | V, |
int | id0, | ||
int | l, | ||
int | lambda, | ||
int * | id0gap, | ||
int * | lgap, | ||
int | ngap, | ||
int * | newl, | ||
int | id0out | ||
) |
...convert the data vector structure into a matrix structure optimized for nfft
....Copy the data vector structure into an equivalent matrix with nfft column. Thus, the obtained matrix is optimize for the nfft multithreading algorithm use. The middle part is a direct copy of the data vector and we copy on the edges of each column the lambda terms needed to fullfill the correlation of theses data.
Definition at line 163 of file toeplitz_gappy_seq.dev.c.