Skip to content
Merged
Changes from all commits
Commits
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
302 changes: 302 additions & 0 deletions meeting_notes/wg-education-training/minutes/2026_05_26.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,302 @@
# Education & Training working group meeting (2026-05-26)

## Minutes

1. Christian: [Discussed CoPilot requested changes on [PR #159][pr-159]].
1. Pariksheet: [Explained that one of the CoPilot suggestions incorrectly wants
to apply the github-pages to a single branch whereas my intention is to
build PDF slides for all relevant branches and serve all their artifacts
in with github-pages.]
1. Luc: Okay to try pages build [for all relevant branches and see how we like
the workflow].
1. Christian: Was the move to kokkos/development complete?
1. Luc: Yes, I think the PR was merged; [PR# 50][pr-50].
1. Christian: Next step was to go through the material and revise?
1. Luc: Yes.
1. Christian: [Previewed github-pages output on
<https://kokkos.org/kokkos-tutorials/>]
1. Pariksheet: During testing, loading the PDFs would crash my FireFox tab, but
that no longer happens. What browser are you using?
1. Christian: Safari.
1. Pariksheet: One issue is that the slide date is the build date.
1. Patrick: Could put version [instead of the date] e.g. Kokkos 5.2.
1. Luc: SHA version can be meaningful, and Kokkos version can be confusing
because we don't know what Kokkos version it's reflecting the features of.
1. Christian: I think have a date is good [for a timestamp version].
Somewhere. Because PDFs are going to end up in random places.
1. Patrick: I see Sandia on the title slide, but we would need for LANL as
well.
1. Christian: We have these publication / funding notes that have to be put on
slides and papers. Right now title slides only have Sandia. Remove from
title slide, add disclaimer for people to add their own funding statements
to satisfy their institution's need for acknowledgment.
1. Patrick: We can also put the slide at the very end; can be annoying to read
the second slide with things no one cares to read.
1. Christian: Okay for the end. Luc?
1. Luc: I don't know if we even have a rule for that or for contributions from
other places.
1. Christian: Make a separate slide of where to put this and put it at the end.
1. Christian: Let's review module 1 ([PDF][legacy-tag], [top-level
source][module-1]). Introduction to Kokkos. Overview of what the whole
thing is. Kokkos, parallel dispatch, and building. Adapted from
introductory slides for why you would use Kokkos, who is behind it.
Philosophy of C++ standard alignment, prerequisites, and actual programming
model. This is the first 10 slides. Then comes [the] introduction of [the]
programming model, target machine, what is performance portability, and why.
Introduction of patterns, policies, and bodies. New [...] interface we are
starting to adhere to even more. OpenMP policy, something about access
patterns we can maybe move somewhere else. Then data patterns of how we can
parallelize. Introduction to functor and lambda. How it looks together.
Lambda comparison to OpenMP. Reduction; why this pattern is there. Then a
bit about Amdahl's Law and an exercise. Then introduction to CMake, how to
do the embedded Kokkos thing, and [a little] about Spack. Gives [an]
introduction of why you should use kokkos; what's behind it. `parallel_for`
things. How do you start integrating this into a build system of your app.
Content-wise I don't think anything else would go before that. Takes 1.5
hours to get through in the lecture and exercise time.
1. Patrick: Would be nice to see a slide about a lambda and how to decompose.
We never explain what a lambda is.
1. Christian: We explain how a functor and data works. Then we explain how the
functor works.
1. Christian: Translating a function into a lambda is not the same here; that's
a state-less lambda. The body here in `parallel_for` was never in a
function.
1. Patrick: Struggling to explain to University of Michigan students what
lambdas are and that they are not a Kokkos thing. Need to explain passing
by value and reference.
1. Christian: Would you not explain functors and only lambdas? Lambdas are the
auto-generation of a functor. Would you go the same way of explaining what
a functor is first and then show more details?
1. Patrick: Yes, we need more details of what the parentheses do. People are
confused by the strange way of writing those things.
1. Christian: Serial-OpenMP-Kokkos slide does that of showing the syntax.
1. Luc: We show a lot of C++ things that Kokkos leverages heavily.
1. Pariksheet: We could teach about lambdas before the lecture to avoid
overfilling the 1.5 hours.
1. Patrick: We have a lot of Fortran people coming to Kokkos.
1. Christian: I wouldn't try to explain it all at the beginning because people
forget and it's preferable to explain things when you introduce them. At
"Concepts for Data Parallelism" where we haven't introduced any code yet, we
could talk about the C++ features we are heavily using. Functor and
lambdas. Maybe templates if your audience does not know templates at all -
maybe see this [resource for a] C++ introduction. So "Concepts for Data
Parallelism" should introduce what we will use. Introducing [it] too early
would make it hard to make the connections. "C++ -ism[s] that we use in
Kokkos, but [that] are not Kokkos specific".
1. Christian: So let's review the slides again [of this lecture]. Intention of
the [first] slide is to tell people it's a well-supported product used by
lots of people and not 2 PhD students.
1. Pariksheet: At some point [I] would like to address [moving away from]
OpenACC and the perception of C++ complexity [compared to C being currently
taught].
1. Christian: Wouldn't be able to do here, sometime later.
1. Christian: Should we make the slide more graphical?
1. Pariksheet: Spack has a nice exponential curve of contributors, but harder
to do show [here] because Spack has thousands of packages.
1. Patrick: I would like a GitHub contributions chart over time of different
organizations.
1. Luc: Showing that it works on their platform like AMD vendors.
1. Patrick: Showing Gordon Bell submissions as a credibility thing.
1. Christian: Could show primary development team and logos of main
contribution organizations.
1. Patrick: 2 weeks ago I was at an AMD workshop. Showed retiring projects and
how often they are fixing bugs to show people to use the project.
1. Christian: So we want a slide like this but to update it and make it more
modern. Having these numbers not completely outdated all the time.
1. Patrick: Remove compilers from slides?
1. Christian: Can explicitly list architectures and hardware being supported.
1. Patrick: Hardware more important because [a] management person won't know
about compilers.
1. Christian: Could say we use standard vendor toolchains.
1. Christian: Next slide of "Online Resources".
1. Patrick: Maybe have the mailing list?
1. Christian: Don't want [to use the] mailing list as question [submission]
mechanism; we prefer Slack channel[s]. Mailing list is now only for
announcements.
1. Patrick: Make clear that Kokkos Slack is the community hub for questions and
support.
1. Luc: Saying "fastest way to get your questions answered" seems to imply
that.
1. Patrick: Maybe should specify channel to not spam #general or something.
I'm happy with Slack, but be more clear about channel to ask questions.
1. Luc: I think that's reasonable.
1. Christian: I don't think the traffic on #general is that heavy.
1. Christian: Next slide, remove "whitelist domains" because we can't [do that
anymore]. If you know somebody on the Slack, you can ask them to send you
the invite; you don't need to go through us [Slack administrators].
1. Christian: What about [the] list of modules in the "Lecture Series Outline"?
1. Patrick: Adding python.
1. Christian: Could add that as we go.
1. Christian: Module 5 "Tasking" will be replaced by "Graphs", so we need to
update that; we don't have "Tasking" anymore.
1. Christian: In "What to Expect", we should remove the last line on "Exercises
will be talked through at next meeting". Maybe we will walk through at the
end of the recording?
1. Luc: You wrote that because of how you ran the lectures the first time.
1. Christian: We should record that and maybe have a separate recording of the
exercise walkthrough with link on the main page.
1. Luc: Pages with photos of machines could be updated?
1. Christian: Yeah, needs updating for third generation.
1. Luc: Could add European platforms like Juelich and LUMI (Stuttgart).
1. Patrick: Also Japan.
1. Luc: Also whatever the stuff in France.
1. Christian: CSCS is a good candidate.
1. Patrick: Yes, Swiss National Computing Centre (sic).
1. Patrick: Also the C++ from the ISO committee (`C\textt{++}`) because the
larger `++` is ugly.
1. Christian: Sure.
1. Christian: Also need to update captions with OpenACC, SYCL, etc.
1. Pariksheet: Would love to have a citation for these costs.
1. Christian: Could try to find it. Also big question about how AI changes the picture.
1. Christian: Slide "What is Kokkos?" looks still reasonable?
1. Patrick: Change "many large institutions" with names?
1. Christian: 250 institutions in our Slack channel; how do you
choose? Have logos a bit later. Probably "Thousands of users at
hundreds of institutions" at this point.
1. Patrick: Damien showed a pie chart of users coming from academia?
1. Christian: Could add slides of DOE labs, universities.
1. Patrick: Yes, we want to be more backed up. There was a pie chart at HPSF I think.
1. Christian: What would you do as categories? Clearly DOE labs,
universities. Hard to say industry vs. non-industry e-mail address
domains.
1. Patrick: Also CEA.
1. Christian: But number of CEA people not huge. Could have category
of EU or government research labs.
1. Patrick: Want to say not just DOE and also adoption in Europe.
1. Pariksheet: Map of world with institution pins / markers?
1. Patrick: Some fear of US and dominated by DOE labs.
1. Christian: 2 pie charts of DOE, university, commercial / other.
And then another one with location.
1. Patrick: Yes. Fine to have some DOE labs and geographical
distribution to show not just US. Major selling point.
1. Christian: I want to show you a slide from another presentation: US
gov, universities, France, Germany, Japan, others.
1. Patrick: Yes, something like this I would love to see.
1. Christian: We're not distinguishing other countries by institution.
1. Christian: I think that's good. Could add that thought. Some
progress. That's good. If anybody, Patrick in particular, could
do some of these notes as changes.
1. Patrick: I have to wait for LANL approval for PDFs to review and
once I can put on the text I can review it.
1. Christian: Every change to Kokkos tutorials needs approval?
1. Patrick: I concatenate all the slides, submit, then [after changing] submit
it again. I can make changes but cannot push. You have to send slides with
images to add them. I cannot operationally push without approval from LANL.
1. Christian: Every update needs a revision in your system?
1. Patrick: Only major updates.
1. Christian: Similar to our system.
1. Patrick: Don't want to get into trouble with export control.
1. Christian: I'll send you these slides of a presentation I gave.
1. Patrick: Maybe only just the pie charts and something about the Linux
Foundation.
1. Christian: Not a bad idea to talk about being part of HPSF and what HPSF is.

## Tasks for next meeting

1. Christian to send Patrick his two presentation slides with the Kokkos usage
/ contributors piecharts and description of HPSF.
1. Work on remainder of [issue 156][issue-156]:
1. Render PDFs for kokkos/development
1. Start updating module 1; attempted summary of minutes above:
1. Remove the Sandia acknowledgment from the title slide text and replace it
with a disclaimer for people to add their own funding statements in a
slide at the end to satisfy their institution's need for acknowledgment.
(Christian, Patrick). Applies to
[`KokkosTutorial_01_Introduction.tex`][module-1], slide 1/72 (as well as
all other module title slides).
1. Maybe move [memory] access patterns elsewhere? (Christian). Applies to
[`Section_Kokkos.tex`][section-kokkos], slides 28--29/72?
1. After explaining what a functor is, explain a little about
general C++ lambda syntax (e.g. `=` by value and `&` by
reference) to help understand how they are used in functors;
would help students unfamiliar with C++ lambdas thinking they
are Kokkos specific. (Patrick). Applies to
[`Section_DataParallelPatterns.tex`][section-dataparallelpatterns],
slides 33--39/72
1. Mention the general C++ features we will be using in the
"Concepts for Data Parallelism" slide of both lambdas and
templates along with resources where they can brush up / learn
more about those outside of the short review in this module.
(Patrick, Christian). Applies to
[`Section_Kokkos.tex`][section-kokkos], slide 24/72.
1. Compare Kokkos to OpenACC, etc. in a table and the vendor toolkit issues
between the two approaches. (Pariksheet)
1. Justify use of C++ e.g. compare to C, Fortran, Python. (Pariksheet)
1. Address perceptions of complexity of C++. (Pariksheet)
1. In the first non-title slide (applies to
[`Section_LectureOverview.tex`][section-lectureoverview], slide
2/72)
1. Backport the usage / contributor pie charts from Christian's other
presentation to make it more graphical and show use outside the DOE
and outside the US. (Christian, Patrick).
1. List Gordon Bell submissions for credibility. (Patrick).
1. Show [logos of] primary development team and logos of main
contribution organizations. (Christian).
1. Show in this slide or a subsequent slide show that it is well
supported with indications of bug fixes, etc. (Luc).
1. Remove compilers; instead explicitiy list architectures and
hardware supported and also say standard vendor toolchains
supported. (Patrick, Christian).
1. In "Online Resources" slide (applies to
[`Section_LectureOverview.tex`][section-lectureoverview], slide
3/72):
1. Could specify e.g. `#kokkos-tutorial` Slack channel to not
spam `#general` although there is not as much traffic in
`#general`. (Patrick, Christian, Luc).
1. Add link to built binary PDFs no longer part of
<https://github.com/kokkos/kokkos-tutorials/>. (Pariksheet).
1. Remove "whitelist domains" because we can't [do that
anymore]. If you know somebody on the Slack, you can ask
them to send you the invite; you don't need to go through us
[Slack administrators]. (Christian).
1. In "Lecture Series Outline" slide (applies to
[`Section_LectureOverview.tex`][section-lectureoverview], slide
4/72):
1. In Module 5, replace "Tasking" with "Graphs"; we don't have
"Tasking" anymore. (Christian).
1. In "What to Expect" slide (applies to
[`Section_LectureOverview.tex`][section-lectureoverview], slide
5/72):
1. Remove the last line on "Exercises will be talked through at
next meeting"; have a separate recording [of the exercise
solutions] and link to the main [tutorials] page. (Christian).
1. In "The HPC Hardawre Landscape" (applies to
[`SectionWhatIsKokkos.tex`][section-whatiskokkos], slide 8/72):
1. Update photos with third generation machines at Juelich,
LUMI, Japan, France, CSCS Swiss National Supercomputing
Centre. (Luc, Patrick, Christian).
1. Update captions with OpenACC, SYCL, etc.
1. In "Cost of Coding" (applies to
[`SectionWhatIsKokkos.tex`][section-whatiskokkos], slide 9/72):
1. Citations / industry reports supporting cost estimates,
perhaps including how AI changes the picture. (Pariksheet,
Christian)
1. In "What is Kokkos" (applies to
[`SectionWhatIsKokkos.tex`][section-whatiskokkos], slide 10/72):
1. Change "Hundreds of users at many large institutions" to
"Thousands of users at hundreds of institutions". Also use
the pie chart from HPSF. (Patrick, Christian).
1. In all tex files replace `C++` with `C\textt{++}` as recommended by
the ISO-C++ committee. (Patrick).

