Acknowledgement: This software release is made possible with the funding support from the NIH/NIGMS under grant R01-GM114365.
MCX-CL v2024.2 contains both new major features and critical bug fixes. It is a strongly recommended upgrade for all users.
Specifically, MCX-CL v2024.2 received two important features ported from MCX:
The first feature allows users to define a scattering zenith angle distribution
via a discretized inverse CDF (cumulative distribution function). The
second feature allows users to define the zenith angle distribution for
launching a photon, relative to the source-direction vector, also via
a discretized inverse CDF. In MATLAB/Octave, they can be set as
cfg.invcdf
or cfg.angleinvcdf
, respectively. We provided ready-to-use
demo scripts in mcxlabcl/examples/demo_mcxlab_phasefun.m
and
demo_mcxlab_launchangle.m
.
Additionally, in this release, we further improved the simulations when using Intel CPU or integrated GPU.
Aside from new features, a severe bug was discovered that affects all
pattern
and pattern3d
simulations that do not use photon-sharing,
please see
https://github.com/fangq/mcx/issues/212
Because of this bug, MCX/MCX-CL in older releases has been simulating squared pattern/pattern3d data instead of the pattern itself. If your simulation uses these two source types and you do not use photon-sharing (i.e. simulating multiple patterns together), please upgrade your MCX/MCX-CL and rerun your simulations. This bug only affect volumetric fluence/flux outputs; it does not affect diffuse reflectance outputs or binary patterns.
We also ported a bug fix from fangq/mcx#195 regarding precision loss when
saving diffuse reflectance. Finally, starting from this release, we are providing
native binary packages built for Apple M1/M2 (arm64) processors. All Apple silicon
packages are labeled with macos-arm64
in the package names.
We want to thank Haohui Zhang for reporting a number of critical issues (fangq/mcx#195 and fangq/mcx#212). ShijieYan and fanyuyen have also contributed to the bug fixes and improvements.
The detailed updates can be found in the below change log
Monte Carlo eXtreme (MCX) is a fast physically-accurate photon simulation software for 3D heterogeneous complex media. By taking advantage of the massively parallel threads and extremely low memory latency in a modern graphics processing unit (GPU), this program is able to perform Monte Carlo (MC) simulations at a blazing speed, typically hundreds to a thousand times faster than a single-threaded CPU-based MC implementation.
MCX-CL is the OpenCL implementation of the MCX algorithm. Unlike MCX which can only be executed on NVIDIA GPUs, MCX-CL is written in OpenCL, the Open Computing Language, and can be executed on most modern CPUs and GPUs available today, including Intel and AMD CPUs and GPUs. MCX-CL is highly portable, highly scalable and is feature-rich just like MCX.
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.
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.