MADmap: A Fast Parallel Maximum Likelihood CMB Map Making Code


Adapting your time stream to the MADmap data model

As mentioned in the introduction MADmap uses the following data model
where d is the time ordered data set n is a time domain vector of piece wise stationary Gaussian noise, s is the signal in some basis other than the time domain, and A is the pointing matrix which is the linear operator that projects from the signal basis to the time domain. Beyond this MADmap assumes a particular form of the inverse time time noise correlation matrix. This form is described in detail in the MADmap man page. A schematic drawing of the inverse time time noise correlation matrix is located here.

Constructing the Input Files

This code is capable of dealing with many instrument specific systematic effects. The way that these effects are included in the map making is through the input files. These input files are the time ordered data and inverse time time noise correlation files. The format of these files is described in the MADmap man page. If these files are properly constructed MADmap can remove the effects of asymmetric beams, multiple beams, chopping synchronous signal, piecewise stationary noise, missing or bad data, line noise (noise which is localized in the frequency domain), and micro-phonics. How these problems are tackeled specifically is beond the scope of this documentation. The reason MADmap can deal with these problems is due to the generality of the MADmap data model.

Dealing with Limited Memory Resources

MADmap's memory usage scales like the number of time samples. If it is not possible to distribute the entire time ordered data set among the memory available on all of the processors then MADmap will read the time stream in piece at a time, but it will need to do so for every iteration of the PCG. This requires a lot of I/O and on most systems the run time will be dominated by I/O and not computation. To avoid this, be sure to allocate enough memory resources to the job so that the time stream can be stored on the available memory. If this is not possible the computation can still be done, but more slowly.