## Next meeting

2025-06-02.

## Attendees

- Christian Trott
- Luc Berger-Vergiat
- Patrick Diehl
- Pariksheet Nanda

<!-- References -->
[issue-156]: <https://github.com/kokkos/kokkos-tutorials/issues/156>
[pr-159]: <https://github.com/kokkos/kokkos-tutorials/pull/159>
[pr-50]: <https://github.com/kokkos/development/pull/50>
[legacy-tag]: <https://github.com/kokkos/kokkos-tutorials/releases/tag/legacy>
[module-1]: <https://github.com/kokkos/kokkos-tutorials/blob/be8ccb6ed0b869406404609ac1f05ab75ee944a7/Content/Presentations/modularized/KokkosTutorial_01_Introduction.tex>
[section-lectureoverview]: <https://github.com/kokkos/kokkos-tutorials/blob/be8ccb6ed0b869406404609ac1f05ab75ee944a7/Content/Presentations/sections/Section_LectureOverview.tex>
[section-whatiskokkos]: <https://github.com/kokkos/kokkos-tutorials/blob/be8ccb6ed0b869406404609ac1f05ab75ee944a7/Content/Presentations/sections/Section_WhatIsKokkos.tex>
[section-dataparallelpatterns]: <https://github.com/kokkos/kokkos-tutorials/blob/be8ccb6ed0b869406404609ac1f05ab75ee944a7/Content/Presentations/sections/Section_DataParallelPatterns.tex>
[section-kokkos]: <https://github.com/kokkos/kokkos-tutorials/blob/be8ccb6ed0b869406404609ac1f05ab75ee944a7/Content/Presentations/sections/Section_Kokkos.tex>