Release Notes for Mesh-based Monte Carlo 1.0-RC1 (2016.5)

code name: Hot Cocoa, released on June 11, 2016

Acknowledgement: This software release is made possible with the funding support from NIH/NIGMS under the grant number R01-GM114365.

1. Introduction
2. About this release
3. What's new compared to v2016.1
3.1. new features
3.2. other improvement
4. System requirements
5. Known issues
6. 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) parallelism on modern CPUs, allowing MMC to take further advantage in parallel computing.

This is the second release of our new time-based release strategy. We plan to announce 4 releases each year - one release per 3 months.

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

2. About this release

MMC 1.0-RC1 is the first release candidate (RC) to the upcoming milestone, version 1.0, of MMC. It contains a number of bug fixes and four new forms of source types. The Makefile of the source code was also improved to support automatic nightly-build.

3. What's new compared to v2016.1

The v2016.5 release was improved upon the previous version, v2016.1 by fixing a list of bugs. They are:

3.1. new features

  1. !!key!! rewrite the exception handling in MMCLAB to properly terminate in multi-threads, no more matlab crashes!
  2. !!key!! add "gaussian", "zgaussian", "line" and "slit" source forms
  3. MMCLAB returns separate subfields for partial-path, scattering event count, exit positions etc.
  4. fix the bug in basisorder settings when using SSE4 ray-tracer
  5. saving the scattering event counts for each medium type
  6. fix bug related to double correction when user specifies cfg.unitinmm or --unitinmm
  7. update makefiles to enable automatic nightly-build

3.2. other improvement

  1. !!key!! MMC and MMCLAB now support nightly build, download at http://mcx.space/nightly

Pre-compiled MMC binaries are provided for Windows, Linux and Mac OS. In all cases, a binary compiled with SSE4-accelerated ray-tracing algorithms is provided for each platform.

The best simulation speed can be typically achieved by using

  mmc -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 default "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 recompile MMC using "make omp" command.

5. Known issues

  • 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. Reference

Powered by Habitat