Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pr from fork/137 #254

Closed
wants to merge 220 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
220 commits
Select commit Hold shift + click to select a range
c64db24
Initial link against spack built caliper; ATOMIC_PI:BASE_OpenMP instr…
jonesholger Mar 12, 2021
2db7cb1
suppress dirty blt
jonesholger Mar 12, 2021
d7ba2ad
Caliper timer start/stop moved into kernel base so it covers all of t…
jonesholger Mar 19, 2021
940a07e
exclude warmup; add adiak and other configuration meta-data support
jonesholger Mar 29, 2021
513455d
.gitignore update for vim swap files
jonesholger Mar 29, 2021
e30a1b7
change rajaperf_config so it's compatible with Caliper; Adiak::value …
jonesholger Mar 30, 2021
c6e4771
per kernel.variant json files with additional adiak keys kernel, vari…
jonesholger May 17, 2021
90be795
change output to spot cali files, and generic kernel name for region
jonesholger May 19, 2021
fc1b920
Initial Caliper manager per variant
jonesholger Jun 9, 2021
d681a64
Caliper tree is now variant->group->kernel
jonesholger Jun 9, 2021
516507d
compiler_suffic adiak key; cleanup
jonesholger Jun 15, 2021
7914e24
Add perf.py Hatchet Notebook with GenericFrame class; allows comparis…
jonesholger Jul 4, 2021
8e08cd5
add some notes on how to pickup python caliperreader; remove default_…
jonesholger Jul 4, 2021
01d79b7
Merge branch 'develop' into use_caliper
jonesholger Jul 7, 2021
dc55482
add compiler version via cmake and compiler path version via regex of…
jonesholger Jul 10, 2021
af35eee
changed example perf notebook to use new compiler key and rename note…
jonesholger Jul 14, 2021
130dfb2
Add ExtractCommonSubtree to perf.py to support comparing trees which …
jonesholger Aug 9, 2021
b5ad2e4
use hatchet caliper native reader
jonesholger Sep 27, 2021
b1275b7
Merge branch 'develop' into use_caliper
jonesholger Sep 27, 2021
e89f97d
fix warmup logic; add adiak ProblemSize and SizeMeaning keys
jonesholger Sep 27, 2021
e7577d1
perf.py supports running sweeps
jonesholger Oct 4, 2021
b19a19f
Merge branch 'develop' into use_caliper
jonesholger Oct 4, 2021
76aff45
Merge branch 'bugfix/burmark1/HEAT_3D_index_mapping' into use_caliper
jonesholger Oct 5, 2021
64d5219
import of adiak works for adiak and adiak::adiak library exports; cle…
jonesholger Nov 3, 2021
0e9a90e
Merge branch 'develop' into use_caliper
jonesholger Nov 3, 2021
61dae2a
remove hatchet based scripts until next hatchet/spot release; this wi…
jonesholger Nov 3, 2021
398ba56
Merge branch 'develop' into use_caliper
jonesholger Nov 30, 2021
c617652
Make sweep_size script more flexible
MrBurmark May 9, 2022
2933af1
Add graphing script to go with sweep script.
MrBurmark May 9, 2022
1b63fe2
Add more help in toss4 cray mvapich amdclang script
MrBurmark May 9, 2022
0ce8c63
Merge remote-tracking branch 'origin/develop' into feature/burmark1/g…
MrBurmark May 9, 2022
eb54c42
Add names to sweep_size script
MrBurmark May 9, 2022
d8afe7d
Remove extra text in graph names
MrBurmark May 9, 2022
29a3873
Change color factors to avoid saturating base
MrBurmark May 10, 2022
93faac1
Fix typos in sweep_size
MrBurmark May 10, 2022
55ed8be
Add simple throughput to graph script
MrBurmark May 10, 2022
699ff16
Add more formatting to graphs
MrBurmark May 10, 2022
2b8b5ce
Add args to include or exclude kernels from graphing
MrBurmark May 10, 2022
c256961
Avoid recounting run sizes
MrBurmark May 10, 2022
85b3d2c
fixup graph naming
MrBurmark May 10, 2022
41983b1
Add options to include/exclude variants and tunings
MrBurmark May 10, 2022
074c208
Fix issue with repeated run sizes
MrBurmark May 11, 2022
63e1ffd
Add print of sweeps
MrBurmark May 11, 2022
ced724c
Refactor sweep_graph to use some classes
MrBurmark May 20, 2022
71a9451
Add templated data computation
MrBurmark May 20, 2022
dd1bd5c
plot on same graph, add linear regression
MrBurmark May 23, 2022
5dd7d4b
Add ability to graph bar charts across kernels
MrBurmark May 24, 2022
59cc13c
Clarify segmented linear regression breakpoints
MrBurmark May 24, 2022
a1e172e
Add option to exclude sweeps
MrBurmark May 24, 2022
c488212
Add kernel groups to simplify plotting
MrBurmark May 24, 2022
2098f85
Add more generic data tree class
MrBurmark May 25, 2022
1e3824c
remove use test tuning
MrBurmark May 25, 2022
0d3e5be
rename some variables
MrBurmark May 25, 2022
e2eb0bf
Switched to more flexible copmute scheme
MrBurmark May 25, 2022
059e4df
Generalize graphing implementation
MrBurmark May 25, 2022
4a176b6
Fix division by 0 error
MrBurmark May 26, 2022
a26f65f
fix split line plotting
MrBurmark May 26, 2022
0f2709f
Add more color utilities
MrBurmark Jun 1, 2022
8cde548
fixup arg handling
MrBurmark Jun 1, 2022
5beb2b7
Add ability to change graph labels
MrBurmark Jun 1, 2022
9f7a00f
Add and update kind templates
MrBurmark Jun 1, 2022
ed0621f
Add histogram plotting
MrBurmark Jun 1, 2022
187e7d1
Add option to move legend
MrBurmark Jun 1, 2022
700be35
Move bar zorder to under axes
MrBurmark Jun 1, 2022
19ac08a
Merge branch 'develop' into pr-from-fork/137
rhornung67 Jul 11, 2022
16b8340
Code formatting
rhornung67 Jul 11, 2022
9295555
Fix merge errors
rhornung67 Jul 11, 2022
a40b276
Merge branch 'develop' into pr-from-fork/137
rhornung67 Jul 13, 2022
bc0573a
Update CMakeLists.txt
rhornung67 Jul 18, 2022
2a761bb
Update src/basic/PI_ATOMIC-OMP.cpp
rhornung67 Jul 18, 2022
e79cf13
Update src/basic/PI_ATOMIC-OMP.cpp
rhornung67 Jul 18, 2022
81e29e4
Update .gitmodules
rhornung67 Jul 18, 2022
53671b0
Update src/basic/PI_ATOMIC-OMP.cpp
rhornung67 Jul 18, 2022
a4c12a8
Merge branch 'develop' into use_caliper
jonesholger Jul 25, 2022
88d98ed
Merge branch 'use_caliper' of https://github.com/jonesholger/RAJAPerf…
jonesholger Jul 25, 2022
14f0a39
add +caliper spec to package.py; add include_directories for adiak
jonesholger Jul 26, 2022
3b2de08
change set_target_properties for adiak target to for +cuda spec; we …
jonesholger Jul 27, 2022
39fde9b
Merge branch 'use_caliper' into pr-from-fork/137
jonesholger Jul 27, 2022
52ac292
gen per kernel adiak keyval such as runreps, itersperrep, etc
jonesholger Aug 1, 2022
a4aec2b
add adiak_ prefix to rajaperf::configuration variables in caliper sec…
jonesholger Aug 1, 2022
84aedca
remove compiler info noise
jonesholger Aug 1, 2022
248ffd3
update spack package to use caliper@2.8.0; also add +rocm to caliper …
jonesholger Aug 1, 2022
8f32df7
fixup cmake define to pickup caliper/adiak includes in src/CMakeLists…
jonesholger Aug 2, 2022
763c358
Merge branch 'pr-from-fork/137' into feature/holger/graph_sweeps_caliper
jonesholger Aug 2, 2022
7ec27ce
support output directory -od flag for spot output files
jonesholger Aug 3, 2022
b73caaa
Merge branch 'pr-from-fork/137' into feature/holger/graph_sweeps_caliper
jonesholger Aug 3, 2022
08ea0f9
add support to process caliper timing info; still uses orig runinfo m…
jonesholger Aug 10, 2022
052ca63
per kernel column metadata; currently exported as strings since some …
jonesholger Aug 16, 2022
b8041e7
Merge branch 'feature/burmark1/graph_sweeps' into caliper_metadata_at…
jonesholger Aug 17, 2022
1950e27
fixup xdata sort order using numpy
jonesholger Aug 18, 2022
ef58b0c
switch kernel attribute metadata datatype to double
jonesholger Aug 22, 2022
fffe3e0
Merge branch 'caliper_metadata_attribute' into feature/holger/graph_s…
jonesholger Aug 22, 2022
4ad948f
modify adiak runinfo metadata so it can be used in python scripts as …
jonesholger Sep 11, 2022
ba525df
add checks for include/exclude kernels and error out in case of cmdli…
jonesholger Sep 13, 2022
775701c
fix bug in read_caliper_runinfo_size removing errant continue in run_…
jonesholger Sep 13, 2022
b59755e
add legend order routine - currently developer centric as order is fi…
jonesholger Sep 20, 2022
f5f6a35
fix doOnceCaliMeta for multiple tunings
jonesholger Sep 21, 2022
f444177
parent/child parsers; add --directories; add prescan dict to parser n…
jonesholger Sep 25, 2022
38bc905
continue integration of argparse_sweep_graph module
jonesholger Oct 2, 2022
ecc8860
Merge branch 'develop' into pr-from-fork/137
jonesholger Oct 2, 2022
0a9bef0
adiak runinfo metadata is wrapped in dict so we can use eval in pytho…
jonesholger Oct 2, 2022
e512b0d
split off data classes into separate module data_classes_sweep_graph;…
jonesholger Oct 4, 2022
57f50c4
change column attribute data such as ProblemSize so aggregation is mo…
jonesholger Oct 5, 2022
bf45a79
cmake Caliper/Adiak includes back in main so it's in one section, and…
jonesholger Oct 7, 2022
a616fe1
put cmake Caliper/Adiak includes back into top; accomodate Adiak@0.2.…
jonesholger Oct 7, 2022
8c118ff
Merge branch 'use_argparse' of github.com:jonesholger/RAJAPerf into u…
jonesholger Oct 7, 2022
5941881
Merge branch 'use_argparse' into pr-from-fork/137
jonesholger Oct 8, 2022
505cc95
Empty commit to force CI
rhornung67 Oct 10, 2022
3002f99
Remove README banner that we don't want in develop
rhornung67 Oct 10, 2022
10c5480
add caliper based prescan
jonesholger Oct 10, 2022
b19939e
Merge branch 'develop' into use_caliper
rhornung67 Oct 11, 2022
f91cd21
fix some namespace bugs wrt Data class; add kinds closeness check in …
jonesholger Oct 11, 2022
f57e3c7
move several free functions back into Data class - reorg not apropo y…
jonesholger Oct 17, 2022
1cc3f4a
still need our local cr (caliper reader) object to pass to prescan
jonesholger Oct 17, 2022
d590132
Merge branch 'use_argparse' into pr-from-fork/137
jonesholger Oct 17, 2022
4800c32
Merge branch 'pr-from-fork/137' of github.com:LLNL/RAJAPerf into pr-f…
jonesholger Oct 17, 2022
334bd37
add --recolor --reformat flags; kind closeness check is more insensit…
jonesholger Oct 18, 2022
2e03612
Caliper column metadata Aggregatable attributes need to be initialize…
jonesholger Oct 19, 2022
a353d4f
Merge branch 'use_argparse' into pr-from-fork/137
jonesholger Oct 19, 2022
0171719
add --recolor --reformat flags; kind closeness check is more insensit…
jonesholger Oct 18, 2022
7c6f110
Caliper column metadata Aggregatable attributes need to be initialize…
jonesholger Oct 19, 2022
9ad36ac
Spot config add via command line argument implemented, e.g. you can s…
jonesholger Oct 21, 2022
62341ea
add help text for --add-to-spot-config -atsc
jonesholger Oct 21, 2022
1d2e427
Merge branch 'caliper-value-add' into pr-from-fork/137
jonesholger Oct 22, 2022
93dee34
advance caliper to caliper@master until caliper@2.9.0 is released
jonesholger Oct 23, 2022
8985613
Merge branch 'pr-from-fork/137' into use_caliper
jonesholger Oct 26, 2022
dfbdcb9
use cmp0048 for project version, and propagate to original version va…
jonesholger Nov 7, 2022
a742ebe
remove dirty git ignore for BLT in .gitmodules; add README.md documen…
jonesholger Nov 8, 2022
ef804d4
add Use Caliper to table of contents in README.md
jonesholger Nov 8, 2022
752f643
adjust for github render
jonesholger Nov 8, 2022
ccdfc0e
Add event-trace info for CUDA and ROCM; to be viewed in chrome or per…
jonesholger Nov 9, 2022
1ec65b5
noticed an issue with rendering text between < > brackets on github
jonesholger Nov 9, 2022
d5dbda0
minor edits to README -- mostly format/highlight tags
jonesholger Nov 14, 2022
72eb5e9
Merge branch 'develop' into use_caliper
jonesholger Nov 14, 2022
3ae59ac
advance spack commit in uberenv config to v0.19.0 via hash
jonesholger Nov 15, 2022
22c8f5b
setup new adiak key ProblemSizeRunParam to reflect command line arg -…
jonesholger Nov 17, 2022
449a705
fix _OPENMP version detect, including out-of-range for map version en…
jonesholger Nov 17, 2022
ed43d87
Merge branch 'develop' into pr-from-fork/137
rhornung67 Nov 29, 2022
592c854
More detail for the topdown/PAPI section of the documentation
jonesholger Dec 8, 2022
dfb6ad3
Update README.md
jonesholger Dec 8, 2022
ca71f90
Update README.md
jonesholger Dec 8, 2022
e8ade72
Update README.md
jonesholger Dec 8, 2022
3b08adc
Merge branch 'use_caliper' into pr-from-fork/137
jonesholger Dec 12, 2022
fc5e6d3
update uberenv config file for Spack v0.19.0; add Caliper and Adiak p…
jonesholger Dec 12, 2022
5499c7d
Merge branch 'develop' into pr-from-fork/137
rhornung67 Jan 5, 2023
a2708a1
Update (and fix) flags syntax in CI
adrienbernede Dec 1, 2022
e68710e
Update shared CI
adrienbernede Dec 1, 2022
a31768e
Attempt to build with caliper
adrienbernede Dec 1, 2022
97edc52
Update tpl/RAJA to get latest changes in RAJA CI
adrienbernede Jan 9, 2023
03d2562
Update extra specs in lassen CI
adrienbernede Jan 9, 2023
49659db
Specify cuda_arch when building with Cuda
adrienbernede Jan 10, 2023
e5bdd6c
Fix caliper CI job name
adrienbernede Jan 10, 2023
401e069
Merge pull request #280 from LLNL/woptim/caliper-integration
adrienbernede Jan 10, 2023
54919cc
Add the option to not build and test in /dev/shm + copy caliper files…
adrienbernede Jan 12, 2023
b300358
Do not use /dev/shm for caliper job
adrienbernede Jan 12, 2023
fc2981a
Protect cali files copy with existence check
adrienbernede Jan 12, 2023
3c6503e
Add caliper reference files + minor
adrienbernede Jan 12, 2023
7731dc9
Minor
adrienbernede Jan 12, 2023
256fc52
Add a comparison report between cali files using hatchet
adrienbernede Jan 12, 2023
70b6cff
Fix script name and path
adrienbernede Jan 12, 2023
e3fc7d7
TEMP: de-activate unneeded part of the CI
adrienbernede Jan 12, 2023
ed6033a
Fix script call path
adrienbernede Jan 12, 2023
dbe10a4
Fix python script
adrienbernede Jan 12, 2023
aaa3361
Add missing extension
adrienbernede Jan 12, 2023
cb3742e
Fix baseline dir
adrienbernede Jan 13, 2023
42f9619
Fix use existing field
adrienbernede Jan 13, 2023
e5ed98b
Revert "TEMP: de-activate unneeded part of the CI"
adrienbernede Jan 17, 2023
5fa11bc
add support for cross-variant comparisons
jonesholger Jan 20, 2023
c46858e
replace optparse with argparse
jonesholger Jan 23, 2023
09292db
Merge branch 'develop' into pr-from-fork/137
adrienbernede Feb 17, 2023
b134ad6
Merge branch 'pr-from-fork/137' into woptim/caliper-integration
adrienbernede Feb 17, 2023
8fd43bd
Add usptream spack management to build_and_test script
adrienbernede Feb 20, 2023
609549e
Fix typo
adrienbernede Feb 20, 2023
6490c18
Protect against unititialized upstream
adrienbernede Feb 20, 2023
bd90e75
Fix typo
adrienbernede Feb 20, 2023
f010820
Prevent setting upstream when updating it
adrienbernede Feb 20, 2023
6671991
Fix typo
adrienbernede Feb 20, 2023
82c0423
Fix boolean use
adrienbernede Feb 21, 2023
5969bf1
Merge branch 'develop' into pr-from-fork/137
adrienbernede Mar 8, 2023
e9b1ba0
Merge branch 'pr-from-fork/137' into woptim/caliper-integration
adrienbernede Mar 8, 2023
3993588
Merge pull request #298 from LLNL/hatchet-analysis-crossvariant
adrienbernede Mar 8, 2023
b2ec163
Add some comments
adrienbernede Mar 8, 2023
aaba7f5
Deactivate a deprecated spec
adrienbernede Mar 8, 2023
bb52164
Remove reference files and move to in-commit perf comparison
adrienbernede Mar 8, 2023
6b03dac
Store filtered graphframes in copy
adrienbernede Mar 9, 2023
e4ca868
Add caliper target to lassen and corona, add Cuda and OmpTarget analysis
adrienbernede Mar 9, 2023
06ce8bc
Merge branch 'woptim/share-raja-perf-package' into pr-from-fork/137
adrienbernede Mar 9, 2023
74a4f6e
Remove cuda-arch in non-cuda spec
adrienbernede Mar 10, 2023
f2dd795
Merge branch 'pr-from-fork/137' into woptim/caliper-integration
adrienbernede Mar 10, 2023
489c9a5
Effectively use the upstream
adrienbernede Mar 10, 2023
29dbcdb
Fix upstream path
adrienbernede Mar 10, 2023
b826e28
Remove superfluous comparison
adrienbernede Mar 13, 2023
c3a88ff
Merge branch 'develop' into pr-from-fork/137
adrienbernede Mar 14, 2023
cb65f40
Merge branch 'pr-from-fork/137' into woptim/caliper-integration
adrienbernede Mar 14, 2023
7a1f7b9
Actually use Base implementation as baseline
adrienbernede Mar 14, 2023
bd0d585
Use new CI queue in RAJAPerf
adrienbernede Mar 17, 2023
39e699d
Update Rad Spack Conf (via RAJA) to Add python and elfutils as extern…
adrienbernede Mar 17, 2023
7306808
python 3.8.2 missing on toss4 machines, using 3.10.8
adrienbernede Mar 17, 2023
2eac54f
No system elfutils on toss4
adrienbernede Mar 17, 2023
b7fbc8c
No system elfutils on blueos
adrienbernede Mar 17, 2023
110d578
Point to RAJA@develop with new radiuss-spack-configs
adrienbernede Mar 17, 2023
b29d567
Merge pull request #291 from LLNL/woptim/caliper-integration
adrienbernede Mar 17, 2023
edaa2e2
Merge branch 'develop' into pr-from-fork/137
jonesholger Mar 18, 2023
202635e
added sphinx doc for building with caliper, and Caliper output
jonesholger Mar 19, 2023
548b42a
more generic MPI Init
jonesholger Mar 19, 2023
b831e47
more sphinx docs for Caliper Use Cases; minor formatting
jonesholger Mar 20, 2023
9ed8761
sync tpl/RAJA
jonesholger Mar 20, 2023
eb96294
remove example script to build with Caliper; which also was outdated …
jonesholger Mar 22, 2023
203e9ba
Merge branch 'develop' into pr-from-fork/137
rhornung67 Mar 31, 2023
5c04627
Merge branch 'develop' into pr-from-fork/137
adrienbernede Apr 7, 2023
70371c4
clean-up, and add warning or note sphinx tags to caveats
jonesholger Apr 13, 2023
aa34389
updating commit to add clean-up for RunParams.hpp
jonesholger Apr 13, 2023
dc9ca71
fixup sweep_graph from merge
jonesholger Apr 19, 2023
835a7cb
Consistent formatting of macro usage and code
rhornung67 Apr 25, 2023
ddc0a04
Cleanup and formatting
rhornung67 Apr 25, 2023
db6db7b
Merge branch 'develop' into pr-from-fork/137
rhornung67 Apr 25, 2023
1954dd8
move sweep relate scripts into their own directory
jonesholger May 1, 2023
6d2e1fd
Merge branch 'pr-from-fork/137' of https://github.com/LLNL/RAJAPerf i…
jonesholger May 3, 2023
c5bc688
finesse docs wrt to several python script examples, either by removin…
jonesholger May 10, 2023
18500fb
Merge branch 'develop' into pr-from-fork/137
adrienbernede Jun 19, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

