Release Notes for Monte Carlo eXtreme - OpenCL v2019.3

code name: Eternity, released on March 18, 2019

Click this link to download MCX-CL/MCXLAB-CL 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. System requirements
4. Features that are available on MCX but not yet ported to MCXLAB
5. Reference

1. Introduction

MCX-CL (or MCX for OpenCL) is a high-performance, highly scalable and general-purpose Monte Carlo photon transport simulator for biophotonics applications. Compared to MCX (implemented with NVIDIA CUDA), MCXCL is written in the OpenCL framework, and is capable of launching parallel photon simulations on most modern CPUs and GPUs produced by many vendors, including NVIDIA, AMD and Intel.

MCX-CL shares nearly identical command line options and input file formats as MCX. The simulation settings designed for MCX can be simply used for MCX-CL simulations without major modifications. There are only a few features in MCX that have not yet been ported to MCXCL, such as photon replay, we are working on those and hopefully make both software 100% compatible.

Similar to MCXLAB, MCXLAB-CL is the MATLAB mex version of the MCXCL software. It can be directly called inside MATLAB and GNU Octave. It also uses the same input structure settings as in MCXLAB, making both packages highly compatible. One can even define USE_MCXCL=1 in MATLAB command window, and all MCXLAB calls will call MCXLAB-CL automatically.

2. About this release

MCXCL/MCXLAB-CL v0.9 contains a list of important new features as well as bug fixes.

Over the past two years, we have gradually ported all key features from MCX to MCXCL, including

  • Add 4 built-in complex domain examples - Colin27 brain atlas, USC_19-5 brain atlas, Digimouse, and mcxyz skin-vessel benchmark
  • Support isotropic launch for all focuable sources - gaussian, pattern, pattern3d, fourier, disk, fourierx, fourierx2d, and slit - by setting cfg.srcdir(4) to nan
  • Add python-based mch file reader (by Shih-Cheng Tu), nightly build compilation script, colored command line output, and more
  • Add gpubenchmark script to mcxlabcl, please browse submitted benchmark results at
  • Half-precision ray-tracing support (paper in-preparation)
  • The GPU-ANLM denoiser newly added for mcx, mcxfilter.m, detailed in our [Yao2018] paper, also applies to mcxlabcl/mcxcl output

In the meantime, the below bugs have been fixed

  • fix bugs for incorrect results for isotropic source, cone source
  • fix mcxlabcl gpuinfo output crash using multiple GPUs
  • fix mcxlab crash when srcpattern/srcdir/srcpos/detpos are not in double precision
  • fix mcxlab crash due to racing in multi-threads
  • force g to 1 in region where mus is 0

Compared to MCX v2019.3 (1.4.8), MCX-CL has not yet supported the below features as of this release

  • Output momentum transfer for DCS simulations
  • Output photon trajectory data
  • Specifying one of the four boundary conditions for each of the 6 facets of the domain
  • Output partial scattering event counts like MMC
  • Photon replay
  • Photon sharing - simultaneous simulations of multiple patterns
  • 2D simulations
  • Support photon numbers over 2^31-1 in one simulation

Pre-compiled MCXCL and MCXLAB-CL binaries are provided for Windows, Linux and Mac OS.

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

3. System requirements

In all cases, the OpenCL library (*, OpenCL.dll or /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL on the Mac) must be preinstalled in your system. Typically, these libraries are automatically installed after you installed your integrated or discrete GPU graphics driver.

The lowest OpenCL support version is OpenCL 1.0. Essentially, nearly all OpenCL compliant processors can run MCXCL/MCXLAB-CL.

Step-by-step installation guide can be found in this link.

4. Features that are available on MCX but not yet ported to MCXLAB

The below features have not yet been ported to MCXCL:

  • Photon replay for building Jacobians
  • storing photon trajectory data
  • saving momentum transfer for DCS simulations
  • displaying progress bar on NVIDIA/Intel processors

we are working hard to port these features to MCXCL and MCXLABCL.

5. Reference

Powered by Habitat