-
Notifications
You must be signed in to change notification settings - Fork 2
/
README.txt
232 lines (165 loc) · 8.62 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
===============================================================================
_____ _ _ __ __ ____ _____
/ ____(_) | | | \/ |/ __ \ / ____|
| (___ _ _ __ ___ _ __ | | ___| \ / | | | | |
\___ \| | '_ ` _ \| '_ \| |/ _ \ |\/| | | | | |
____) | | | | | | | |_) | | __/ | | | |__| | |____
|_____/|_|_| |_| |_| .__/|_|\___|_| |_|\____/ \_____|
| |
|_|
_ __ _
| |/ /___ _ __ _ __ ___| |
| ' // _ \ '__| '_ \ / _ \ |
| . \ __/ | | | | | __/ |
|_|\_\___|_| |_| |_|\___|_|
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",
}
===============================================================================