# We define the following GitLab pipeline variables:
variables:
# Required information about GitHub repository
GITHUB_PROJECT_NAME: "RAJAPerf"
GITHUB_PROJECT_ORG: "LLNL"
# Use the umdev service user to run CI. This prevents from running pipelines as
Expand Down
9 changes: 8 additions & 1 deletion .gitlab/corona-build-and-test-extra.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,12 @@ variables:
# INFO: This job is activated in RAJA CI, but we don't use desul atomics here
#rocmcc_5_1_1_hip_desul_atomics:
# variables:
# SPEC: "+rocm~openmp +desul amdgpu_target=gfx906 %rocmcc@5.1.1 ^blt@develop ^hip@5.1.1"
# SPEC: "~openmp +rocm +desul amdgpu_target=gfx906 %rocmcc@5.1.1 ^hip@5.1.1 ^blt@develop"
# extends: .build_and_test_on_corona

# EXTRA
rocmcc_5_1_1_hip_caliper:
variables:
SPEC: "~openmp +caliper +rocm amdgpu_target=gfx906 %rocmcc@5.1.1 ^hip@5.1.1 ^blt@develop"
extends: .build_and_test_on_corona

4 changes: 2 additions & 2 deletions .gitlab/custom-jobs-and-variables.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ variables:

