Release Notes for Monte Carlo eXtreme v2025.10 (2.8)
Code name: Kilo-Kelvin, released on October 12, 2025
Click this link to download MCX v2025.10
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
-
1. Introduction
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
https://mcx.space/gpubench/
2. About this release
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:
- initial international language support (i18n), including Chinese (
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;
- ported additional mcx utility functions from mcxlab to pmcx, including
cwdiffusion, cwfluxdiffusion, cwfluencediffusion, dcsg1, mcxcreate, rfreplay, rfmusreplay, loadmc2, loadmch, loadfile, mcx2json, json2mcx, loadnii, preview, plotshapes, plotphotons, plotvol; all new functions are unit-tested
- make mcx data processing functions in
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.
- use replay to produce frequency-domain Jacobians - contributed by Paulliina
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
- 2025-10-12 [4d6ca7f] [doc] update README, tag v2025.10
- 2025-10-12 [66128fd] [ci] fix opencl generic cpu error when testing packages
- 2025-10-11 [aa62f2b] [pmcx] bump pmcx to 0.6.1
- 2025-10-10 [d20953c] [inno] installer adds paths for iso2mesh or redbird
- 2025-10-10 [02f1b75] [ci] update release test actions
- 2025-10-06 [c285125] [pmcx] bump version to 0.6.0
- 2025-10-06 [b1bd7a8] [release] update release version to v2025.10
- 2025-10-05 [334ca2a] [mcxstudio] force enabling cthreads in linux
- 2025-10-05 [7bd0c04] [mcxstudio] correctly handle _ArrayOrder_=c, fix --lang for mcxcl/mmc
- 2025-10-01 [e4ed8f0] [feat] use USE_MCXCL>0 to set OpenCL device, negative to set CUDA device
- 2025-09-30 [da51af2] [bug] fix bug when individually specifying srcid>0 and replaydet>0, #250
- 2025-09-30 [96a728d] [bug] output 6D array when replaying multi-src w/ srcid=-1,replaydet=-1, fix #250
- 2025-09-30 [037366e] [feat] multiple source replay
- 2025-09-28 [76f8b4d] [i18n] use --lang=ID instead of --lang
- 2025-09-28 [c9b1439] [i18n] set default lang to en
- 2025-09-28 [5adace3] [i18n] set installer language tag
- 2025-09-28 [9fa04fd] [i18n] use locale folder that is already at root
- 2025-09-28 [66afb5c] [i18n] installer also setup locale files
- 2025-09-28 [4bab8ba] [typo] fix typo
- 2025-09-28 [975329c] [i18n] support French, German, Spanish, Italian, Japanese, Korean, Portuguese and Chinese
- 2025-09-28 [dbca123] [i18n] add GUI translations
- 2025-09-27 [fda913a] [bug] support more than 256 media count in output JSON file
- 2025-09-27 [2489d22] [inno] remove unsupported language
- 2025-09-27 [0756947] [inno] enable language selection
- 2025-09-26 [3d67580] [lang] support lang in the inno installer
- 2025-09-25 [e230514] [bug] when srctype is unknown, the program can run successfully
- 2025-08-26 [84adbfc] [pmcx] bump version to 0.5.1, some fixes after new unit tests
- 2025-08-26 [e12bbef]*[pmcx] add additional unit tests
- 2025-08-25 [521fcf0] [pmcx] pmcx v0.5.0
- 2025-08-25 [501d6b3] [pmcx] bump version 0.4.6 to update macos apple silicon src
- 2025-08-24 [37c1205]*[pmcx] initial port of all remaining utils matlab functions to python
- 2025-08-24 [101f3c7] [doc] fix inaccurate descrption of the 'energy' output type
- 2025-08-24 [196d1de] [pmcx] bump pmcx version to 0.4.3
- 2025-07-20 [fbf5942]*[ci] build none-any pmcx package for Apple silicon macos
- 2025-06-01 [6752c76] [i18n] updated es_MX translations verified by Edgar Guevara
- 2025-06-01 [bdc9a79] [lang] fix some octave warnings, improve translations
- 2025-06-01 [3ebff5b] [bug] use consistent message
- 2025-06-01 [8097604] [feat] read env variable MCX_LANG to set language
- 2025-06-01 [a2c8ef5] [bug] fix typos in translations, there could be more
- 2025-06-01 [fc7c1cf] [pmcx] bump version to 0.4.2 to support cfg['lang'], print lang name
- 2025-06-01 [8ece5d6] [pmcx] fix ci error for windows, support locale in pmcx, pass test
- 2025-06-01 [70958b9] [ci] fix windows vs error, make mcx_lang const visible in c++
- 2025-06-01 [b99a33f] [ci] fix macos build error, add missing new unit in cmake
- 2025-06-01 [729fc37]*[feat] initial i18n support for international languages
- 2025-05-12 [8663b80] Fix photontof index in WPTOF calculation
- 2025-04-21 [174e35c]*[feat] further polish rf replay for mus Jacobian, close #241
- 2025-04-21 [346a638] [feat] dynamically detect the lowest supported gpu arch by nvcc
- 2025-04-18 [0b3c364] Create demo script for computing any or all of the available Jacobian types in replay mode
- 2025-04-16 [512ea26] [pmcx] fix ci build errors
- 2025-04-16 [9ec9be1] Fix typo in pmcx.cpp
- 2025-04-15 [3e8b730] fix typo cfg.issaveexit to cfg["issaveexit"]
- 2025-04-12 [0bf148c]*[bug] ensure tshift can not exceed gcfg->maxgate, fix #242
- 2025-03-18 [98c92ea] Fix undefined variable cfg, should be mcx_config.
- 2025-03-18 [c1bc350] Format updated code and simplify example
- 2025-03-18 [d94e4f4] Add terminal output types for new features.
- 2025-03-17 [0d4c892] Fix typo in cfg struct name.
- 2025-03-17 [ded9aba]*Implement computation of the total time-of-flight (TOF) and final detected weight
- 2025-03-17 [eb4b171] Implement computation of total time-of-flight (TOF)- and final detected weight
- 2025-03-14 [aa7bbdd] [doc] fix typo in mcxlab, fix mcxpreview format
- 2025-03-12 [6d60f81]*[feat] accelerate mcxpreview using isosurface, must transpose
- 2025-03-10 [2eacfb8] [example] fix rf replay script to use .jdat output, fix #239
- 2025-03-06 [4e02a5b] Add object files to gitignore
- 2025-03-06 [c7df8d9] Fix memory error by unifying handling of otRF and otRFmus
- 2025-03-06 [7e7d88b] Fix function name
- 2025-03-06 [5f7d9c6] Fix compliation errors
- 2025-02-27 [7f05c3b] Remove redundant ifdef
- 2025-02-27 [c1b7c3c] Implement RFmus calculation
- 2025-02-27 [40882be] Add RFmus output type and start implementing calculation
- 2025-02-27 [7f09134] rename new example
- 2025-02-27 [6599a1c] Added new example functions for RF scattering Jacobians.
- 2025-02-23 [986ec46] [doc] post v2025 release action, close #238