Acknowledgement: This software release is made possible with the funding support from the NIH/NIGMS under grant R01-GM114365.
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 is written in C and NVIDIA CUDA. It only be executed on NVIDIA GPUs. If you want to run hardware-accelerated MCX simulations on AMD/Intel GPUs or CPUs, please download MCX-CL (MCX for OpenCL), which is written in OpenCL. MCX and MCX-CL are highly compatible.
Due to the nature of the underlying MC algorithms, MCX and MCX-CL are ray-tracing/ray-casting software under-the-hood. Compared to commonly seen ray-tracing libraries used in computer graphics or gaming engines, MCX-CL and MCX have many unique characteristics. The most important difference is that MCX/MCX-CL are rigorously based on physical laws. They are numerical solvers to the underlying radiative transfer equation (RTE) and their solutions have been validated across many publications using optical instruments and experimental measurements. In comparison, most graphics-oriented ray-tracers have to make many approximations in order to achieve fast rendering, enable to provide quantitatively accurate light simulation results. Because of this, MCX/MCX-CL have been extensively used by biophotonics research communities to obtain reference solutions and guide the development of novel medical imaging systems or clinical applications. Additionally, MCX/MCX-CL are volumetric ray-tracers; they traverse photon-rays throughout complex 3-D domains and computes physically meaningful quantities such as spatially resolved fluence, flux, diffuse reflectance/transmittance, energy deposition, partial pathlengths, among many others. In contrast, most graphics ray-tracing engines only trace the RGB color of a ray and render it on a flat 2-D screen. In other words, MCX/MCX-CL gives physically accurate 3-D light distributions while graphics ray-tracers focus on 2-D rendering of a scene at the camera. Nonetheless, they share many similarities, such as ray-marching computation, GPU acceleration, scattering/absorption handling etc.
This release fully supports all major NVIDIA GPU architectures ranging from Kepler, Maxwell, Pascal, Volta, Turing, Ampare, Ada to Blackwell , as well as future generations. The speed comparisons between different generations of NVIDIA GPUs can be found at
MCX v2025.10 is a maintenance release with multiple bug fixes and minor new features. It is highly recommended to upgrade for all users.
Notable new features include:
zh_CN and zh_TW), French (fr_CA), Spanish (es_MX), Germany (de_DE), Japanese (ja_JP), Korean (ko_KR), Hindi (hi_IN) and Portugues (pt_BR); use --lang in the command line or cfg.lang or cfg['lang'], or use environment variable MCX_LANG to set output language;
cwdiffusion, cwfluxdiffusion, cwfluencediffusion, dcsg1, mcxcreate, rfreplay, rfmusreplay, loadmc2, loadmch, loadfile, mcx2json, json2mcx, loadnii, preview, plotshapes, plotphotons, plotvol; all new functions are unit-tested
pmcx Python module pip-installable for Mac users running on Apple silicon. The GPU simulation binary module (_pmcx) is not supported on Apple silicon as it does not support CUDA.
This release also contains a few bug fixes, including - ensure time gate can not exceed gcfg->maxgate, fix #242 - fix typos in pmcx functions - package DLL files in the github action build script for mcxlab
The detailed updates can be found in the below change log