Skip to content

Releases: fangq/mcx

MCX v2024.2 (Interstellar Ion)

15 Mar 22:23
Compare
Choose a tag to compare

Monte Carlo eXtreme (MCX) - CUDA Edition

v2024.2

Download

What's New

MCX v2024.2 contains both major new features and critical bug fixes.
It is a strongly recommended upgrade for all users.

Specifically, MCX v2024.2 received three important new features:

  • user-defined photon launch angle distribution (#13)
  • simulate multiple sources in a single session (#163)
  • per-voxel mua/mus/g/n format support (#203)

Similar to the user-defined phase-function feature included in
MCX v2023, the first feature allows users to define the zenith angle distribution for
launching a photon, relative to the source-direction vector, also via
a discretized inverse CDF (cumulative distribution function).
In MATLAB/Octave, they can be set as cfg.invcdf or cfg.angleinvcdf,
respectively. We provided ready-to-use demo scripts in
mcxlab/examples/demo_mcxlab_phasefun.m and demo_mcxlab_launchangle.m.

The second feature allow users to specify more then one sources of the
same type when defining srcpos, srcdir, srcparam1 and srcparam2.
Each source can have independent weight controled by the 4th element of srcpos.

Aside from new features, a severe bug was discovered that affects all
pattern and pattern3d simulations that do not use photon-sharing,
please see

#212

Because of this bug, MCX/MCX-CL in older releases has been simulating squared
pattern/pattern3d data instead of the pattern itself. If your simulation
uses these two source types and you do not use photon-sharing (i.e. simulating
multiple patterns together), please upgrade your MCX/MCX-CL and rerun your
simulations. This bug only affect volumetric fluence/flux outputs; it does not
affect diffuse reflectance outputs or binary patterns.

It also includes a bug fix from #195 regarding precision loss when
saving diffuse reflectance.

We want to thank Haohui Zhang for reporting a number of critical issues
(#195 and #212), Liam Keegan for contributing a patch
to extend the slit source (#214). ShijieYan and fanyuyen have also contributed
to the bug fixes and improvements.

The detailed updates can be found in the below change log

  • 2024-03-13 [abdee14] [bug] fix multi-source replay bug, close #215
  • 2024-03-11 [9250a0d] [doc] make final doc update, bump pmcx to v0.3.2
  • 2024-03-10 [4e7f404] [ci] revert to windows-2019, add help info for #214, add note on nvidia-uvm
  • 2024-03-10 [2750d70] [ci] choco install is failing on Windows, see actions/runner-images#9477
  • 2024-03-10 [7b6e0e0] [optimize] cut hyperboloid gaussian register use from 15 to 3, #127,#214
  • 2024-03-10 [a2279d6] [optimize] reduce gaussian slit register use from 9 to 2, #214
  • 2024-03-08 [4708e10] [doc] Create pull_request_template.md
  • 2024-03-08 [14ca45d] [feat] use 'make register' to report register counts in the Makefile
  • 2024-03-07 [411a007] [feat] add gaussian broadening to slit source (contributed by Liam Keegan, #214)
  • 2024-03-04 [1e6c403] [doc] update instructions on running mcx on hybrid GPU Linux laptops
  • 2024-03-04 [0344d84] [bug] fix cuda core count for Ada and Blackwell
  • 2024-02-27 [558dbab] [pmcx] bump pmcx to 0.2.12 after fixing critical bug #212
  • 2024-02-27 [8e03878] *[bug] critical: fix double-multiplication of pattern launched weight, fix #212
  • 2024-02-23 [61ae0b8] [bug] fix detid value #209
  • 2024-02-23 [90e2419] [bug] fix pmcx dettpsf overwrites input bug
  • 2024-02-21 [744fba2] [bug] update srcparam2 after volume preprocessing close #206
  • 2024-02-18 [dbb23be] [ci] test removing lazhelphtml.pas to avoid error on linux/macos runners
  • 2024-02-18 [4c88de2] [ci] test fix for lazarus 3.0 build error on macos action
  • 2024-02-18 [54f732e] [mcxcloud] support backup servers, support x/y/z slice view and time-gates
  • 2024-02-16 [8a8ff90] [ci] install libomp before downgrade xcode
  • 2024-02-16 [99ca38f] [ci] test libomp error on macos runners
  • 2024-02-13 [cb9b6c2] [doc] update openjdata to neurojson
  • 2024-02-04 [007ecce] [feat] accept 3-element srcparam1/srcparam2 in mcxlab/pmcx
  • 2024-01-23 [20b0aa2] [minor] debug addlog callback error
  • 2024-01-23 [f63f73b] [bug] fix chrome webpage error messages
  • 2024-01-11 [73fe834] [mcxcloud] add the missing flag to show optional json fields
  • 2024-01-01 [0eb1a48] [doc] update changelog
  • 2024-01-01 [4232764] [mcxlab] add speed comparison between different media formats
  • 2024-01-01 [3bca606] [minor] fix typo
  • 2024-01-01 [51003bc] *[format] automatic format all matlab script with miss_hit
  • 2024-01-01 [9951dd8] [minor] update copyright year
  • 2024-01-01 [0f48b8f] [format] update source unit header info
  • 2024-01-01 [6707eaa] [bug] fix detp output bug after adding srcid, #163
  • 2024-01-01 [49b5cef] [ci] update lazarus on windows to avoid build crash
  • 2024-01-01 [9dc832d] *[feat] support --srcid to simulate all, one or separate sources, #163
  • 2023-12-31 [f5b4aaa] [minor] fix file name spelling
  • 2023-12-30 [7e1aec0] *[feat] simulate multiple sources, close #163
  • 2023-12-29 [59f18a7] *[feat] complete per-voxel mua/mus/g/n format support, close #203
  • 2023-12-29 [1e3b031] [feat] initial implementation of mua/mus/g/n all float format
  • 2023-12-29 [1100e36] [bug] fix mcx2json bug when exporting 4D vol, fix #200
  • 2023-12-17 [9831c7e] [debug] print jdata compression message inside matlab
  • 2023-11-27 [28e5101] [pmcx] bump pmcx version to 0.2.7
  • 2023-11-27 [fae5b72] [pmcx] typecast traj.id from float to uint32, fix #199
  • 2023-11-16 [4eec905] [mcxlab] add demo script comparing conv vs direct area src
  • 2023-11-10 [6771752] [ci] fix matlab mex error after mingw64 was removed, matlab-actions/setup-matlab#75
  • 2023-11-08 [f4aec48] [ci] test conda command to install octave on mac
  • 2023-11-08 [c976cbf] [ci] brew refuses to install octave, switch to conda
  • 2023-11-07 [325a522] [release] post v2023 release action
  • 2023-11-07 [a710ab3] allow converting integer cfg.vol to json
  • 2023-10-31 [d6c64e4] [test] fix rng test after make double
  • 2023-10-30 [08361eb] [pmcx] bump pmcx to v0.2.6 with dref fix #195
  • 2023-10-30 [9220578] *[bug] apply #41 like 2xfloat-buffer for dref accumulation, fix #195
  • 2023-10-24 [961d059] pattern json data rstrict to single,set show_opt_in option
  • 2023-10-24 [5f130fc] use 2d pattern by default
  • 2023-10-24 [db608f7] use jq to format json schema; add Source.Pattern in schema
  • 2023-10-14 [4c365f9] update zh-cn translation
  • 2023-10-12 [8d23726] fix windows ci error
  • 2023-10-12 [2904cc3] avoid error when compressing binaries
  • 2023-10-12 [2ebe3de] include language locale files in github CI build
  • 2023-10-12 [5782cff] enable DefaultTranslator for i18n support in mcxstudio
  • 2023-10-11 [833d117] add compiled mo locale file
  • 2023-10-11 [ad298c1] add initial translation for simplified Chinese
  • 2023-10-11 [aa15780] add strings from additional forms
  • 2023-10-10 [14285a0] *prepare for adding i18n support
  • 2023-10-10 [c5496ac] *force invcdf/angleinvcdf even count of float, reapply 53d7ac0, fix #193
  • 2023-10-09 [ca1bf2b] use focal-length to select interpolation or discrete mode, #129
  • 2023-10-08 [be8b8c3] *support user-defined launch angle profile, fix #129
  • 2023-10-03 [2ad9307] update winget package files to the v2023 release
  • 2023-10-03 [26ede84] rename winget package file
  • 2023-10-03 [2e71a51] treat cfg->bc as a null-ending string, #191 #192
  • 2023-10-03 [68db492] make cfg->bc a null terminated string
  • 2023-10-02 [35170f9] Merge pull request #192 from lkeegan/pmcx_bc_overflow_error
  • 2023-10-02 [3c77170] Fix buffer overflow error when bc has 12 characters

MCX v2023 (Heroic Hadron)

30 Sep 02:18
Compare
Choose a tag to compare

Monte Carlo eXtreme (MCX) - CUDA Edition

v2023

Download

What's New

MCX v2023 is a milestone release since v2020 released 3 years ago. It contains all
the new features introduced in the two previous unofficial releases, v2022.10 and v2021.2,
along with extensive continuous integration (CI) development and numerous bug fixes.

Specifically, MCX v2023 officially ships a major new feature - split-voxel MC (SVMC),
published in Biomedical Optics Express by Shijie Yan and Qianqian Fang, see
Yan2020 for details.
Shortly, SVMC provides a level of accuracy close to mesh-based MC (MMC) in modeling
curved boundaries but it is 4x to 6x faster than MMC. Several demo scripts of SVMC
can be found in the MCXLAB package under examples/demo_svmc_*. In addition, MCX v2023
supports GPU-based polarized light simulation, see our JBO paper
Yan2022. Moreover, an "RF replay"
algorithm was implemented by Pauliina Hirvi et al. to create frequency-domain (RF)
Jacobians for both amplitude and phase components. Please read the details in
Hirvi2023. This release
also includes both the web-client and server scripts for MCX Cloud - an in-browser MC
simulator as we reported in Fang2022. Lastly, MCX
v2023 provides an official Python mcx module (pmcx) to run stream-lined MCX simulations
in Python, offering mcxlab-like interface.

Starting in MCX v2023, we have completed the migration from MCX-specific binary output
formats (.mc2/.mch) to human-readable, extensible and future-proof JSON-based portable
data formats defined by the NeuroJSON project. The NeuroJSON
project aims at simplify scientific data exchange using portable data formats that are
readable, searchable, shareable, can be readily validated and served in the web and cloud.
The NeuroJSON project is also led by MCX's author, Dr. Qianqian Fang, funded by the
US NIH U24-NS124027 grant.

As a result of this migration, the MCX executable's default output formats are now
.jnii for volumetric output data, and .jdat for detected photon/trajectory data.
Both data formats are JSON compatible. Details on how to read/write these data files
can be found below.

In summary, v2023 is packed with exciting updates, including

  • Introduced Split voxel MC (SVMC) to accurately model curved boundaries
  • GPU polarized light modeling (Stokes) with 900x speedup
  • RF replay to build frequency-domain Jacobians for amplitude and phase
  • Web-based MCX Cloud platform including web-client and server scripts
  • pymcx - an mcxlab-like Python module for running MCX simulations in Python
  • Added Debian/Ubuntu packages for easy installation
  • Added a unified command line interface, photon, to call mcx/mcxcl/mmc
  • Fine-tuned Windows installer
  • Extensively developed Github Action for automated building and packaging of mcx
  • Adopted standardized NeuroJSON JNIfTI and JData formats to ease data exchange
  • New source types: hyperboloid and ring (annulus,annulus sector)

A detailed list of updates is summarized below (key features marked with “*”):

Updates since v2022.10:

  • 2023-09-22 [9185b5d] fix 64bit macos gui crash, #184
  • 2023-09-21 [393c620] fix valgrind warnings
  • 2023-09-20 [1adb6c6] * disable OpenGL functionalities when building 64bit mac, fix #184
  • 2023-09-19 [9a5dd5b] update octave package files
  • 2023-09-17 [9e9e699] update mcx command cheatsheet
  • 2023-09-17 [ad5a1dd] update all documentation, bump pmcx to v0.1.3
  • 2023-09-17 [5b8a06f] add comments to nightly build script for deployment
  • 2023-09-16 [d2a2ae3] update deploy script after reformat
  • 2023-09-15 [387df65] link libomp.a on mac
  • 2023-09-15 [bf6843f] simplify linkopt
  • 2023-09-15 [4ee145e] update help info
  • 2023-09-13 [ffc8ab0] * support ASCII escape code in Windows terminals
  • 2023-09-12 [24bb9e1] add path to lazbuild
  • 2023-09-12 [6820c04] build mcxstudio on mac
  • 2023-09-12 [9f3c3c2] print verbose info on mac
  • 2023-09-12 [48d4f2f] test macos-12 runner
  • 2023-09-11 [57519b9] force -std=c++11 to build oct on older gcc
  • 2023-09-07 [24c3533] remove redundant functions in mcxlab
  • 2023-09-05 [53e2681] update pmcx after fixing the regression due to #164
  • 2023-09-04 [0b98843] * fix regression caused by #164 for mus=0 region patch in #164 breaks https://github.com/fangq/mmc/blob/master/mmclab/example/demo_dualmesh_output.m
  • 2023-09-04 [287671b] Merge pull request #182 from fangq/ringsrc
  • 2023-09-03 [ad6ff4c] * compact implementation of ring source, close #181
  • 2023-09-01 [b0bad9f] renormalize dir vector after each rotation, suggested by @ShijieYan
  • 2023-09-01 [4fe8e43] highlight link and version with ascii color
  • 2023-08-28 [1a2f291] fix macos nightly build
  • 2023-08-27 [2a5f27c] fix ci build
  • 2023-08-27 [b9f22ad] print code name, print min CUDA arch support
  • 2023-08-25 [f23188b] Update pmcx jupyter notebook
  • 2023-08-25 [0be475b] bump pmcx version to 0.1.1 to fix critical bug #180
  • 2023-08-25 [eaf31de] * [bug] critical! pmcx assumes incorrect default focal length, fix #180
  • 2023-08-25 [ddbbaf3] * [bug]: fix default outputformat when parsing json input, fix #179
  • 2023-08-24 [acfea7d] allow to link with libomp on macos with clang
  • 2023-08-21 [88eba94] fix macos mcx package path
  • 2023-08-21 [1c9efee] adjust cmake build path
  • 2023-08-21 [a2e73b9] add openmp to matlab mex
  • 2023-08-21 [f1d3829] add NO_IMPLICIT_LINK_TO_MATLAB_LIBRARIES in cmake
  • 2023-08-20 [4db668a] fix python windows build error
  • 2023-08-20 [ec119b6] bump pmcx version number, rebuild python module
  • 2023-08-19 [a0a2a9b] * add pmcx utility functions and its test by Ivy Yen
  • 2023-08-15 [73dae89] update pip version
  • 2023-08-15 [d2ff843] use pip3 in check-pypi-upload.sh
  • 2023-08-15 [4f9e278] use UPLOAD_TO_PYPI flag as deploy condition
  • 2023-08-15 [c6d4258] limit travis to only build on master
  • 2023-08-15 [4775c4f] rearrange folder in travis
  • 2023-08-15 [18255c7] install missing twine, move python files to top level
  • 2023-08-15 [9255345] try uploading python macos module from travis
  • 2023-08-12 [af3d386] fix remaining mc2 format flag
  • 2023-08-12 [3187ece] * switch from custom mc2/mch formats to jnii and jdat as default
  • 2023-08-12 [780c7ab] support mcxlab('version'), let pmcx to read 1D detpos,prop,polprop
  • 2023-08-12 [aa9b2f4] update documentation, prepare for v2023 release
  • 2023-08-07 [ac893cd] * mcxplotvol: allow keeping x/y/z slice when switching between 4th dimension
  • 2023-08-07 [9aaba97] fix photon sharing 0 output issue in negative patterns
  • 2023-08-05 [da0beda] padding -0 instead of 0 when saving dref with mua_float medium
  • 2023-08-04 [82367f0] simplify dref/flux separation
  • 2023-08-04 [97fff3e] update zmatlib, use miniz, drop zlib for easy deployment
  • 2023-08-03 [4fbb4d6] bump pmcx version to 0.0.14
  • 2023-08-03 [aaedf35] handle mirror bc in the reflection code
  • 2023-08-03 [198cd34] * initial support of negative source and negative-patterns some test still fails, but feature is mostly working, need more work
  • 2023-07-27 [081c382] parse outputtype in json2mcx
  • 2023-07-21 [87167cb] simplify mua->0 approximation, drop high order term, #164
  • 2023-07-21 [f063fd6] disable macos runner, macos no longer supports CUDA see actions/runner-images#7838
  • 2023-07-21 [3067a26] fix incorrect handling of near-zero mus, fix #174, fix test
  • 2023-06-30 [ac06b05] CI: compress with upx on Linux
  • 2023-06-29 [527a5cc] add header, format with black, update action runners, #172
  • 2023-05-21 [540931d] * support trajectory-only mode with debuglevel=T
  • 2023-05-20 [0100212] * mcxplotphotons: plotting photon tracks with patch and show weights
  • 2023-05-20 [615af1b] avoid recursion and segfault when resetting device
  • 2023-05-16 [c327541] add demo to build RF Jacobians using replay, by Pauliina Hirvi
  • 2023-05-05 [bd44f65] reformat pmcx python units with black
  • 2023-05-05 [c12310b] added cwdref function to compute CW diffuse reflectance
  • 2023-05-05 [0bd643e] added detweight function (using only numpy) to the utils.py in pmcx
  • 2023-05-04 [31c0fa3] fix incorrect stat.unitinmm output
  • 2023-04-29 [0c6b358] use svg vector graphs in mcxlab tutorial
  • 2023-04-29 [bed8f08] Update plots with GPU runtime outputs
  • 2023-04-29 [688ac78] Support mcxlabcl for non-GPU runtime on colab, add srctype tutorial
  • 2023-04-28 [4f53e12] add examples on getting trajectory data
  • 2023-04-27 [f271501] Update mcxlab jupyter notebook based tutorial
  • 2023-04-27 [be5a420] * add jupyter-notebook based mcxlab tutorial
  • 2023-04-26 [eb68720] make static linking default on Windows
  • 2023-04-25 [e315dfe] fix incorrect comment regarding gaussian src, fix #165
  • 2023-04-16 [b78c4e3] fix inaccurate output unit for energy output time
  • 2023-04-15 [2fd3594] accept jobs submitted from https://mcx.space/cloud
  • 2023-04-15 [7515611] * fix mcxcloud job max duration bug, kill runtime>1min
  • 2023-04-13 [70b3b5e] Add photon replay demo codes for pmcx in jupyter notebook
  • 2023-04-13 [855aa40] pmcx: support photon replay, accept detphotons input
  • 2023-04-13 [8a49fe3] switch from cmake back to Makefile
  • 2023-04-01...
Read more

MCX v2022.10 - Special Edition for MCX 2022 Training Workshop

28 Sep 21:58
Compare
Choose a tag to compare

Monte Carlo eXtreme (MCX) - CUDA Edition

v2022.10

  • Author: Qianqian Fang (q.fang at neu.edu)
  • License: GNU General Public License version 3 (GPLv3)
  • Version: 1.9.7 (v2022.10, Glossy Gluon)
  • Website: http://mcx.space

MCX v2022.10 is a special release with only limited deployment to MCX 2022 (fNIRS 2022, Boston, Oct 2022) trainees.
The source code that was used to build the release package can be found at the bottom of this release.

To download the packages created for this release, please follow the registration link at https://mcx.space/register

What's New

MCX v2022.10 introduces a major new feature - split-voxel MC (SVMC), published in
Biomedical Optics Express recently by Shijie Yan and Qianqian Fang, see
Yan2020 for details.
Shortly, SVMC provides a level of accuracy close to mesh-based MC (MMC) in modeling
curved boundaries but it is 4x to 6x faster than MMC. Several demo scripts of SVMC
can be found in the MCXLAB package under examples/demo_svmc_*. In addition, MCX v2022.10
supports GPU-based polarized light simulation, see our JBO paper
Yan2022. This release also includes
both the web-client and server scripts for MCX Cloud - an in-browser MC simulator
as we reported in Fang2022. Moreover, MCX
v2022.10 provides an official pymcx module to run stream-lined MCX simulations in
Python, offering mcxlab-like interface.

  • Introduced Split voxel MC (SVMC) to accurately model curved boundaries
  • GPU polarized light modeling (Stokes) with 900x speedup
  • Web-based MCX Cloud platform including web-client and server scripts
  • pymcx - an mcxlab-like Python module for running MCX simulations in Python
  • Added Debian/Ubuntu packages for easy installation
  • Added a unified command line interface, photon, to call mcx/mcxcl/mmc
  • Fine-tuned Windows installer
  • Support CMake in Travis-CI automation

A detailed list of updates is summarized below (key features marked with “*”):

  • 2022-10-05 [dc42951] prevent nan where log(rand) is calculated
  • 2022-10-05 [63ffc1e] fix nan in detected photon data when using hyperboloid src, see https://groups.google.com/g/mcx-users/c/vyfHbzEO-0M/m/JzlpEZ3TBwAJ
  • 2022-09-07 [e281f3e] allow to preview continuously varying medium (4D cfg.vol)
  • 2022-08-19 [10330ef] fix windows compilation error
  • 2022-08-17 [bbb4425] prevent zero-valued mus creating nan, #133
  • 2022-08-12 [51f42f5] fix mcxlab log printing caused by commit f3beb75
  • 2022-08-12 [7058785] Lambertian launch for all focusable sources when focal-length is -inf
  • 2022-07-28 [6d64c0b] fix incorrect flag for skipvoid
  • 2022-06-27 [3d4fb26] partially fix rf replay
  • 2022-06-04 [8af3631] fix line source
  • 2022-05-22 [149b1ef] make code compile on windows
  • 2022-05-20 [e87bb49] use consistent file naming convention, remove outdated units
  • 2022-05-20 [45d84d3] complete reformat source code using astyle, always run make pretty before committing
  • 2022-05-20 [aff8ff0] add source code formatting option
  • 2022-05-20 [f3beb75] use MATLAB_MEX_FILE to determine container environment
  • 2022-05-18 [1295024] fix incorrect trajectory id, fix #147
  • 2022-05-18 [ccd2deb] fix macro condition
  • 2022-05-18 [6f4ee88] use MCX_CONTAINER and env macros to replace extra PYMCX_CONTAINER
  • 2022-05-16 [6fa1580] avoid using clear all and ~ in return value
  • 2022-05-16 [21f9bd7] merge changes with @ShijieYan's svmc fix
  • 2022-05-16 [8b2740f] debugging svmc crashes
  • 2022-05-16 [7582a6e] fix svmc issue after patch f8da832
  • 2022-05-15 [188ac2a] Added Pybind11's license info to README.md.
  • 2022-05-15 [86529cf] Added PYMCX_CONTAINER compilation macro. Added support for extracting MCX_ERRORs like Mex + author fix.
  • 2022-05-15 [b58ad88] Renamed gpu_info to gpuinfo for consistency.
  • 2022-05-15 [0582974] changed issaveref to accept ints.
  • 2022-05-15 [1cf1b3b] Added py::value_error handling + additional error checking for volume assurance.
  • 2022-05-15 [7df8938] Added better + more informative exception handling for pymcx.
  • 2022-05-15 [6a741e8] Changed reinterpret_casts to direct object construction + added the stat dict to the output dict + defined PYBIND11_DETAILED_ERROR_MESSAGES for easier debugging.
  • 2022-05-15 [e4547ba] add pybind11 as submodule to build pymcx
  • 2022-05-13 [f8da832] fix cyclic bc demo and srctype demo error, svmc still not working
  • 2022-05-13 [4bd3974] report register counts on sm_60 using nvcc --ptxas-options=-v
  • 2022-05-13 [e8f6a2d] fix cfg.unitinmm does not exist error
  • 2022-05-13 [447975f] complete dda ray-marching, cube60 benchmark gain 40% speed, others are similar
  • 2022-05-12 [b873f90] add integer voxel indices to avoid nextafter
  • 2022-05-11 [32d46cd] merge additional updates from mcxcl version of json2mcx, #139
  • 2022-05-11 [3d6d7df] fix bugs in json2mcx, #139
  • 2022-05-08 [3b1c320] Removed nlhs argument left from Matlab.
  • 2022-05-08 [61cc994] Fixed issue with std::cout and std::cerr flush.
  • 2022-05-06 [d9793e9] Added working setup.py.
  • 2022-05-03 [a3e47c8] Minor fix.
  • 2022-05-02 [c9bedd6] Moved validate_config.
  • 2022-05-02 [5427ece] Working prototype with different volume configs.
  • 2022-05-02 [739b7ea] Moved some stuff to interface-common.cpp.
  • 2022-05-02 [d852a87] Minor bug fixes.
  • 2022-05-01 [f4cd3c3] Added kwargs version of mcx.
  • 2022-05-01 [baa5fdd] Skeleton is done.
  • 2022-04-24 [e919716] Prints GPU info.
  • 2022-04-23 [0c7b6a7] Working interface and CMakeLists.txt file.
  • 2022-04-19 [c710c3c] update ubj parser, update jnifti metadata
  • 2022-04-15 [4033c54] mcxlab bug fix: digimouse atlas voxel size is 0.2mm, not 0.8mm
  • 2022-04-15 [9b17eee] critical bug fix: digimouse atlas voxel size is 0.2mm, not 0.8mm
  • 2022-03-31 [df6c311] Add viewing axis selection
  • 2022-03-25 [04f1565] Add optimized isosurface rendering; add the ability to view cross-sectional slices of geometry
  • 2022-03-23 [200decb] Remove testing files
  • 2022-03-23 [e434553] Remove unnecessary variable
  • 2022-03-22 [ebd5bee] update ubj to support BJData Draft 2, add JNIfTI DataInfo, fix #142
  • 2022-03-21 [6de0855] Enable event-based repainting; re-add shader refinement, remove animation frame bugs; remove unnecessary shader branches and discards
  • 2022-03-19 [7ef65a8] Added event-based repainting; shader optimizations
  • 2022-03-05 [a93f6fa] save user info in local storage to avoid retyping
  • 2022-03-05 [34d9afa] fix SaveDataFlag invisible bug
  • 2022-02-18 [f051314] add missing voxel unit
  • 2022-02-03 [23bf5b2] lowering default photon number so it can be launched on most gpus
  • 2022-01-31 [220d9c2] fix incorrect type for gsmatrix
  • 2022-01-31 [28e20d6] fix windows vs warning
  • 2022-01-29 [6a9ad2f] update mcx_utils to use the Mie interface
  • 2022-01-29 [13679e9] fix compilation issue of mcx_mie.cpp using MSVC, close #138
  • 2022-01-28 [d7daf57] manually resolve complaint in CUDA 9
  • 2022-01-28 [e99edb2] update .travis.yml
  • 2022-01-28 [533c8ce] manually add mcx_mie in Makefile
  • 2022-01-28 [e56b5cb] improve complex arithmetic compatablity with MSVC
  • 2022-01-27 [a0ed0e7] add Mie function modules into cmake
  • 2022-01-27 [c350c67] seperate Mie scattering functions from mcx_utils.h
  • 2022-01-27 [0d51bb7] add missing i detflag in command line
  • 2022-01-27 [9b74e4b] fix: add save detector flag for Stokes vectors
  • 2022-01-26 [077060a] use static_cast in mcxlab so that cfg.vol can be realloc in mcx_shapes
  • 2022-01-26 [8503125] do not reset cfg.vol when rasterizing cfg.shapes
  • 2022-01-26 [3f22070] fix normalization in multiple detector RF replay
  • 2022-01-26 [cdfd468] apply normalization to both real and imaginary jacobain for RF replay
  • 2022-01-26 [87a310e] one can use ~ to ignore fluence output in octave, not in matlab
  • 2022-01-26 [d45f084] allow users to explicitly disable fluence output by accepting cfg.issave2pt
  • 2022-01-25 [376a730] partial fix to RF Jacobian calculation, need verification
  • 2022-01-25 [d6e2b9e] NaN value in mua_float and muamus_float signifies a 0-value voxel
  • 2022-01-24 [c9f2ad9] force threejs version to avoid breaking update in R136
  • 2022-01-14 [51483eb] add template specialization for polarized mode
  • 2022-01-12 [3487dfe] update the example for the polarized MCX
  • 2021-12-15 [b9e046a] fix out of bounds error due to limited precision of R_PI
  • 2021-12-15 [3b10265] fix the built-in example to match the update in e5dfd78
  • 2021-12-15 [dbe17af] no Stoke vector output for unpolarized MCX simulation
  • 2021-12-15 [99293dd] add sanity check for incident Stokes vector
  • 2021-12-13 [f1537bd] no need to check constant memory usage in polarized mode
  • 2021-12-13 [61281ae] use prop.g to return the anisotropy computed from Mie
  • 2021-12-12 [3b0ecc0] fix #133, handling underflowing denorms in float to half conversion for muamus_float
  • 2021-12-11 [979f691] Move scattering matrix from constant memory to global memory
  • 2021-11-29 [5c13f4b] avoid divided by zero on windows cygwin gcc
  • 2021-11-29 [ef57f4b] allow make double to compile
  • 2021-11-28 [0c96fe8] accept JData styled NaN in the JSON input for srcdir
  • 2021-11-26 [a4545a4] fix #131, mcxplotshapes now plots shapes with correct scale
  • 2021-11-04 [2585471] making svmc matlab demos compatible with Octave 5
  • 2021-11-03 [5976811] replace matlab-only function with more portable code
  • 2021-11-01 [37e121c] update preprint version url
  • 2021-10-21 [7a77bf7] display rendering frame rate
  • 2021-10-18 [99592c1] fix: #114 improve robustness to unknown boundry conditions
  • 2021-10-14 [1aa2922] feat: Add one-sheet hyperboloid gaussian beam
  • 2021-10-07 [86d56c2] feat: output prop. along with det. photon profile
  • 2021-10-07 [24f4698] f...
Read more

MCX v2020.9 for Debian packaging

20 Sep 18:27
Compare
Choose a tag to compare
remove empty depends

MCX v2020 (Furious Fermion)

07 Sep 18:56
Compare
Choose a tag to compare

Download

What's New

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 for easy testing and adoption by new users
  • Transition to JSON/JNIfTI input/output files for easy data sharing
  • Exporting simulation as JSON with binary volume data
  • All-in-one Windows installer for MCXStudio/MCX/MMC/MCXCL
  • Automated code building, testing and continuous integration via Travis-CI
  • CMake based compilation and Visual Studio support
  • 1.6x speedup on Pascal GPUs

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*[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
  • 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

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

Extended output data formats

MCX may produces several output files depending user's simulation settings.
Overall, MCX produces two types of outputs, 1) data accummulated within the
3D volume of the domain (volumetric output), and 2) data stored for each detected
photon (detected photon data).

Volumetric output

By default, MCX stores a 4D array denoting the fluence-rate at each voxel in
the volume, with a dimension of NxNyNz*Ng, where Nx/Ny/Nz are the voxel dimension
of the domain, and Ng is the total number of time gates. The output data are
stored in the format of single-precision floating point numbers. One may choose
to output different physical quantities by setting the -O option. When the
flag -X/--saveref is used, the output volume may contain the total diffuse
reflectance only along the background-voxels adjacent to non-zero voxels.
A negative sign is added for the diffuse reflectance raw output to distinguish
it from the fuence data in the interior voxels.

When photon-sharing (simultaneous simulations of multiple patterns) or photon-replay
(the Jacobian of all source/detector pairs) is used, the output array may be extended
to a 5D array, with the left-most/fastest index being the number of patterns Ns (in the
case of photon-sharing) or src/det pairs (in replay), denoted as Ns.

Several data formats can be used to store the 3D/4D/5D volumetric output.

mc2 files

The .mc2 format is simply a binary dump of the entire volumetric data output,
consisted of the voxel values (single-precision floating-point) of all voxels and
time gates. The file contains a continuous buffer of a single-precision (4-byte)
5D array of dimension Ns*Nx*Ny*Nz*Ng, with the fastest index being the left-most
dimension (i.e. column-major, similar to MATLAB/FORTRAN).

To load the mc2 file, one should call loadmc2.m and must provide explicitly
the dimensions of the data. This is because mc2 file does not contain the data
dimension information.

Saving to .mc2 volumetric file is depreciated as we are transitioning towards
JNIfTI/JData formatted outputs (.jnii).

nii files

The NIfTI-1 (.nii) format is widely used in neuroimaging and MRI community to
store and exchange ND numerical arrays. It contains a 352 byte header, followed
by the raw binary stream of the output data. In the header, the data dimension
information as well as other metadata is stored.

A .nii output file can be generated by using -F nii in the command line.

The .nii file is widely supported among data processing platforms, including
MATLAB and Python. For example

jnii files

The JNIfTI format represents the next-generation scientific data storage
and exchange standard and is part of the OpenJData initiative (http://openjdata.org)
led by the MCX author Dr. Qianqian Fang. The OpenJData project aims at developing
easy-to-parse, human-readable and easy-to-reuse data storage formats based on
the ubiquitously supported JSON/binary JSON formats and portable JData data annotation
keywords. In short, .jnii file is simply a JSON file with capability of storing
binary strongly-typed data with internal compression and built in metadata.

The format standard (Draft 1) of the JNIfTI file can be found at

https://github.com/fangq/jnifti

A .jnii output file can be generated by using -F jnii in the command line.

The .jnii file can be potentially read in nearly all programming languages
because it is 100% comaptible to the JSON format. However, to properly decode
the ND array with built-in compression, one should call JData compatible
libraries, which can be found at http://openjdata.org/wiki

Specifically, to parse/save .jnii files in MATLAB, you should use

To parse/save .jnii files in Python, you should use

In Python, the volumetric data is loaded as a dict object where data['NIFTIData']
is a NumPy ndarray object storing the volumetric data.

bnii files

The binary JNIfTI file is also part of the JNIfTI specification and the OpenJData
project. In comparison to text-based JSON format, .bnii files can be much smaller
and faster to parse. The .bnii format is also defined in the BJData specification

https://github.com/fangq/bjdata

and is the binary interface to .jnii. A .bnii output file can be generated by
using -F bnii in the command line.

The .bnii file can be potentially read in nearly all programming languages
because it was based on UBJSON (Universal Binary JSON). How...

Read more

MCX v2019.3 (Ether Dome - beta)

19 Mar 15:57
Compare
Choose a tag to compare

Release Notes for Monte Carlo eXtreme v2019.3 (1.4.8)

Code name: Ether Dome - beta, released on March 18, 2019

Click this link to download MCX v2019.3

Acknowledgement: This software release is made possible with the funding support from the NIH/NIGMS under grant R01-GM114365.

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/

About this release

MCX v2019.3 (code named "Ether dome" - a landmark of Massachusetts General Hospital) contains
numerous improvements developed over the past 7 months, including [[Doc/ChangeLog|a list
of new features and bug fixes]].
If you are currently using a previous release, you are strongly encouraged to upgrade
to the latest version.

In this new release, the most notable update is the support of 4 different boundary
conditions (BCs) - the total absorption BC (use letter "a",like "-b 0"), Fresnel BC (use letter "r",like "-b 1"),
total reflection/mirror BC (use letter "m", new) and cyclic/periodic BC (use letter "c", new). One can specify these BCs
using a new flag --bc (or cfg.bc in MCXLAB). For example, if one defines --bc ccrcca, it
asks mcx to apply a cyclic BC when a photon attempts to escape from plane x=0 (first letter) and x=Nx
(4th letter) - i.e. a photon exits from the x=0 plane re-enters from the x=Nx plane; similarly,
y=0 and y=Ny planes also apply the cyclic BC; for z=0 plane (3rd letter), a photon performs Fresnel
reflection/transmission, just like "-b 1"; on the z=Nz plane, a photon
is immediately terminated if arrive at the first incidence (like -b 0) - i.e. total absorption.
The support to multiple types of boundary conditions allows a user to simulate even more complex
domains.

Another major addition is the built-in 3D volume renderer in MCXStudio. Previously, MCXStudio
relies on external tools such as MATLAB or Octave for rendering simulation outputs. Starting
from this version, MCXStudio has a OpenGL-based built-in 3D volume renderer. One can display
slices across the simulated domain and set transparency threshold.

http://mcx.space/wiki/index.cgi?Demo/MCXStudio

Moreover, we added an MC image denoisier, mcxfilter.m, as part of MCXLAB. We have shown
that applying this filter to MCX's output, one can improve the SNR of the output fluece
by 5dB - equivalent to simulating 3.5x more photons. The details of this work is
reported in the below paper:

[Yuan2018] Yaoshen Yuan, Leiming Yu, Zafer Doğan, Qianqian Fang, " Graphics processing units-accelerated adaptive nonlocal means filter for denoising three-dimensional Monte Carlo photon transport simulations," J. of Biomedical Optics, 23(12), 121618 (2018).

In addition, we have added 4 ready-to-use complex domain examples - Colin27 brain atlas,
USC_19-5 brain atlas, Digimouse, and mcxyz skin-vessel benchmark. The provided sample
data and as well as simulation configurations can be readily used to explore a range
of questions.

Please visit our wiki website (http://mcx.space/wiki/) for more detailed
documentation, demos and tutorials.

What's new compared to v2018

Compared to the previous release (version v2017.7, released in July 2017), MCX v2018 gains the following new features and bug fixes:

Compared to the previous release (version v2018, released in August 2018),
MCX v2019.3 gains the following new features and bug fixes:

  • '''!!key!!''' Support 4 different boundary conditions (total absorption, total reflection/mirror, Fresnel reflection and cylic), controlled independently (--bc/cfg.bc) at 6 facets of the domain
  • '''!!key!!''' Add 4 built-in complex domain examples - Colin27 brain atlas, USC_19-5 brain atlas, Digimouse, and mcxyz skin-vessel benchmark
  • '''!!key!!''' Support isotropic launch for all focuable sources - gaussian, pattern, pattern3d, fourier, disk, fourierx, fourierx2d, and slit - by setting cfg.srcdir(4) to nan
  • '''!!key!!''' Add GPU-ANLM denoiser, mcxfilter.m, to mcxlab to reduce MC fluence noise, detailed in our [Yao2018] paper
  • '''!!key!!''' Initial support of "photon sharing" - a fast approach to simultaneously simulate multiple pattern src/det, as detailed in our Photoncs West 2019 talk by Ruoyang Yao/Shijie Yan [Yao&Yan2019]
  • '''!!key!!''' First release of MCX Viewer - a built in 3D fluence rendering tool in mcxstudio (mcxviewer and mcxshow also provided separately)
  • '''!!key!!''' Output partial scattering event counts in detected photon data, similar to MMC
  • Add CMake support
  • python-based mch file reader (by Shih-Cheng Tu)
  • nightly build compilation script,
  • colored command line output

In the meantime, a number of critical bugs were fixed:

  • fix mcxlab gpuinfo output crash using multiple GPUs
  • disable linking to Intel OMP library (libiomp5) to avoid MATLAB 2016-2017 crash
  • fix mcxlab crash when srcpattern/srcdir/srcpos/detpos are not in double precision
  • fix shared memory allocation size bug
  • add the missing photon exit position in the trajectory output
  • fix mcxlab crash due to racing in multi-threads
  • force g to 1 in region where mus is 0

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.

System requirements

To install MCX version v2019.3, 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

Reference

MCX 1.0 Final (v2018 - Dark Matter)

26 Aug 16:04
Compare
Choose a tag to compare

Release Notes for Monte Carlo eXtreme v2018 (1.0.0)

Code name: Dark Matter, released on August 20, 2018

Click this link to download MCX v2018

Acknowledgement: This software release is made possible with the funding support from the NIH/NIGMS under grant R01-GM114365.

Opening Remarks

After nearly 10 years continuous development, it is our great pleasure to announce that MCX 1.0 (v2018) has finally arrived! This release represents an important milestone for the MCX project, and signifies that MCX has grown from a unique research idea to become a mature, robust, full-featured, and general purpose Monte Carlo simulation platform that empowers thousands of biophotonics researchers around the globe to explore, to teach and to create. This also marks the start of a wonderful new journey where many exciting new ideas, methods, features await ahead.

As of today, our combined registered MCX and MMC user number (with unique emails) has exceeded 1,500, with people coming from every corner of the world. The total download number in the past 7 years has exceeded 22,500 from our Sourceforge site alone. There are over 780 academic publications cited our works, and more than 1,200 questions/replies were received in our mailing lists, subscribed by over 250 active users. We are proud of these achievements and feel deeply honored to contribute, even in a small way, to many ongoing exciting new research, and are committed to continue dedicating our efforts in maintaining and improving our software. We will continue working with every one of you, addressing your concerns and new feature requests, bringing the latest and fastest software to you with transparency and openness.

Today, we celebrate MCX 1.0, we thank all the hard-works from the developers' team, particularly those PhD students who had made MCX a fast and better software - Fanny Nina-Paravecino, Leiming Yu, Ruoyang Yao, Yaoshen Yuan, and Shijie Yan, as well as the continual support and guidance from collaborators, Dr. David Kaeli and Dr. Xavier Intes. We also thank all the valuable feedback received from our users, your bug reports and constructive discussions are crucial for us to improve our software. Last, but not the least, we thank NIH/NIGMS for funding this endeavor. It is not possible for us to get where we are today without this support.

Today, we also kickoff the new development cycle for MCX 2.0! We will continue accelerating our software by taking advantage of emerging GPU architectures, new hardware resources and algorithm optimizations, in the meantime, focusing on usability and broader dissemination.

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/

About this release

MCX v2018 (code named "Dark Matter") contains numerous improvements developed over the past 13 months, including a long list of new features and bug fixes. If you are currently using a previous release, you are urged to upgrade immediately to avoid using incorrect results.

In this new release, the most notable update is an easy-to-download, ready-to-use all-in-one MCXStudio package that combines all MC modeling tools we have developed, including MCX, MMC, MCX-CL, MCXLAB, MMCLAB and MCXLAB-CL. All modules are cleanly organized, fully tested and integrated, and can be called individually from the command line, via mcxstudio GUI or inside MATLAB/Octave. A unified package makes distributing and setting up MCX and associated software easier for a first-time user.

The cross-platform graphical user interface, mcxstudio, as part of the MCXStudio package, also received numerous updates, and was forged over the past year as a result of two MCX Training Workshops (MCX'17 and MCX-OSA'18). This GUI program has served our main tool for training users, and was heavily tested before and during the workshops. The GUI program unified the input parameters of all supported modules (MCX, MMC, MCX-CL) and added built-in domain visualization tool and volume rendering scripts (via MATLAB/Octave). Video tutorials of this tool can be browsed at the below link

http://mcx.space/wiki/index.cgi?Demo/MCXStudio

Three critical bugs have been fixed -

  • one bug (Issues #17,#26,#29,#31) impacts all Windows users by generating \ low-quality random numbers and creating visible artifacts in wide-field simulations,

  • another one (#41) impacts all simulations involving large photon numbers (for example 1e8-1e9) by \ loosing intensity near the source.

  • the other bug impact all wide-field sources located outside of a refractive-index mismatched medium.

All three bugs have broad impact and all users are recommended to upgrade immediately to avoid using erroneous simulations.

Please visit our wiki website (http://mcx.space/wiki/) for more detailed documentation, demos and tutorials.

What's new compared to v2017.7

Compared to the previous release (version v2017.7, released in July 2017), MCX v2018 gains the following new features and bug fixes:

  1. !!key!! mcx: fully validated replay feature (BOE paper in press)
  2. !!key!! mcx: use integer for media data, supporting up to 4000 tissue types (up from 128)
  3. !!key!! mcx: support 2D simulations
  4. !!key!! mcx: support simulations for DCS
  5. !!key!! mcx: added new pattern3d source
  6. !!key!! mcx: support photon number larger than 2^31-1 (new limit 2^63-1)
  7. !!key!! mcx: replay all detectors for full Jacobian using -Y -1
  8. !!key!! mcx: support mirror (perfectly reflecting) boundary condition
  9. !!key!! mcx: add doxygen-format comments for thorough documentation of the source code
  10. !!key!! mcx: positive respin (-r) now means repeat - to run more photons; negative respin means divide
  11. !!key!! mcx, mcxlab: output photon trajectories and save as .mct file
  12. !!key!! mcxlab: avoid "static TLC error" on newer MATLABs
  13. !!key!! mcxlab: display progress bar
  14. !!key!! mcxlab: return detected photon info using sufields
  15. !!key!! mcxlab: mcxpreview for previewing domain settings
  16. !!key!! mcxlab: exporting matlab cfg input to JSON file for mcx binary
  17. !!key!! mcxstudio: domain visualization, unified parameters, high-dpi display support
  18. !!key!! mcxstudio: true remote execution across separate machines
  19. mcxstudio: plot volume using matlab on windows
  20. mcx: fix diffuse reflectance bug - must be performed after boundary reflection
  21. mcx: added new RNG xoroshiro128+
  22. mcxlab: buildin tool to load nifti volumes
  23. mcxstudio: now compatible with mmc and mcxcl
  24. mcx: all important command line flags can be set in the JSON file

In the meantime, a number of critical bugs were fixed:

  1. !!key!! mcx, mcxlab: fixing low-quality random number generator on Windows; impacting all simulations using Windows
  2. !!key!! mcx, mcxlab: fixing high accumulation error when running large number of photons (for example 1e8-1e9)
  3. !!key!! mcx, mcxlab: fixing incorrect energy loss, impacting all wide-field sources
  4. mcx: fix volume mask saving bug
  5. mcxlab: fix mcxlab for octave crash due to an octave bug #48678
  6. mcx: fix crash when saving diffuse reflectance
  7. mcx,mcxlab: fix normalization bug in replayall mode

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 Fermi, Kepler, Maxwell, Pascal and Volta 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 Fermi (Compute Capability 2.0) or newer GPU. If you have an older GPU (CC 1.0 or 1.1), you will have to recompile mcx using "make fast".

The detailed change logs can be found in the ChangeLog and Github commit history pages.

System requirements

To install MCX version v2018, 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 driv...

Read more