# Ruby
# Arguments for top level allocation
RUBY_BUILD_AND_TEST_SHARED_ALLOC: "--exclusive --partition=pdebug --time=45 --nodes=1"
RUBY_BUILD_AND_TEST_SHARED_ALLOC: "--exclusive --reservation=ci --qos=ci_ruby --time=45 --nodes=1"
# Arguments for job level allocation
RUBY_BUILD_AND_TEST_JOB_ALLOC: "--time=30 --nodes=1"
RUBY_BUILD_AND_TEST_JOB_ALLOC: "--reservation=ci --qos=ci_ruby --time=30 --nodes=1"
# Project specific variants for ruby
PROJECT_RUBY_VARIANTS: "+openmp "
# Project specific deps for ruby
Expand Down
33 changes: 23 additions & 10 deletions .gitlab/lassen-build-and-test-extra.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,15 @@ ibm_clang_9_0_0:
# Overriding shared spec: Allow failures
ibm_clang_9_0_0_gcc_8_3_1:
variables:
SPEC: " ${PROJECT_LASSEN_VARIANTS} %clang@ibm.9.0.0 cxxflags=\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" cflags=\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" ${PROJECT_LASSEN_DEPS}"
SPEC: " ${PROJECT_LASSEN_VARIANTS} %clang@ibm.9.0.0 cxxflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" cflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" ${PROJECT_LASSEN_DEPS}"
extends: .build_and_test_on_lassen
allow_failure: true

