Release Notes for Mesh-based Monte Carlo Version 0.9.0

code name: Banana Pudding, released on Dec. 20, 2011

1. Introduction
2. About this release
3. What's new compared to 0.8.0
3.1. new features
3.2. bug fixes
4. System requirements
5. Known issues
6. Preview of the next release
7. Reference

1. Introduction

Mesh-based Monte Carlo, or MMC, is a Monte Carlo simulation package designed for simulating photon transport in 3D heterogeneous media. MMC can use a volumetric mesh to represent a complex domain, making it computationally and memory efficient.

MMC supports multi-threading based parallel computing. You can obtain a nearly linear speed-up when using more CPU cores in your simulation. Starting from version 0.8, MMC also supports the Single-Instruction Multiple-Data (SIMD) parallism on modern CPUs, allowing MMC to take further advantage in parallel computing.

The download link to this release can be accessed from here.

2. About this release

MMC 0.9.0 is an important maintenance release. It contains fixes to several high priority bugs and a number of major feature additions. Thanks to the contribution of Dr. Stefan Carp, MMC now supports photon momentum transfer simulations and becomes useful for diffuse correlation spectroscopy (DCS) studies.

3. What's new compared to 0.8.0

The new release of v0.9.0 was highly polished upon the previous version, v0.8.0, published over 6 months ago. The key changes include:

3.1. new features

  1. !!key!! recording the momentum transfer for all detected photons to enable DCS simulations (Contributed by Dr. Stefan Carp <carp at nmr.mgh.harvard.edu>).
  2. !!key!! MMC accepts JSON-formatted input files. JSON format is portable and self-explanatory.
  3. reporting unit and line numbers when handling an error

3.2. bug fixes

  1. !!critical!! fixing a bug in node ordering in Havel ray-tracer, this bug affects all SSE4 binaries in the previous release and gives wrong results for fluence/flux .dat output.
  2. !!critical!! fixing a bug in SFMT RNG seeding when running with multi-threading, this affects all mmc_sfmt binaries (particularly all Mac OS users)
  3. !!critical!! fixing a bug in SSE-enabled math function calculations, this can generate wrong results for the first couple of photons, affects all SSE4 binaries
  4. fixing a bug causing garbled photon history output (.mch) on Windows

Pre-compiled MMC binaries are provided for Windows (32/64bit), Linux (32/64bit) and Mac OS (32/64bit). In all cases, a binary compiled with a fast SFMT-19937 RNG (mmc_sfmt) is included along with the default binary (mmc) using the GLIBC RNG.

Using mmc_sfmt is generally recommended over mmc. The highest simulation speed can be typically achieved by using

  mmc_sfmt -M S -C 0 ....

One can recompile all binaries using an Intel C++ Compiler. It can generate binaries up to 25% faster than the equivalent binaries compiled with GCC.

The detailed change logs can be found in the ChangeLog and Git commit history pages.

4. System requirements

The "multicore" MMC binaries can be used on almost all computers (even those with a single-core processor).

The "SSE4" binaries require your computer to support SSE4 instructions. This can be determined by using the following command on Linux/MacOS

  grep 'sse4' /proc/cpuinfo 

or using a freeware "CPU-Z" on windows. If you attempt to run the SSE4 on an unsupported computer, you will get an error when executing the binary. In that case, you should switch to the "multicore" binaries.

5. Known issues

  • One has to specify the correct initial element ID in the input file, this can be done by using the matlab/octave function "tsearchn" before running the simulation
  • One must use savemmcmesh.m to generate all mesh input files for MMC; otherwise, the element orientation is not guaranteed.
  • Currently, this code only supports element-based optical properties; nodal-based optical properties (for continuously varying media) will be added in a future release
  • The maximum photon number per MMC session is 2^32-1=4,294,967,295, if you need to run a large number of photons, we suggest you splitting the job into smaller jobs with each one running a smaller chunk of photons (for example 1E8). Each job should initialized with a different seed (-E).

6. Preview of the next release

The next release of MMC will be version 1.0. In this release, we will include wide-field illumination and MPI support to MMC, as a result of a collaboration between me and Dr. Xavier Intes and Jin Chen from RPI (this has been implemented and tested, Jin is now working on final polishing of the code). Stay tuned if you are interested.

7. Reference

Powered by Habitat