Skip to content

Commit

Permalink
Minor edits on paper.md
Browse files Browse the repository at this point in the history
  • Loading branch information
ilhamv authored Jan 27, 2024
1 parent ef26360 commit 25bce18
Showing 1 changed file with 11 additions and 11 deletions.
22 changes: 11 additions & 11 deletions docs/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,23 +93,23 @@ bibliography: paper.bib
# Summary

How neutrons move through space, angle, energy, and time is important in modeling inertial confinement fusion systems, pulsed neutron sources, and nuclear criticality safety experiments, etc.
This can be modeled with a Monte Carlo simulation, wherein particles with an associated statistical importance are spawned and transported to produce a particle history [@lewis_computational_1984].
This can be modeled with a Monte Carlo simulation, wherein particles with associated statistical importance are spawned and transported to produce a particle history [@lewis_computational_1984].
A particle's path and the specific set of events that occur within its history are governed by pseudo-random numbers, known probabilities (*e.g.*, from material data), and known geometries.
Information about how particles move and/or interact with the system are tallied to construct a histogram solution of parameters of interest with an associated statistical error from the Monte Carlo process.
When simulating dynamic systems, novel numerical methods are required to performantly compute a solution.
We designed Monte Carlo / Dynamic Code (`MC/DC`) to explore these novel numerical methods on modern high performance compute systems.
We avoid the need of a compiled or domain specific language by using the Numba compiler for Python to accelerate and abstract our compute kernels to near compiled code speeds.
We have implemented many novel algorithms using this scheme, and in some verification tests have approached the performance of industry-standard codes at the scale of tens of thousands of processors.
Information about how particles move and/or interact with the system is tallied to construct a histogram solution of parameters of interest with an associated statistical error from the Monte Carlo process.
When simulating dynamic systems, novel numerical methods are required to compute a solution performantly.
We designed Monte Carlo / Dynamic Code (`MC/DC`) to explore these novel numerical methods on modern high-performance compute systems.
We avoid the need for a compiled or domain-specific language by using the Numba compiler for Python to accelerate and abstract our compute kernels to near compiled code speeds.
We have implemented novel algorithms using this scheme and, in some verification tests, have approached the performance of industry-standard codes at the scale of tens of thousands of processors.

# Statement of need

`MC/DC` is a performant rapid methods development platform for novel dynamic neutron transport algorithms on modern high performance compute systems.
`MC/DC` is a performant rapid methods development platform for novel dynamic neutron transport algorithms on modern high-performance compute systems.
It uses the Numba compiler for Python to compile compute kernels to a desired hardware target, including support for graphics processing units (GPUs) [@lam_numba_2015].
`MC/DC` uses `mpi4py` to gain distributed memory parallelism [@mpi4py_2021] and has run at the scale of tens of thousands of processors [@variansyah_mc23_mcdc].
These acceleration and abstraction techniques allow `MC/DC` developers to remain in a pure Python development environment without needing to support compiled or domain specific languages.
These acceleration and abstraction techniques allow `MC/DC` developers to remain in a pure Python development environment without needing to support compiled or domain-specific languages.
This has allowed `MC\DC` to grow from its instantiation less than two years ago into a codebase that supports full performant neutron transport and investigation of novel transport algorithms, with development mostly from relative novices.

Many of the traditionally developed neutron transport codes are export controlled (*i.e.*, are not open source and are difficult to get) and notoriously difficult to install, use, and develop in.
Many of the traditionally developed neutron transport codes are export-controlled (*i.e.*, are not open source and are difficult to get) and notoriously difficult to install, use, and develop in.
Because `MC/DC` is an open source and easily-installable Python package (with a `pip` distribution), it is ideal in an academic environment for both research and education.
This is further assisted by a test suite we have developed for unit, regression, verification and performance tests, most of which run on a continuous integration basis.

Expand All @@ -123,7 +123,7 @@ It also supports some simple domain decomposition, with more complex algorithms
# Future Work

The main `MC/DC` branch currently only supports CPU architectures enabled by Numba (`x86-64`, `arm64`, and `ppc64`) but we are rapidly extending support to GPUs.
We currently have operability on Nvidia GPUs (supported via Numba) and work is ongoing to enable compilation to AMD GPUs.
We currently have operability on Nvidia GPUs (supported via Numba), and work is ongoing to enable compilation to AMD GPUs.
On GPUs `MC/DC` will use the `harmonize` asynchronous GPU scheduler to increase performance [@brax2023].
`harmonize` works by batching jobs during execution such that similar operations get executed at the same time, reducing the divergence between parallel threads running on the GPU at the same time.

Expand All @@ -133,4 +133,4 @@ We will continue to explore novel methods for dynamic neutron transport and will

This work was supported by the Center for Exascale Monte-Carlo Neutron Transport (CEMeNT) a PSAAP-III project funded by the Department of Energy, grant number: DE-NA003967.

# References
# References

0 comments on commit 25bce18

Please sign in to comment.