# Overriding shared spec: Longer allocation + Allow failures
ibm_clang_9_0_0_gcc_8_3_1_cuda_10_1_168:
variables:
SPEC: " ${PROJECT_LASSEN_VARIANTS} +cuda %clang@ibm.9.0.0 cxxflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" cflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" cuda_arch=70 ^cuda@10.1.168 ${PROJECT_LASSEN_DEPS}"
LASSEN_BUILD_AND_TEST_JOB_ALLOC: "1 -W 60"
extends: .build_and_test_on_lassen
allow_failure: true

Expand All @@ -38,28 +46,28 @@ ibm_clang_9_0_0_gcc_8_3_1_cuda_10_1_168:
# Overriding shared spec: Extra flags
gcc_8_3_1:
variables:
SPEC: " ${PROJECT_LASSEN_VARIANTS} %gcc@8.3.1 cxxflags=\"-finline-functions -finline-limit=20000\" cflags=\"-finline-functions -finline-limit=20000\" ${PROJECT_LASSEN_DEPS}"
SPEC: " ${PROJECT_LASSEN_VARIANTS} %gcc@8.3.1 cxxflags==\"-finline-functions -finline-limit=20000\" cflags==\"-finline-functions -finline-limit=20000\" ${PROJECT_LASSEN_DEPS}"
extends: .build_and_test_on_lassen

