Showing revision 2

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-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
Powered by Habitat