Release Notes for Monte Carlo eXtreme - OpenCL v2020

code name: Eternity, released on September 6, 2020

Click this link to download MCX-CL/MCXLAB-CL v2020

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

1. What's New
2. Introduction
3. System requirements
4. Reference

1. What's New

In MCX-CL v2020 (0.9.9), we added a list of major new additions, including

  • Support running on multiple NVIDIA GPUs (merged from nvidiaomp branch)
  • Built-in benchmarks for easy testing and adoption by new users
  • Transition to JSON/JNIfTI input/output files for easy data sharing
  • Exporting simulation as JSON with binary volume data
  • All-in-one Windows installer for MCXStudio/MCX/MMC/MCXCL
  • Automated code building, testing and continuous integration via Travis-CI
  • CMake based compilation and Visual Studio support
  • 1.6x speedup on Pascal GPUs
  • 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

Compared to MCXCL v2019.4 (0.9.8), MCX-CL has gained support of nearly all core features in MCX, i.e.

  • 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

In addition, we also fixed a number of critical bugs, such as

  • fix critical bug when output diffuse reflectance using a single pattern source
  • 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

2. 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. As of v2020, MCX-CL contains almost all features currently supported in MCX (with additional support of AMD/Intel CPUs and GPUs as well as JIT compilation and -J flag).

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.

3. System requirements

By default, MCX-CL uses OpenCL-based simulations to utilize all GPUs and CPUs installed on your system. If you have a GPU (NVIDIA, AMD or Intel), the OpenCL support is typically installed if you have correctly installed the latest version of the graphics driver. Please verify that the OpenCL library (libOpenCL.so* on Linux, OpenCL.dll on Windows or /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL on the Mac) must exist in your system.

Generally speaking, AMD and NVIDIA high-end dedicated GPU performs the best, about 20-60x faster than a multi-core CPU; Intel's integrated GPU is about 3-4 times faster than a multi-core CPU.

In addition, MMC has been fully tested with the open-source OpenCL runtime pocl (http://portablecl.org/) on the CPU. To install pocl on a Ubuntu/Debian system, please run

  sudo apt-get install pocl-opencl-icd

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

4. Reference

Powered by Habitat