Skip to content

Commit 481d3ba

Browse files
authored
add basic support for kripke (#39)
* add basic support for kripke I can add log parsing when it is needed. Signed-off-by: vsoch <[email protected]>
1 parent c9f755b commit 481d3ba

File tree

8 files changed

+636
-13
lines changed

8 files changed

+636
-13
lines changed

.github/workflows/main.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ jobs:
7070
["io-host-volume", "ghcr.io/converged-computing/metric-sysstat:latest", 60], # storage test
7171
["io-fio", "ghcr.io/converged-computing/metric-fio:latest", 120], # storage test
7272
["app-amg", "ghcr.io/converged-computing/metric-amg:latest", 120], # standalone app test
73+
["app-kripke", "ghcr.io/converged-computing/metric-amg:latest", 120], # standalone app test
7374
["app-lammps", "ghcr.io/converged-computing/metric-lammps:latest", 120]] # standalone app test
7475

7576
steps:

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ To learn more:
2020
- Add assertions checking for python tests
2121
- Plotting examples needed for
2222
- io-sysstat
23+
- app-kripke
2324

2425
## License
2526

docs/_static/data/metrics.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@
66
"image": "ghcr.io/converged-computing/metric-amg:latest",
77
"url": "https://github.com/LLNL/AMG"
88
},
9+
{
10+
"name": "app-kripke",
11+
"description": "parallel algebraic multigrid solver for linear systems arising from problems on unstructured grids",
12+
"type": "standalone",
13+
"image": "ghcr.io/converged-computing/metric-kripke:latest",
14+
"url": "https://github.com/LLNL/Kripke"
15+
},
916
{
1017
"name": "app-lammps",
1118
"description": "LAMMPS molecular dynamic simulation",

docs/getting_started/metrics.md

Lines changed: 55 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ The following metrics are under development (or being planned).
77
- [Application Metrics](https://converged-computing.github.io/metrics-operator/getting_started/metrics.html#application)
88
- [Standalone Metrics](https://converged-computing.github.io/metrics-operator/getting_started/metrics.html#standalone)
99

10-
<iframe src="../_static/data/table.html" style="width:100%; height:600px;" frameBorder="0"></iframe>
10+
<iframe src="../_static/data/table.html" style="width:100%; height:650px;" frameBorder="0"></iframe>
1111

1212
All metrics can be customized with the following variables
1313

@@ -18,16 +18,21 @@ All metrics can be customized with the following variables
1818

1919
## Implemented Metrics
2020

21+
Each metric has a link to the type, along with (optionally) examples.
22+
2123
### Performance
2224

2325
These metrics are intended to assess application performance.
2426

2527
#### perf-sysstat
2628

2729
- [Application Metric Set](user-guide.md#application-metric-set)
30+
- *[perf-hello-world](https://github.com/converged-computing/metrics-operator/tree/main/examples/tests/perf-hello-world)*
31+
- *[perf-lammps](https://github.com/converged-computing/metrics-operator/tree/main/examples/tests/perf-lammps)*
2832

2933
This metric provides the "pidstat" executable of the sysstat library. The following options are available:
3034

35+
3136
|Name | Description | Type | Default |
3237
|-----|-------------|------------|------|
3338
| color | Set to turn on color parsing | Anything set | unset |
@@ -62,7 +67,10 @@ for how we use them. If there is an option or command that is not exposed that
6267
6368
These metrics are intended to assess storage volumes.
6469
65-
#### fio
70+
#### io-sfio
71+
72+
- [Storage Metric Set](user-guide.md#application-metric-set)
73+
- *[io-host-volume](https://github.com/converged-computing/metrics-operator/tree/main/examples/storage/google/io-fusion)*
6674
6775
This is a nice tool that you can simply point at a path, and it measures IO stats by way of writing a file there!
6876
Options you can set include:
@@ -81,6 +89,7 @@ This allows for testing storage mounted from multiple metric pods without worryi
8189
#### io-sysstat
8290
8391
- [Storage Metric Set](user-guide.md#application-metric-set)
92+
- *[io-host-volume](https://github.com/converged-computing/metrics-operator/tree/main/examples/tests/io-host-volume)*
8493
8594
This is the "iostat" executable of the sysstat library.
8695
@@ -96,6 +105,7 @@ This is good for mounted storage that can be seen by the operating system, but m
96105
#### network-netmark
97106
98107
- [Standalone Metric Set](user-guide.md#application-metric-set)
108+
- *[network-netmark](https://github.com/converged-computing/metrics-operator/tree/main/examples/tests/network-netmark)* (code still private)
99109
100110
This is currently a private container/software, but we have support for it when it's ready to be made public (networking)
101111
Variables to customize include:
@@ -111,6 +121,9 @@ Variables to customize include:
111121
112122
#### network-osu-benchmark
113123
124+
- [Standalone Metric Set](user-guide.md#application-metric-set)
125+
- *[network-osu-benchmark](https://github.com/converged-computing/metrics-operator/tree/main/examples/tests/network-osu-benchmark)*
126+
114127
Point to point benchmarks for MPI (networking). If listOptions->commands not set, will use all one-point commands.
115128
Variables to customize include:
116129
@@ -200,6 +213,7 @@ Here are some useful resources for the benchmarks:
200213
#### app-lammps
201214

202215
- [Standalone Metric Set](user-guide.md#application-metric-set)
216+
- *[app-lammps](https://github.com/converged-computing/metrics-operator/tree/main/examples/tests/app-lammps)*
203217

204218
Since we were using LAMMPS so often as a benchmark (and testing timing of a network) it made sense to add it here
205219
as a standalone metric! Although we are doing MPI with communication via SSH, this can still serve as a means
@@ -223,6 +237,9 @@ anticipating that you as a user would want total control.
223237
224238
#### app-amg
225239
240+
- [Standalone Metric Set](user-guide.md#application-metric-set)
241+
- *[app-amg](https://github.com/converged-computing/metrics-operator/tree/main/examples/tests/app-amg)*
242+
226243
AMG means "algebraic multi-grid" and it's easy to confuse with the company [AMD](https://www.amd.com/en/solutions/supercomputing-and-hpc) "Advanced Micro Devices" ! From [the guide](https://asc.llnl.gov/sites/asc/files/2020-09/AMG_Summary_v1_7.pdf):
227244
228245
> AMG is a parallel algebraic multigrid solver for linear systems arising from problems on unstructured grids. The driver provided for this benchmark builds linear systems for a 3D problem with a 27-point stencil and generates two different problems that are described in section D of the AMG.readme file in the docs directory.
@@ -273,22 +290,48 @@ More likely you want an actual problem size on a specific number of node and tas
273290
run a larger problem and the parser does not work as expected, please [send us the output](https://github.com/converged-computing/metrics-operator/issues) and we will provide an updated parser.
274291
See [this guide](https://asc.llnl.gov/sites/asc/files/2020-09/AMG_Summary_v1_7.pdf) for more detail.
275292
276-
## Examples
293+
#### app-kripke
277294
278-
The following examples are provided alongside the operator. Each directory has a README with complete instructions for usage.
295+
- [Standalone Metric Set](user-guide.md#application-metric-set)
296+
- *[app-kripke](https://github.com/converged-computing/metrics-operator/tree/main/examples/tests/app-kripke)*
279297
280-
- [perf-hello-world](https://github.com/converged-computing/metrics-operator/tree/main/examples/tests/perf-hello-world)
281-
- [perf-lammps](https://github.com/converged-computing/metrics-operator/tree/main/examples/tests/perf-lammps)
282-
- [io-host-volume](https://github.com/converged-computing/metrics-operator/tree/main/examples/tests/io-host-volume)
283-
- [network-netmark](https://github.com/converged-computing/metrics-operator/tree/main/examples/tests/network-netmark) (code still private)
284-
- [network-osu-benchmark](https://github.com/converged-computing/metrics-operator/tree/main/examples/tests/network-osu-benchmark)
285-
- [app-lammps](https://github.com/converged-computing/metrics-operator/tree/main/examples/tests/app-lammps)
298+
[Kripke](https://github.com/LLNL/Kripke) is (from the README):
286299
300+
> Kripke is a simple, scalable, 3D Sn deterministic particle transport code. Its primary purpose is to research how data layout, programming paradigms and architectures effect the implementation and performance of Sn transport. A main goal of Kripke is investigating how different data-layouts affect instruction, thread and task level parallelism, and what the implications are on overall solver performance. Akin to AMG, we allow you to modify each of the mpirun and kripke commands via:
287301
288-
The following example uses io-fio to measure the Fusion filesystem:
302+
| Name | Description | Option Key | Type | Default |
303+
|-----|-------------|------------|------|---------|
304+
| command | The amg command (without mpirun) | options->command |string | (see below) |
305+
| mpirun | The mpirun command (and arguments) | options->mpirun | string | (see below) |
306+
| workdir | The working directory for the command | options->workdir | string | /opt/AMG |
307+
308+
By default, when not set, you will just run the kripke binary to get a test case run, so mpirun is set to be blank.
309+
310+
```bash
311+
# mpirun is blank
312+
""
313+
# But could be an actual mpirun command
314+
mpirun --hostfile ./hostlist.txt
315+
316+
# command written to problem.sh
317+
kripke
289318
290-
- [io-host-volume](https://github.com/converged-computing/metrics-operator/tree/main/examples/storage/google/io-fusion)
319+
# Assembled into
320+
mpirun --hostfile ./hostlist.txt ./problem.sh
321+
```
291322
323+
There is a nice [guide here](https://asc.llnl.gov/sites/asc/files/2020-09/Kripke_Summary_v1.2.2-CORAL2_0.pdf) that can help you to decide
324+
on your specific command or problem size. Also note that we expose the following executables built with it:
325+
326+
```console
327+
ex1_vector-addition ex4_atomic-histogram ex7_nested-loop-reorder
328+
ex1_vector-addition_solution ex4_atomic-histogram_solution ex7_nested-loop-reorder_solution
329+
ex2_approx-pi ex5_line-of-sight ex8_tiled-matrix-transpose
330+
ex2_approx-pi_solution ex5_line-of-sight_solution ex8_tiled-matrix-transpose_solution
331+
ex3_colored-indexset ex6_stencil-offset-layout ex9_matrix-transpose-local-array
332+
ex3_colored-indexset_solution ex6_stencil-offset-layout_solution ex9_matrix-transpose-local-array_solution
333+
```
334+
(meaning on the PATH in `/opt/Kripke/build/bin` in the container).
292335
For apps / metrics to be added, please see [this issue](https://github.com/converged-computing/metrics-operator/issues/30).
293336
294337
## Containers

0 commit comments

Comments
 (0)