# Overriding shared spec: Longer allocation + Allow failures
pgi_20_4_gcc_8_3_1:
extends: .build_and_test_on_lassen
variables:
SPEC: " ${PROJECT_LASSEN_VARIANTS} %pgi@20.4 cxxflags=\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" cflags=\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" ${PROJECT_LASSEN_DEPS}"
SPEC: " ${PROJECT_LASSEN_VARIANTS} %pgi@20.4 cxxflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" cflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" ${PROJECT_LASSEN_DEPS}"
LASSEN_BUILD_AND_TEST_JOB_ALLOC: "1 -W 60"
extends: .build_and_test_on_lassen
allow_failure: true

# Overriding shared spec: Longer allocation + Extra flags
xl_16_1_1_12:
variables:
SPEC: " ${PROJECT_LASSEN_VARIANTS} %xl@16.1.1.12 cxxflags=\"-qthreaded -std=c++14 -O3 -qstrict -qxlcompatmacros -qlanglvl=extended0x -qalias=noansi -qhot -qsmp=omp -qnoeh -qsuppress=1500-029 -qsuppress=1500-036 ${PROJECT_LASSEN_DEPS}\""
SPEC: " ${PROJECT_LASSEN_VARIANTS} %xl@16.1.1.12 cxxflags==\"-qthreaded -std=c++14 -O3 -qstrict -qxlcompatmacros -qlanglvl=extended0x -qalias=noansi -qhot -qsmp=omp -qnoeh -qsuppress=1500-029 -qsuppress=1500-036 ${PROJECT_LASSEN_DEPS}\""
LASSEN_BUILD_AND_TEST_JOB_ALLOC: "1 -W 50"
extends: .build_and_test_on_lassen

