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
lower internal routines

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

Detailed Description

These are lower internal routines.


Function Documentation

int print_error_message ( int  error_number,
char const *  file,
int  line 
)

Prints error message corresponding to an error number.

Parameters:
error_numbererror number
filefile name
lineline 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 :

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
flag_stgyflag strategy for the product computation
commMPI 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.