Montage v4.0 has been tested with Red Hat Enterprise Linux Server 5.9 and Mac OS X 10.9.x, both with with gcc compiler Version 4.1.2. The Montage code is ANSI-compliant, and is expected to build on all *nix platforms and gcc compiler versions. Previous versions of Montage have indeed built successfully on a wide range of platforms. There have been occasional examples of platform-specific issues, usually relating to tighter tolerances on, e.g, datatypes and function return types. Please contact us if you find such issues.
The Montage distribution is 1.5 GByte in size (1.1 GByte GitHub ZIP file). Of this, 31 MByte is source code; 1.1 GByte is documentation and test data files The compiled binaries will occupy 201 MBytes. We are investigating whether to release a more compact version with source code only.
By default, the Makefiles used by Montage call the standard gcc compiler (or whatever the command "gcc" is aliased to).
Montage Memory Requirements
mAdd builds the output mosaic one row of pixels at a time. Every input image that contributes pixels to the "current" output row is opened, and the values from the corresponding input row of pixels is read into memory. Each pixel value is preserved in memory until all input pixels have been recorded and are ready to be averaged. Although not as limited as previous versions of Montage (which also held the entire output image array in memory), this version therefore requires enough memory to store:
- One row of the output data image
- One row of the output area image
- One row of each input data image that overlaps the output row
- One row of each input area image that overlaps the output row
Montage Disk Space Requirements
Montage requires that all of the input images are on a local disk and writes the output mosaic to the local disk. The mProject module generates two intermediate files for each input image, one containing the image flux densities reprojected to the coordinate system and projection of the output mosaic and one containing the corresponding pixel area information. Intermediate files are also created by mDiff, which creates a difference image for each overlap region between neighboring pairs of input images. The total size of these difference images is about equal to the total size of the intermediate images created by mProject. The mBackground module also generates an image and area file for each input image and the mAdd module generates the output mosaic and a corresponding area coverage file.
To preserve astrometric and photometric accuracy, the intermediate images, the output mosaic, and all area files are written as double precision floating point -- 8 bytes per pixel -- regardless of the data type of the input image pixels. The number of pixels in the intermediate images depends on both the input image and output mosaic parameters. A coordinate system transformation from input space to output space is a rotation transformation. For a square image, the area of the bounding box around a 45 degree rotated image is double the original image area (the area will be larger for a long, thin image). Therefore, ignoring projection distortion, a "typical" intermediate reprojected image will have between r and 2r times the number of pixels in its corresponding input image, where r is the ratio of the input image pixel size to the output mosaic pixel size. To be conservative users should have total disk space, D, of:
D = Din + Dtmp + Dout,
where Din is the space in bytes required for the input images, Dtmp is the space for the intermediate images and area files, and Dout is the space for the output mosaic.
Din = N * Pi * Bi,
where N is the number of input images, Pi is the number of pixels per image, and Bi is the number of bytes per pixel.
Dtmp = 8 * (2 * r * N) * Pi * Btmp
Dtmp = 16 * r * N * Pi * Btmp,
where r is the ratio of the input image pixel size to the output mosaic pixel size, and Btmp is the number of bytes per pixel in the intermediate images (Btmp = 8 in Montage release 1.x).
Dout = Po * Bo,
where Po is the number of pixels in the output mosaic and Bo is the number of bytes per pixel in the output mosaic (Bo = 8 in Montage release 1.x).
Combining the above equations yields:
|D = N * Pi * (Bi + 128 * r) + 16 * Po|
where N is the number of input images, Pi is the number of pixels per input image, Po is the number of pixels in the output mosaic, Bi is the bytes per pixel in the input images, and r is the ratio of the input image pixel size to the output mosaic pixel size