# Overriding shared spec: Longer allocation + Extra flags
xl_16_1_1_12_gcc_8_3_1:
variables:
SPEC: " ${PROJECT_LASSEN_VARIANTS} %xl@16.1.1.12 cxxflags=\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1 -qthreaded -std=c++14 -O3 -qstrict -qxlcompatmacros -qlanglvl=extended0x -qalias=noansi -qhot -qsmp=omp -qnoeh -qsuppress=1500-029 -qsuppress=1500-036\" cflags=\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" ${PROJECT_LASSEN_DEPS}"
SPEC: " ${PROJECT_LASSEN_VARIANTS} %xl@16.1.1.12 cxxflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1 -qthreaded -std=c++14 -O3 -qstrict -qxlcompatmacros -qlanglvl=extended0x -qalias=noansi -qhot -qsmp=omp -qnoeh -qsuppress=1500-029 -qsuppress=1500-036\" cflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" ${PROJECT_LASSEN_DEPS}"
LASSEN_BUILD_AND_TEST_JOB_ALLOC: "1 -W 50"
extends: .build_and_test_on_lassen

Expand All @@ -80,14 +88,14 @@ xl_16_1_1_12_gcc_7_3_1_cuda_10_1_168:
# Overriding shared spec: Extra flags + Longer allocation + Allow failure
xl_16_1_1_12_cuda_11_1_0:
variables:
SPEC: " ${PROJECT_LASSEN_VARIANTS} +cuda %xl@16.1.1.12 cxxflags=\"-qthreaded -std=c++14 -O3 -qstrict -qxlcompatmacros -qlanglvl=extended0x -qalias=noansi -qhot -qpic -qsmp=omp -qsuppress=1500-029 -qsuppress=1500-036\" cuda_arch=70 ^cuda@11.1.0 ${PROJECT_LASSEN_DEPS}"
SPEC: " ${PROJECT_LASSEN_VARIANTS} +cuda %xl@16.1.1.12 cxxflags==\"-qthreaded -std=c++14 -O3 -qstrict -qxlcompatmacros -qlanglvl=extended0x -qalias=noansi -qhot -qpic -qsmp=omp -qsuppress=1500-029 -qsuppress=1500-036\" cuda_arch=70 ^cuda@11.1.0 ${PROJECT_LASSEN_DEPS}"
LASSEN_BUILD_AND_TEST_JOB_ALLOC: "1 -W 60"
extends: .build_and_test_on_lassen

# Overriding shared spec: Extra flags + Longer allocation + Allow failure
xl_16_1_1_12_gcc_8_3_1_cuda_11_1_0:
variables:
SPEC: " ${PROJECT_LASSEN_VARIANTS} +cuda %xl@16.1.1.12 cxxflags\"=--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1 -qthreaded -std=c++14 -O3 -qstrict -qxlcompatmacros -qlanglvl=extended0x -qalias=noansi -qhot -qpic -qsmp=omp -qsuppress=1500-029 -qsuppress=1500-036\" cflags=--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1 cuda_arch=70 ^cuda@11.1.0 ${PROJECT_LASSEN_DEPS}"
SPEC: " ${PROJECT_LASSEN_VARIANTS} +cuda %xl@16.1.1.12 cxxflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1 -qthreaded -std=c++14 -O3 -qstrict -qxlcompatmacros -qlanglvl=extended0x -qalias=noansi -qhot -qpic -qsmp=omp -qsuppress=1500-029 -qsuppress=1500-036\" cflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" cuda_arch=70 ^cuda@11.1.0 ${PROJECT_LASSEN_DEPS}"
LASSEN_BUILD_AND_TEST_JOB_ALLOC: "1 -W 60"
extends: .build_and_test_on_lassen

Expand All @@ -114,7 +122,7 @@ clang_14_0_5:

clang_12_0_1_cuda_11_5_0:
variables:
SPEC: " +openmp +cuda cuda_arch=70 %clang@12.0.1 cxxflags=\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" cflags=\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" ^cuda@11.5.0"
SPEC: " +openmp +cuda cuda_arch=70 %clang@12.0.1 cxxflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" cflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" ^cuda@11.5.0"
extends: .build_and_test_on_lassen

gcc_8_3_1_cuda_11_1_0:
Expand All @@ -132,14 +140,19 @@ gcc_8_3_1_cuda_11_5_0_ats_disabled:
# EXTRAS
##########

clang_12_0_1_cuda_11_5_0_caliper:
variables:
SPEC: " +openmp +caliper +cuda cuda_arch=70 %clang@12.0.1 cxxflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" cflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" ^cuda@11.5.0"
extends: .build_and_test_on_lassen

clang_13_0_1_libcpp:
variables:
SPEC: " +openmp %clang@13.0.1+libcpp"
extends: .build_and_test_on_lassen

clang_14_0_5_asan:
variables:
SPEC: " +openmp %clang@14.0.5 cxxflags=-fsanitize=address"
SPEC: " +openmp %clang@14.0.5 cxxflags==\"-fsanitize=address\""
ASAN_OPTIONS: "detect_leaks=1"
extends: .build_and_test_on_lassen

Expand Down
10 changes: 9 additions & 1 deletion .gitlab/ruby-build-and-test-extra.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ gcc_8_1_0:
# Overriding shared spec: Allow failures
pgi_20_1_gcc_local_8_3_1:
variables:
SPEC: " ${PROJECT_RUBY_VARIANTS} %pgi@20.1 cxxflags\"=-rc=/usr/workspace/umpire/pgi/x86_64/local-gcc-8.3.1-rc\" cflags\"=-rc=/usr/workspace/umpire/pgi/x86_64/local-gcc-8.3.1-rc\" fflags=\"-rc=/usr/workspace/umpire/pgi/x86_64/local-gcc-8.3.1-rc\" ${PROJECT_RUBY_DEPS}"
SPEC: " ${PROJECT_RUBY_VARIANTS} %pgi@20.1 cxxflags==\"-rc=/usr/workspace/umpire/pgi/x86_64/local-gcc-8.3.1-rc\" cflags==\"-rc=/usr/workspace/umpire/pgi/x86_64/local-gcc-8.3.1-rc\" fflags==\"-rc=/usr/workspace/umpire/pgi/x86_64/local-gcc-8.3.1-rc\" ${PROJECT_RUBY_DEPS}"
extends: .build_and_test_on_ruby
allow_failure: true

