Acknowledgement: This software release is made possible with the funding support from the NIH/NIGMS under grant R01-GM114365.
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
MCX v2020 represents a new milestone towards the development of a fast, versatile and feature-rich open-source Monte Carlo 3D photon simulator. It is packed with numerous improvements in both functionality and stability. We want to specifically highlight the below major additions:
--bench) for easy testing and adoption by new users
--zip lzma) for easy data sharing
--jsonin command line
pymcx) contributed by Maxime Baillot
Between 2019 and 2020, four new journal papers have been published as the result of this project. Please see the full list at http://mcx.space/#publication
Compared to the previous release (version v2019.4, released in April 2019), MCX v2020 gains the following new features and bug fixes:
A detailed list of updates is summarized below (key features marked with "*"):
*2020-08-29*[6eb9596] add mcxcreate.m, add mcxplotshapes.m to render json shapes *2020-08-27 [63e5a5f] handle det radii less than or equal to 0.5, fix #101 *2020-08-24 [6f11857] add command line option cheatsheet *2020-08-24 [cea663b] test cmake in travis *2020-08-24 [782b4a3] massive update of documentation *2020-08-20 [e8e6b58] print an explicit messgae if error 30 is found *2020-08-19*[883f61b] restore windows progress bar support, disabled in @ae2d60e45 *2020-08-17 [c47de01] allow running testing script on machines without nvidia gpu *2020-08-16 [0c25958] add more tests for various mcx options *2020-08-16 [ff2f68f] add sphshell benchmark - see GPU MMC paper *2020-08-15 [2afab4a] test if media prop count is less than max label *2020-08-15 [2d71eb7] accept array as Domain.Media json input *2020-08-15*[433df1f] accept json modifier via --json for easy testing *2020-08-14 [09adbd0] support --bc or cfg.bc to set an entire bounding face as detector *2020-08-11*[e095dbb] speed up by 1.6x on 1080Ti by restoring source template for pencil beam only *2020-08-11 [a220cc2] autoblock size no less than 64, speed up on Turing GPU by doubling threads *2020-08-04 [71d4196] fix incorrect detpt column when savedetflag/issaveexit are both set *2020-08-04 [20c596a] retrieve energy tot and abs regardless of isnormalized *2020-08-03*[30e01a1] add standalone script to submit to mcx speed contest *2020-07-31 [d9a5953] avoid autoblock is 0 when driver fails, close #99 *2020-07-28 [daa9d56] fix inaccurate core count on Volta, Turing and Pascal *2020-07-25 [37793ae] fix -b 0 -B rrrrrr crash, thanks to @ShijieYan *2020-07-22*[f844fe8] add automated building script via travis-ci *2020-07-22*[cbf0225] add unit testing script *2020-07-09 [5b038a7] add winget manifest *2020-07-04*[4bda593] inno windows installer *2020-07-02 [38529a7] accept -f in mcxshow and mcxviewer *2020-07-02 [34ecf5f] add glscene directly to the source code *2020-07-01*[f1828d3] add manpage for mcx *2020-06-29 [cd4acb8] visual studio project file updated *2020-06-29 [b22025d] update vs project file *2020-06-28 [71bedc5] add benchmark options, add jnii/bnii output formats *2020-05-02 [e7ce8f7] compiles lzma on windows, #94 *2020-05-02*[e56fa2b] add UBJ support, output .bnii files, close #95 *2020-05-01 [ed80ad5] now support lzma and lzip compression *2020-05-01 [f136bc9] upgrade all built-in binary files to JData formatted JSON files #94 *2020-04-29 [0d9c162] save detected photon data in JSON/JData format, close #94 *2020-04-25 [045a3de] update json schema *2020-04-25 [e8aae66] initialize gsrcpattern *2020-04-23* add built-in colini27 data,add --dumpjson, add -F jnii output format *2020-04-19*[da73b8d] add mcx built in benchmarks *2020-03-21*[b8fb79a] plot data in x/y/z slices,add axis labels and grid *2020-03-20 [d7e6203] add axis lable and scaling to volume viewer *2020-03-14*[b91dc5a] update mcxstudio gui to support gpu mmc *2020-02-18*[8c37911] adding pymcx written by Maxime Baillot as submodule *2020-02-08 [ba78df5] add template to disable continuous medium support, close #89 *2020-01-28 [b7c1982] speed up cone beam photon launch, fix accuracy, close #86 *2020-01-25*[984b2a0] initial support for hybrid optical properties: tissue type label combined with continous optical properties *2019-11-19 [1c07b16] scale partial-path when getting det photon time and weight, close #83 *2019-08-08 [0bdbef6] allow to browse file folder on windows *2019-07-26*[8a341ee] update mcxstudio to add the new flags *2019-07-23 [e3b53dc] add 2d sample script *2019-07-22*[c4baa84] output fluence/flux in replay, backport changes from mcxcl *2019-05-24 [02efc62] bug fix for continuous varying media patchPre-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 Kepler, Maxwell, Pascal, Volta, and Turing GPUs.
All released binaries are compiled and linked with CUDA 8 (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 Kepler (Compute Capability 3.0) or
newer GPU. If you have an older GPU (CC 1.0 or 2.0), you will have
to download MCX's source code, and replace
sm_30 in mcx/src/Makefile
sm_20 and recompile using CUDA 8.0 or earlier.
To install MCX version v2020, you need
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
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.