-
Notifications
You must be signed in to change notification settings - Fork 2
This is the core computational kernel that captures the primary computational conditions of full featured 3D Method of Characteristics (MOC) simulation applications in the context of full core reactor physics simulations.
ANL-CESAR/SimpleMOC-kernel
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
=============================================================================== _____ _ _ __ __ ____ _____ / ____(_) | | | \/ |/ __ \ / ____| | (___ _ _ __ ___ _ __ | | ___| \ / | | | | | \___ \| | '_ ` _ \| '_ \| |/ _ \ |\/| | | | | | ____) | | | | | | | |_) | | __/ | | | |__| | |____ |_____/|_|_| |_| |_| .__/|_|\___|_| |_|\____/ \_____| | | |_| _ __ _ | |/ /___ _ __ _ __ ___| | | ' // _ \ '__| '_ \ / _ \ | | . \ __/ | | | | | __/ | |_|\_\___|_| |_| |_|\___|_| Version 4 ============================================================================== Contact Information ============================================================================== Organizations: Computational Reactor Physics Group Massachusetts Institute of Technology Center for Exascale Simulation of Advanced Reactors (CESAR) Argonne National Laboratory Development Leads: John Tramm <[email protected]> Geoffrey Gunow <[email protected]> Tim He <[email protected]> Ron Rahaman <[email protected]> Amanda Lund <[email protected]> =============================================================================== What is SimpleMOC-kernel? =============================================================================== SimpleMOC-kernel represents the core computational of a larger application (SimpleMOC). This app was written in order to abstract away much of the complexity of the full application in order to facilitate easier porting of the code and enable more transparent analysis techniques on high performance architectures. The scope of this kernel is essentially the inner-loop of SimpleMOC, i.e., the attentuation of neutron fluxes across an individual geometrical segment. This kernel composes approximately 92% of the walltime of the full application, and is therefore useful for analyzing optimization methods and performance implications for exascale supercomputer architectures. More information can be found in the following publication: http://dx.doi.org/10.1016/j.cpc.2016.01.007 ============================================================================== Architectural Support ============================================================================== SimpleMOC-kernel supports the following architectures: - Multi-threaded CPU - Xeon Phi - NVIDIA Tesla GPU Both the CPU and Phi codes are available in the "cpu" folder of the repository. To enable Phi support, simply set the "MIC" flag in the makefile to yes. The CUDA version of the code is available in the "cuda" folder of the repository. ============================================================================== Quick Start Guide ============================================================================== Download---------------------------------------------------------------------- For the most up-to-date version of SimpleMOC-kernel, we recommend that you download from our git repository. This can be accomplished via cloning the repository from the command line, or by downloading a zip from our github page. Git Repository Clone: Use the following command to clone SimpleMOC-kernel to your machine: >$ git clone https://github.com/ANL-CESAR/SimpleMOC-kernel.git Once cloned, you can update the code to the newest version using the following command (when in the SimpleMOC-kernel directory): >$ git pull Compilation------------------------------------------------------------------- To compile SimpleMOC-kernel with default (serial mode) settings, use the following command: >$ make To disable shared memory (OpenMP) paralleism, set the OpenMP flag to "no" in the makefile before building. See below for more details regarding advanced compilation options. Running SimpleMOC-kernel------------------------------------------------------- To run SimpleMOC-kernel with default settings, use the following command: >$ ./SimpleMOC-kernel For non-default settings, SimpleMOC-kernel supports the following command line options: < CPU Version > Usage: ./SimpleMOC-kernel <options> Options include: -t <threads> Number of OpenMP threads to run -s <segments> Number of segments to process -e <energy groups> Number of energy groups -p <PAPI event> PAPI event name to count (1 only) < GPU Version > Usage: ./SimpleMOC-kernel <options> Options include: -t <threads> Number of OpenMP threads to run -s <segments> Number of segments to process -e <energy groups> Number of energy groups -p <segs per thread> Number of segments per CUDA Block If not options are specified, then a default set of parameters will automatically be run. These parameters reflect the approximate per node work load for a full core reactor simulation (the the number of geometry segments has been signficantly reduced to reduce runtime while preserving the computational profile). ============================================================================== Advanced Compilation, Debugging, Optimization, and Profiling ============================================================================== There are a number of switches that can be set at the top of the makefile to enable OpenMP parallelism, along with more advanced compilation features. Here is a sample of the control panel at the top of the makefile: < CPU Version > COMPILER = intel OPENMP = yes OPTIMIZE = yes DEBUG = no PROFILE = no PAPI = no MIC = no Explanation of Flags: COMPILER <gnu, intel> - This selects your compiler. OpenMP - Enables OpenMP support in the code. By default, the code will run using the maximum number of threads on the system, unless otherwise specified with the "-t" command line argument. OPTIMIZE - Adds compiler optimization flag "-O3" and other optimizations DEBUG - Adds the compiler flag "-g". PROFILE - Adds the compiler flag "-pg". PAPI - Enables PAPI support in the code. You may need to alter the makefile or your environment to ensure proper linking with the PAPI library. See PAPI section below for more details. MIC - Enables Intel Xeon Phi (MIC) native mode compilation. < GPU Version > COMPILER = nvcc OPTIMIZE = yes DEBUG = no PROFILE = no Explanation of Flags: COMPILER <nvcc> - This selects your compiler (Nvidia is only one supported). OPTIMIZE - Adds compiler optimization flag "-O3" and other optimizations. DEBUG - Adds the compiler flag "-g". PROFILE - Adds the compiler flag "-pg". =============================================================================== SimpleMOC-kernel Strawman Reactor Defintion =============================================================================== For the purposes of simplicity this mini-app uses a conservative "strawman" reactor model to represent a good target problem for full core reactor simualations to be run on exascale class supercomputers. Arbitrary user-defined geometries are not supported. =============================================================================== Citing SimpleMOC-kernel =============================================================================== Papers citing SimpleMOC-kernel should in general refer to: John R. Tramm, Geoffrey Gunow, Tim He, Kord S. Smith, Benoit Forget, Andrew R. Siegel, (2016) "A task-based parallelism and vectorized approach to 3D Method of Characteristics (MOC) reactor simulation for high performance computing architectures", Computer Physics Communications, Volume 202, Pages 141–150, (https://doi.org/10.1016/j.cpc.2016.01.007). The bibtext entry for this paper is given below: @article{Tramm2016, title = "A task-based parallelism and vectorized approach to 3D Method of Characteristics (MOC) reactor simulation for high performance computing architectures", journal = "Computer Physics Communications", volume = "202", pages = "141 - 150", year = "2016", issn = "0010-4655", doi = "https://doi.org/10.1016/j.cpc.2016.01.007", url = "http://www.sciencedirect.com/science/article/pii/S0010465516000266", author = "John R. Tramm and Geoffrey Gunow and Tim He and Kord S. Smith and Benoit Forget and Andrew R. Siegel", } ===============================================================================
About
This is the core computational kernel that captures the primary computational conditions of full featured 3D Method of Characteristics (MOC) simulation applications in the context of full core reactor physics simulations.
Resources
Stars
Watchers
Forks
Packages 0
No packages published