Showing revision 1

Release Notes for Monte Carlo eXtreme v2019.3 (1.4.8)

Code name: Dark Matter, released on March 17, 2018

Click this link to download MCX v2019.3

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

1. Introduction
2. About this release
3. What's new compared to v2018
4. System requirements
5. Reference

1. Introduction

Monte Carlo eXtreme, or MCX, is an ultra-fast Monte Carlo light transport simulator for arbitrary 3D random media. It uses Graphics Processing Units (GPU) to run thousands of photons simultaneously, and is typically hundreds or thousands times faster than a single-threaded CPU-based simulation.

This release fully supports all major NVIDIA GPU architectures ranging from Fermi, Kepler, Maxwell, Pascal, and Volta, as well as future generations. The speed comparisons between different generations of NVIDIA GPUs can be found at

http://mcx.space/gpubench/

2. About this release

MCX v2019.3 (code named "Ether dome" - a landmark of Massachusetts General Hospital) contains numerous improvements developed over the past 7 months, including a list of new features and bug fixes. If you are currently using a previous release, you are strongly encouraged to upgrade to the latest version.

In this new release, the most notable update is the support of 4 different boundary conditions (BCs) - the total absorption BC (use letter "a",like -b 0), reflection BC (use letter "r",like -b 1), total reflection/mirror BC (use letter "m", new) and cyclic/periodic BC (use letter "c", new). One can specify these BCs using a new flag --bc (or cfg.bc in MCXLAB). For example, if one defines "--bc ccrcca", it specifies that when a photon exits from -x/+x axis direction, a cylic BC is used - that means a photon

The cross-platform graphical user interface, mcxstudio, as part of the MCXStudio package, also received numerous updates, and was forged over the past year as a result of two MCX Training Workshops (MCX'17 and MCX-OSA'18). This GUI program has served our main tool for training users, and was heavily tested before and during the workshops. The GUI program unified the input parameters of all supported modules (MCX, MMC, MCX-CL) and added built-in domain visualization tool and volume rendering scripts (via MATLAB/Octave). Video tutorials of this tool can be browsed at the below link

http://mcx.space/wiki/index.cgi?Demo/MCXStudio

Three critical bugs have been fixed -

  • one bug (Issues #17,#26,#29,#31) impacts all Windows users by generating low-quality random numbers and creating visible artifacts in wide-field simulations,
  • another one (#41) impacts all simulations involving large photon numbers (for example 1e8-1e9) by loosing intensity near the source.
  • the other bug impact all wide-field sources located outside of a refractive-index mismatched medium.

All three bugs have broad impact and all users are recommended to upgrade immediately to avoid using erroneous simulations.

Please visit our wiki website (http://mcx.space/wiki/) for more detailed documentation, demos and tutorials.

3. What's new compared to v2018

Compared to the previous release (version v2018, released in August 2018), MCX v2019.3 gains the following new features and bug fixes:

  1. !!key!! Support 4 different boundary conditions (total absorption, total reflection/mirror, Fresnel reflection and cylic), controlled independently (--bc/cfg.bc) at 6 facets of the domain
  2. !!key!! Add 4 built-in complex domain examples - Colin27 brain atlas, USC_19-5 brain atlas, Digimouse, and mcxyz skin-vessel benchmark
  3. !!key!! Support isotropic launch for all focuable sources - gaussian, pattern, pattern3d, fourier, disk, fourierx, fourierx2d, and slit - by setting cfg.srcdir(4) to nan
  4. !!key!! Add GPU-ANLM denoiser, mcxfilter.m, to mcxlab to reduce MC fluence noise, detailed in our [Yao2018] paper
  5. !!key!! Initial support of "photon sharing" - a fast approach to simultaneouly simulate multiple pattern src/det, as detailed in our Photoncs West 2019 talk by Ruoyang Yao/Shijie Yan [Yao&Yan2019]
  6. !!key!! First release of MCX Viewer - a built in 3D fluence rendering tool in mcxstudio (mcxviewer and mcxshow also provided separately)
  7. !!key!! Output partial scattering event counts in detected photon data, similar to MMC
  8. !!key!! Add CMake support, python-based mch file reader (by Shih-Cheng Tu), nightly build compilation script, colored command line output, and more
  9. mcxstudio: plot volume using matlab on windows
  10. mcx: fix diffuse reflectance bug - must be performed after boundary reflection
  11. mcx: added new RNG xoroshiro128+
  12. mcxlab: buildin tool to load nifti volumes
  13. mcxstudio: now compatible with mmc and mcxcl
  14. mcx: all important command line flags can be set in the JSON file

In the meantime, a number of critical bugs were fixed:

  • fix mcxlab gpuinfo output crash using multiple GPUs
  • disable linking to Intel OMP library (libiomp5) to avoid MATLAB 2016-2017 crash
  • fix mcxlab crash when srcpattern/srcdir/srcpos/detpos are not in double precision
  • fix shared memory allocation size bug
  • add the missing photon exit position in the trajectory output
  • fix mcxlab crash due to racing in multi-threads
  • force g to 1 in region where mus is 0

Pre-compiled MCX are provided for Windows (64 bit), Linux (64bit) and Mac OS (64bit). In the case of MCXLAB, mex files for both Matlab and Octave on these platforms are provided. All binaries have been tested on Fermi, Kepler, Maxwell, Pascal and Volta GPUs.

All released binaries are compiled and linked with CUDA 7.5 (which is "embedded" into the binary) due to faster speed. All pre-compiled binaries are meant to be executable out-of-box.

The provided binaries require a Fermi (Compute Capability 2.0) or newer GPU. If you have an older GPU (CC 1.0 or 1.1), you will have to recompile mcx using "make fast".

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

4. System requirements

To install MCX version v2019.3, you need

  • a CUDA-enabled graphics card made by NVIDIA (essentially all GPUs made by NVIDIA today)
  • the latest graphics driver for your graphics card

In this release, all precompiled binaries, including both mcx executables and mcxlab mex files, have built-in CUDA run-time libraries via static linking. Therefore, downloading/setting CUDA toolkit and the run-time librarie files (cudart.dll/libcudart.so/libcudart.dylib) are no longer needed.

However, if you run into CUDA errors, please first try to update your NVIDIA graphics driver to the latest version

http://www.nvidia.com/Download/index.aspx?lang=en-us

If the latest graphics driver still can not solve the problem, please download the "developer driver" for your GPU. You may download the developer driver as part of the CUDA Toolkit installation package.

https://developer.nvidia.com/cuda-downloads

5. Reference

Powered by Habitat