Expand All @@ -35,8 +35,16 @@ pgi_20_1_gcc_local_8_3_1:
# ${PROJECT_<MACHINE>_DEPS} in the extra jobs. There is no reason not to fully
# describe the spec here.

gcc_8_3_1_caliper:
variables:
SPEC: " +openmp +caliper %gcc@8.3.1"
RUBY_BUILD_AND_TEST_JOB_ALLOC: "--time=60 --nodes=1"
extends: .build_and_test_on_ruby

icpc_19_1_0:
variables:
SPEC: " +openmp %intel@19.1.0"
RUBY_BUILD_AND_TEST_JOB_ALLOC: "--time=40 --nodes=1"
before_script:
- export USE_DEV_SHM=False
extends: .build_and_test_on_ruby
40 changes: 35 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
###############################################################################

# C is required for googletest to find Threads
project(RAJAPerfSuite LANGUAGES CXX C)
cmake_policy(SET CMP0048 NEW)

project(RAJAPerfSuite VERSION 2022.10.0 LANGUAGES CXX C)

if (ENABLE_HIP)
cmake_minimum_required(VERSION 3.23)
Expand Down Expand Up @@ -95,9 +97,10 @@ if (ENABLE_OPENMP)
add_definitions(-DRUN_OPENMP)
endif ()

set(RAJA_PERFSUITE_VERSION_MAJOR 2022)
set(RAJA_PERFSUITE_VERSION_MINOR 10)
set(RAJA_PERFSUITE_VERSION_PATCHLEVEL 0)
set(RAJA_PERFSUITE_VERSION_MAJOR ${RAJAPerfSuite_VERSION_MAJOR})
set(RAJA_PERFSUITE_VERSION_MINOR ${RAJAPerfSuite_VERSION_MINOR})
set(RAJA_PERFSUITE_VERSION_PATCHLEVEL ${RAJAPerfSuite_VERSION_PATCH})
message(STATUS "CMAKE_PROJECT_VERSION:" ${CMAKE_PROJECT_VERSION})

set(RAJA_PERFSUITE_DEPENDS RAJA)

Expand All @@ -124,6 +127,33 @@ if ((ENABLE_HIP) AND (NOT ENABLE_KOKKOS))
list(APPEND RAJA_PERFSUITE_DEPENDS blt::hip_runtime)
endif()

#
# Are we using Caliper
#
set(RAJA_PERFSUITE_USE_CALIPER off CACHE BOOL "")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason to have a different USE_CALIPER for each project? Caliper regions+data are composable across projects, so I wonder if there is a use case where we would want to enable caliper in one project but not another - if not, keeping it the same across projects may be nice.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One rationale for the different flag was the fact that Caliper support is not in BLT, where then it could be made general, including the way the flag propagates across subprojects.

if (RAJA_PERFSUITE_USE_CALIPER)
find_package(caliper REQUIRED)
list(APPEND RAJA_PERFSUITE_DEPENDS caliper)
add_definitions(-DRAJA_PERFSUITE_USE_CALIPER)
message(STATUS "Using Caliper")
find_package(adiak REQUIRED)
# use ${adiak_LIBRARIES} since version could have adiak vs adiak::adiak export
list(APPEND RAJA_PERFSUITE_DEPENDS ${adiak_LIBRARIES})
if (ENABLE_CUDA)
# Adiak will propagate -pthread from spectrum mpi from a spack install of Caliper with +mpi; and needs to be handled even if RAJAPerf is non MPI program
# We should delegate to BLT to handle unguarded -pthread from any dependencies, but currently BLT doesn't
set_target_properties(${adiak_LIBRARIES} PROPERTIES INTERFACE_COMPILE_OPTIONS "$<$<NOT:$<COMPILE_LANGUAGE:CUDA>>:-pthread>;$<$<COMPILE_LANGUAGE:CUDA>:-Xcompiler=-pthread>")
# the following for adiak-0.2.2
if (TARGET adiak::mpi)
set_target_properties(adiak::mpi PROPERTIES INTERFACE_COMPILE_OPTIONS "$<$<NOT:$<COMPILE_LANGUAGE:CUDA>>:-pthread>;$<$<COMPILE_LANGUAGE:CUDA>:-Xcompiler=-pthread>")
endif ()
endif ()
message(STATUS "Caliper includes : ${caliper_INCLUDE_DIR}")
message(STATUS "Adiak includes : ${adiak_INCLUDE_DIRS}")
include_directories(${caliper_INCLUDE_DIR})
include_directories(${adiak_INCLUDE_DIRS})
endif ()

set(RAJAPERF_BUILD_SYSTYPE $ENV{SYS_TYPE})
set(RAJAPERF_BUILD_HOST $ENV{HOSTNAME})

Expand Down Expand Up @@ -151,7 +181,7 @@ else()
endif()

configure_file(${CMAKE_SOURCE_DIR}/src/rajaperf_config.hpp.in
${CMAKE_CURRENT_BINARY_DIR}/include/rajaperf_config.hpp)
${CMAKE_CURRENT_BINARY_DIR}/include/rajaperf_config.hpp)

include_directories($<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>)

Expand Down
44 changes: 44 additions & 0 deletions docs/sphinx/user_guide/build.rst
Original file line number Diff line number Diff line change
Expand Up @@ -210,3 +210,47 @@ sizes. The CMake option for this is

will build versions of GPU kernels that use 64, 128, 256, 512, and 1024 threads
per GPU thread-block.

