MCX is an open-source software package for simulating photon propagation inside arbitrarily 3D complex media. It is widely used among the bio-photonics community for developing innovative optical imaging methods. Because of the accuracy and generality of the Monte Carlo (MC) algorithm, MCX is one of the most accurate and quantitative photon simulators and is often used to provide the "gold-standard" solutions.
Since the initial publication in 2009, the original MCX paper has accrued over 290 citations. It has been successfully applied in studies of human brains functions, cancer imaging, as well as the development of novel imaging methods, such as photoacoustic imaging, fluorescence tomography, laminar optical tomography, diffuse optical tomography and more.
High computational efficiency is vital to the wide-spread utility of MCX. With the GPU acceleration, MCX is one of the fastest photon transport simulators known to-date. Yet, with the rapid advance in GPU architecture, we strongly believe that signficant enhancement of computational efficiency is possible.
In this challenge, we invite all CUDA programmers and GPU researchers around the world to help us find inefficient codes and further improve MCX computational efficiency. We encourage innovations in both algorithms and programming strategies, particularly those tailored to achieve high performance on NVIDIA GPUs.
For each round of the challenge, we publish a baseline code. Anyone who can improve the code simulation speed by significant portion (>50%) will receive cash award.
Please fork our Github branch, entitled "speedchallenge_base1" in the mcx git repository, as the baseline code.
https://github.com/fangq/mcx/tree/speedchallenge_base1
To fork, please click on the "Fork" button on the right-top of the above page. You may then modify/optimize the mcx code inside your forked branch. Once you have completed your code optimization and verified the speed improvement, you may submit your changes to the upstream authors by either a "pull request", or submitting an Issue tracker entitled "MCX Speed Challenge - your name".
The upstream developers will review & test your updated software. If the updated software satisfies all the requirements, as specified in the Rules section below, a cash award will be announced and mailed to the participant.
In the event that a valid improvement is accepted, the upstream author may update the base code to the optimized software, and start a new round of the challenge.
We provided 3 benchmark problems to serve as the reference in simulation speed. To run these standard benchmarks, you need to first compile MCX to generate executable. If you are running Linux, you may simply type "make" inside the mcx/src folder. Once the binary is generated, you can then navigate into the mcx/example/benchmark folder, and run the benchmark scripts run_benchmark{1,2,3}.sh.
The rules to determine the validity of a submission include
The cash award will be made with the following rules:
The Round 1 baseline code simulation speed for the 3 provide benchmarks are listed below for your reference:
GPU | benchmark 1 | benchmark 2 | benchmark 3 |
---|---|---|---|
GTX 980Ti | 29146 + | 15731 | 19813 |
GTX 590-1 | 3517 | 2194 | 3783 |
================================================= | |||
Desired % Absorption | 17.7% | 27.0% | 18.7% |
+ speed is measured in photon/ms, reported near the bottom of the MCX command line log.
The participants of this challenge must accept the below terms in order to receive the award:
The upstream authors have the following responsibilities: