The checklist for suggested revisions contains:
- Slide titles and slide numbers that refer to the Module 2 legacy PDF (2020 version).
- When making changes, refer to the latest PDF built from CI.
- People in parenthesis who weighed in on the discussion during the Education and Training working group meetings and are potential contributors for the suggested change. Items are pulled from the following meetings of the working group:
2026-06-16, 2026-06-23, 2026-06-30.
Change log:
Details
- 2026-08-25
- Added **[assignees:]** working on PRs discussed at 2026-08-18 Education and Training WG meeting.
- 2026-07-04
- Added suggestions from 2026-06-23 and 2026-06-30 Education and Training WG meetings.
- Added space between # and 2 of Exercise # 2 to prevent GitHub from autolinking to issue 2.
The checklist for suggested revisions contains:
2026-06-16, 2026-06-23, 2026-06-30.
_xa nd_yvectors allocated on the CPU fail when trying to access them from GPU. However, a Complication these days is with HMM [Heterogeneous Memory Management] where it does not actually fail but is slow. Need a comment somewhere of it not being true anymore. (Christian)\note{...}to guide instructors in an instructor-specific PDF build of the slides about sign-posting anything that will be covered in a future module / exercise. The notes can be enable with an option like\setbeameroption{show notes on second screen=right}(Pariksheet)assert(a.data() != nullptr);because people shouldn't be doing that anymore. It's part of interoperability with raw arrays using unmanaged views. (Christian)static_assert(a.rank() == 2);(Christian)is_allocated()function (which generally doesa.data() != nullptr). (Christian, Rahul)\note{...}for functions likedata_handleandmappingthat returns layout. And accessor function. But we haven't introduced these concepts yet and they are much less used than this. (Christian)Kokkos::SharedSpaceinexercise_2_begin.cppfile) that we have not talked about yet because later we want learners to plug in SharedSpace memory explicitly to run the example on the GPU. (Christian)Kokkos::SharedSpaceand compile with-D Kokkos_ENABLE_CUDA=ONor-D Kokkos_ENABLE_${GPU}=ON.exercise_2_begin.cppfile for separate02_Exercise.hostand02_Exercise.cuda(rename to02_Exercise.gpu?) targets; these targets were from usingMakefiles before the currentCMakeLists.txtfile. Christian has an idea of what he wants to do about this. When Pariksheet tried, it theCMakeLists.txtseems to pick up whatever the spack Kokkos package was compiled with. (Pariksheet, Christian)\note{...}that execution space is not just a representation of physical resources but a mechanism to leverage them; for example, serial and OpenMP run on the same cores with two different mechanisms. (Pariksheet, Christian)DefaultExecutionSpacewhich we should introduce earlier. Revise wording of "host", "host process" and "default [host] execution space" to not oversimplify: for example, the red lines highlighted in the code may be executed in aSerialinstance's ownstd::threadwhich is not the same as the host process thread and alsoOpenMPmay not include the host process thread (Christian, Rahul)numberOfIntervalstonso that we have enough space to also explicitly specifyRangePolicywithDefaultExecutionSpacetype. Explicitly say thatRangePolicy<>(0, n)runs onDefaultExecutionSpace. (Rahul, Christian)DefaultMemorySpaceandDefaultHostExecutionSpacein this and previous slides. Need to introduceDefaultMemorySpaceandDefaultHostMemorySpaceto explain the concept "memory space [is] set at compile time".HostSpacealways exists and is guaranteed, but [in the code at the bottom of the slide] we only haveDefaultExecutionSpaceone time and also not sure it's correct C++ with maybe a missing type name.CudaSpace,CudaUVMSpaceat all beacuse it's only intended for interoperating with raw Cuda code from Kokkos. At the least say they are non-portable. (Christian)CudaSpacewith genericGPUSpacehopefully by November; have to introduce an alias forDefaultExecutionSpace::MemorySpace. (Christian, Patrick)host.extent(0)and say "Metadata is getting copied and accessible, but deferenceability depends on where the data lives".std::mdspanstd::layout_left/std::layout_right. (Patrick, Luc, Christian)CudaSpacehaveGPUMemorySpaces? (Christian)KOKKOS_LAMBDA(...)can be gray. (Christian)Kokkos::Max<float>(max_value)another color forsumon the same line. Highlight the two different sums with different colors, so we have different colors for the sums and the max. Make sure to highlight in the conditional.h_sumandd_sumto be more clear. (Patrick, Christian)Change log:
Details