   #[1]Monte Carlo eXtreme: GPU-based Monte Carlo Simulations

MCXCL - Monte Carlo eXtreme for OpenCL

A GPU-accelerated MC for heterogeneous computing platforms

   This work is described in the following paper

     * Leiming Yu, Fanny Nina-Paravecino, David Kaeli, Qianqian Fang,
       "[2]Scalable and massively parallel Monte Carlo photon transport
       simulations for heterogeneous computing platforms," J. Biomed. Opt.
       23(1), 010504 (2018).

          1. [3]Introduction

          2. [4]Supported Devices and Simulation Speed

          3. [5]Download

                3.1. [6]Binary package

                3.2. [7]Python module

                3.3. [8]Source code

          4. [9]Tutorial

          5. [10]Acknowledgement

1. Introduction

   MCXCL (or MCX for OpenCL) is a high-performance, highly scalable and
   general-purpose Monte Carlo photon transport simulator for biophotonics
   applications. Compared to [11]MCX (implemented with NVIDIA CUDA), MCXCL
   is written in the OpenCL framework, and is capable of launching
   parallel photon simulations on most modern CPUs and GPUs produced by
   many vendors, including NVIDIA, AMD, Intel and Apple.

   The current release is MCX-CL v2026 (3.0 - Juxtaposition). This
   release brings MCX-CL to near feature parity with MCX, including
   split-voxel MC (SVMC), polarized light, RF replay, RF forward and
   adjoint Jacobians, and uses the same input files, command line options
   and output formats (JNIfTI .jnii/.bnii volumes and .jdt/.jdb detected
   photon files) as MCX. For the same seed, MCX and MCX-CL trace the same
   photon paths (with -A 0).

2. Supported Devices and Simulation Speed

   MCXCL is supported on a [12]long list of processors, including NVIDIA
   GPUs, AMD CPUs and GPUs, Intel CPUs and GPUs, and Apple silicon. It
   also runs on CPUs using the open-source OpenCL runtime [13]pocl. A
   comparison between different CPUs/GPUs in [14]3 benchmark problems is
   shown in the below figure (measured in 2017-2018; please see
   [15]https://mcx.space/computebench/ for more recent results). In
   v2026, dynamic photon dispatch and 1-byte label volumes make MCX-CL
   1.2-1.5x faster than the previous release.

   [16]upload:mcxcl_benchmark_0118.png

3. Download

3.1. Binary package

   Pre-compiled MCXCL binary packages (v2026) for Linux/Windows/macOS can
   be [17]downloaded here, or from the [18]GitHub release page. The
   released Linux binaries are built against glibc 2.17 (manylinux2014)
   and run on most Linux distributions released since 2014. The Octave
   mex files of MCXLABCL for Windows and macOS require Octave 10 or newer.

   However, you are highly recommended to download the all-in-one MCX
   Studio package for each platform. MCXCL is part of the suite, together
   with MCX, MMC and the MCX Studio GUI (mcxstudio), which helps one
   design new simulations and review results. On Windows, the suite can
   also be installed using "winget install coti.mcxstudio". The latest
   automatically built packages can be found at [19]the nightly-build
   folder.

3.2. Python module

   The Python binding of MCXCL, pmcxcl, can be installed from [20]PyPI.
   Binary wheels are provided for Linux (x86_64 and aarch64), macOS
   (x86_64 and arm64) and Windows.

 python3 -m pip install pmcxcl pmcx

3.3. Source code

   MCXCL is open-source! You can download the latest source code at
   [21]https://github.com/fangq/mcxcl.

4. Tutorial

   To get started, run "mcxcl -L" to list the supported devices, and then
   run a built-in benchmark, such as "mcxcl -Q cube60". Please see
   README.md for details. Video tutorials on how to use the MCX tools can
   be found [22]here.

   For tutorials to use the command line mcxcl binary, please check out
   the below tutorial:

   [23]https://mcx.space/wiki/index.cgi?Demo/MCXCL

5. Acknowledgement

   We thank the funding support from the National Institutes of Health
   (NIH) under grants R01-GM114365 and R01-CA204443.

References

   1. https://mcx.space/wiki/index.cgi?action=rss
   2. https://doi.org/10.1117/1.JBO.23.1.010504
   3. https://mcx.space/wiki/index.cgi?MCXCL#Introduction
   4. https://mcx.space/wiki/index.cgi?MCXCL#Supported_Devices_and_Simulation_Speed
   5. https://mcx.space/wiki/index.cgi?MCXCL#Download
   6. https://mcx.space/wiki/index.cgi?MCXCL#Binary_package
   7. https://mcx.space/wiki/index.cgi?MCXCL#Python_module
   8. https://mcx.space/wiki/index.cgi?MCXCL#Source_code
   9. https://mcx.space/wiki/index.cgi?MCXCL#Tutorial
  10. https://mcx.space/wiki/index.cgi?MCXCL#Acknowledgement
  11. https://mcx.space/
  12. https://www.khronos.org/conformance/adopters/conformant-products/opencl
  13. https://portablecl.org/
  14. https://github.com/fangq/mcxcl/tree/master/example/benchmark
  15. https://mcx.space/computebench/
  16. https://mcx.space/wiki/upload/mcxcl_benchmark_0118.png
  17. https://mcx.space/wiki/index.cgi?Get
  18. https://github.com/fangq/mcxcl/releases
  19. https://mcx.space/nightly/
  20. https://pypi.org/project/pmcxcl/
  21. https://github.com/fangq/mcxcl
  22. https://mcx.space/wiki/index.cgi?Demo/MCXStudio
  23. https://mcx.space/wiki/index.cgi?Demo/MCXCL
