Release Notes for Monte Carlo eXtreme v2020 (1.8.0)
Code name: Ether Dome, released on August 31, 2020
Click this link to download MCX v2020
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 v2019.4
-
- 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 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:
- Built-in benchmarks (
--bench
) for easy testing and adoption by new users
- Transition to JSON/JNIfTI input/output files (
-F jnii
, -F bnii
, --zip lzma
) for easy data sharing
- Exporting simulation as JSON with binary volume data (
--dumpjson
)
- All-in-one Windows installer for MCXStudio/MCX/MMC/MCXCL
- Automated code building, testing and continuous integration via Travis-CI
- User can modify JSON input data using
--json
in command line
- Unit testing script for verifying performance (
mcx/test/testmcx.sh
)
- Standalone Speed Contest Perl script:
mcx/speedcontest/mcxcontest.pl
- New matlab functions:
mcxcreate, mcxplotshapes
- CMake based compilation and Visual Studio support
- Printing progress bar is working again on Windows
- Fixed a critical bug when saving diffuse reflectance using a single pattern source
- Add manpage, add command line flag, add axis ticks in mcxshow/mcxviewer GUI for visualization, showing volume in x/y/z planes
- Accelerating simulation by 1.6 fold on Pascal and Maxwell GPUs
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
3. What's new compared to v2019.4
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-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*[8086175] 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 patch
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 Kepler, Maxwell, Pascal, Volta, and Turing 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 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
by sm_20 and recompile using CUDA 8.0 or earlier.
The detailed change logs can be found in the ChangeLog
and Github commit history pages.
4. System requirements
To install MCX version v2019.4, 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