Building with Caliper
---------------------

RAJAPerf Suite may also use Caliper instrumentation, with per variant output into
Spot/Hatchet .cali files. Original timing is nested within Caliper annotations and
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Spot/Hatchet .cali files. Original timing is nested within Caliper annotations and
.cali files that can be consumed by Spot or Hatchet. Original timing is nested within Caliper annotations and

It would be good to add references to Spot and Hatchet also.

so is not impacted when Caliper support is turned on. While Caliper is low-overhead
it is not zero, so it will add a small amount of timing skew in its data as
compared to the original. For much more on Caliper and Hatchet, read their documentation here:
| - `Caliper Documentation <http://software.llnl.gov/Caliper/>`_
| - `Hatchet User Guide <https://llnl-hatchet.readthedocs.io/en/latest/user_guide.html>`_


Caliper *annotation* is in the following tree structure

Variant
Group
Kernel
Kernel.Tuning

| Build against these Caliper versions
|
| **caliper@2.9.0** (preferred target)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add checks for this in the top-level CMakeLists.txt file? These constraints should also be contained in the RAJAPerf Spack package.

| **caliper@master** (if using older Spack version)

In Cmake scripts add
**-DRAJA_PERFSUITE_USE_CALIPER=On**

Add to **-DCMAKE_PREFIX_PATH**
;${CALIPER_PREFIX}/share/cmake/caliper;${ADIAK_PREFIX}/lib/cmake/adiak

or use
-Dcaliper_DIR -Dadiak_DIR package prefixes

For Spack : raja_perf +caliper ^caliper@2.9.0

For Uberenv: python3 scripts/uberenv/uberenv.py --spec +caliper ^caliper@2.9.0

If you intend on passing nvtx or roctx annotation to Nvidia or AMD profiling tools,
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
If you intend on passing nvtx or roctx annotation to Nvidia or AMD profiling tools,
If you intend on passing nvtx or roctx annotations to Nvidia or AMD profiling tools,

build Caliper with +cuda cuda_arch=XX or +rocm respectively. Then you can specify
an additional Caliper service for nvtx or roctx like so: roctx example:

CALI_SERVICES_ENABLE=roctx rocprof --roctx-trace --hip-trace raja-perf.exe

69 changes: 69 additions & 0 deletions docs/sphinx/user_guide/output.rst
Original file line number Diff line number Diff line change
Expand Up @@ -159,3 +159,72 @@ storing the result in matrix A (N_i X N_j). Problem size could be chosen to be
the maximum number of entries in matrix B or C. We choose the size of matrix
A (N_i * N_j), which is more closely aligned with the number of independent
operations (i.e., the amount of parallel work) in the kernels.


===========================
Caliper output files
===========================

If you've built RAJAPerf with Caliper support turned on, then in addition to the
outputs mentioned above, we also save a .cali file for each variant run, such as:
Base_OpenMP.cali, Lambda_OpenMP.cali, RAJA_OpenMP.cali, etc.

There are several techniques to display the Caliper trees (Timing Hierarchy)

| 1: Caliper's cali-query tool.
| The first technique is with Caliper's own tool cali-query, we run it with
| **-T** to display tree, or you can specify **--tree**.
|
| cali-query -T $HOME/data/default_problem_size/gcc/RAJA_Seq.cali

2: Caliper's Python module *caliperreader*::

import os
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this live in a file someplace? If so, we should include it here using comment delimiters in that file so that the docs here don't get out of sync with the script file.

Copy link
Contributor

@jonesholger jonesholger May 3, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, this is a sample script embedded in the docs. This and the one below I thought small enough to be included inline.

I will revisit the small Hatchet script wrt divergence issues between the LC Hatchet, and PYPI Hatchet when Stephanie includes her updates. But, I see your point especially with my comment concerning version divergence. Maybe I can move it into the CI script as a free function, that can then be refer'ed to in the doc.

What do you consider best practice wrt display snippets or gists in the documentation, where gists are maintained separately but get built into rst

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That would be good so it can be updated if needed and simplify doc maintenance.

import caliperreader as cr
DATA_DIR = os.getenv('HOME')+"/data/default_problem_size/gcc"
os.chdir(DATA_DIR)
r = cr.CaliperReader()
r.read("RAJA_Seq.cali")
metric = 'avg#inclusive#sum#time.duration'
for rec in r.records:
path = rec['path'] if 'path' in rec else 'UNKNOWN'
time = rec[metric] if metric in rec else '0'
if not 'UNKNOWN' in path:
if (isinstance(path, list)):
path = "/".join(path)
print("{0}: {1}".format(path, time))

You can add a couple of lines to view the metadata keys captured by Caliper/Adiak::

for g in r.globals:
print(g)

You can also add a line to display metadata value in the dictionary **r.globals**

For example print out the OpenMP Max Threads value recorded at runtime::

print('OMP Max Threads: ' + r.globals['omp_max_threads'])`

or the variant represented in this file::

print('Variant: ' + r.globals['variant'])


.. note:: The script above was written using caliper-reader 0.3.0,
but is fairly generic. Other version usage notes may be
found at the link below

`caliper-reader <https://pypi.org/project/caliper-reader/>`_


3: Using the *Hatchet* Python module::

import hatchet as ht
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar comment as above about linking to section in the script file.

DATA_DIR = os.getenv('HOME')+"/data/default_problem_size/gcc"
os.chdir(DATA_DIR)
gf1 = ht.GraphFrame.from_caliperreader("RAJA_Seq.cali")
print(gf1.tree())

`Find out more on hatchet <https://github.com/LLNL/hatchet>`_


Loading