Release Notes for Mesh-based Monte Carlo Version 0.8.0

code name: Snow Cone, released on Jun. 16, 2011

1. Introduction
2. About this release
3. What's new compared to 0.4.0
3.1. new features
3.2. bug fixes
3.3. new public data
4. System requirements
5. Known issues
6. Reference

1. Introduction

Mesh-based Monte Carlo, or MMC, is a highly-accurate Monte Carlo simulation software for photon transport in 3D heterogeneous media. MMC can represent a complex domain using a volumetric mesh. This not only greatly improves the accuracy of the solution when modeling objects with curved/complex boundaries, but also gives an efficient way to sample the problem domain and use less memory.

The current version of MMC supports multi-core processors. You can achieve a nearly linear speed-up when using more CPU cores in your simulation. This release also supports the Single-Instruction Multiple-Data (SIMD) parallism on modern CPUs, making MMC even more attractive as an accurate and efficient modeling tool.

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

2. About this release

MMC 0.8.0 is a milestone release. It has accumulated numerous updates, including several major new features, bug fixes and performance improvements. All key features, including refractive index mismatch at boundaries, have been rigorously tested and compared against existing tools and literature results. The computational speed of the software is at least twice faster compared to the previous release. This version is considered stable and is highly recommended to upgrade to.

3. What's new compared to 0.4.0

The new release of v0.8.0 was massively updated upon the previous version, v0.4.0, published over 7 months ago. The key changes include:

3.1. new features

  1. !!key!! In addition to the Plucker-based ray-tracing, 3 new ray-tracing algorithms had been implemented, including the Havel&Herout's method (SSE4), Badouel's method and branchless Badouel's method (SSE). The SSE-based ray-tracers are nearly twice faster than the Plucker's method, resulting in 25% overall speed improvements
  2. !!key!! MMC now supports recording of partial path-lengths for photons captured by the user-specified detectors (similar to MCX)
  3. !!key!! The random-number-generator and math functions are accelerated by using SSE-based calculations
  4. !!key!! The boundary-reflection code was rigorously validated and improved for better speed
  5. !!key!! Enable atomic operations for the flux/energy deposit calculations
  6. A new input parameter, "--specular", allows users to consider the specular reflection at the surface and compare results to MCML and TIMOS
  7. Users can use "--outputtype" to specify output data types, including flux, fluence and energy deposit, flux is the default.
  8. A "--seed" input parameter allows users to specify RNG seeds from command-line, making it possible to do process-level parallelization on a cluster
  9. Use double-precision numbers to store flux/energy-loss data in the mesh

3.2. bug fixes

  1. !!critical!! Fixed a bug in savemmcmesh.m script to correctly reorient all elements. This can effect all meshes generated previously.
  2. !!critical!! Fixed a bug in sphdiffusionslab.m script. The old version will generate erroneous analytically solutions from a sphere-in-slab domain when the optical properties are different from those in the paper.

3.3. new public data

  1. We generated a new human brain atlas (Collins atlas) FE mesh with significantly improved anatomical structures (http://mcx.sf.net/cgi-bin/index.cgi?MMC/CollinsAtlasMesh)
  2. We created a new Digimouse atlas FE mesh with much better element sizes and quality (http://mcx.sf.net/cgi-bin/index.cgi?MMC/DigimouseMesh)

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 GLIBC 48bit RNG (mmc).

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 Intel C++ Compilers. It will be about 25% faster than the equivalent binaries compiled with GCC.

The detailed change logs can be found in the ChangeLog and SVN 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.
  • MMC only supports linear tetrahedral elements at this point. Quadratic elements will be added later
  • Currently, this code only supports element-based optical properties; nodal-based optical properties (for continuously varying media) will be added in a future release

6. Reference

Powered by Habitat