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
4. System requirements
- 3.1. new features
- 3.2. bug fixes
- 3.3. new public data
- 5. Known issues
- 6. Reference
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
- !!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
- !!key!! MMC now supports recording of partial path-lengths for photons captured by the user-specified detectors (similar to MCX)
- !!key!! The random-number-generator and math functions are accelerated by using SSE-based calculations
- !!key!! The boundary-reflection code was rigorously validated and improved for better speed
- !!key!! Enable atomic operations for the flux/energy deposit calculations
- A new input parameter, "--specular", allows users to consider the specular reflection at the surface and compare results to MCML and TIMOS
- Users can use "--outputtype" to specify output data types, including flux, fluence and energy deposit, flux is the default.
- A "--seed" input parameter allows users to specify RNG seeds from command-line, making it possible to do process-level parallelization on a cluster
- Use double-precision numbers to store flux/energy-loss data in the mesh
3.2. bug fixes
- !!critical!! Fixed a bug in savemmcmesh.m script to correctly reorient all elements. This can effect all meshes generated previously.
- !!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
- 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)
- 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