Best Modern CMake Practices and Performance Portability with CMake and Kokkos

What is CMake?

CMake is an open-source, cross-platform family of tools designed to build, test, and package software. CMake is used to control the software compilation process using simple platform and compiler-independent configuration files, and generating native makefiles and workspaces that can be used in the compiler environment of your choice. The suite of CMake tools is part of Kitware’s collection of commercially supported open-source platforms for software development.

Why you should attend the course

The course will begin with a brief introduction to CMake, along with a refresher on writing maintainable CMake build systems to ensure that everyone attending is up to date. The course will then progress to Modern CMake best practices, including covering generator expressions, installing targets, and tips to improve your CMake scripts. Finally, the course will cover portable GPU programming with CMake and Kokkos, and then there will be time at the end of the course for an open question and answer session.

Course design

The CMake course is designed to be interactive, meaning there will be a mix of theory and application with a set of tutorials and exercises, as well as ongoing dialogue between instructors and attendees, and opportunities for Q&A throughout the sessions. 

Agenda

Tuesday 2/24 and Wednesday 2/25, 12:00 pm - 4:00 pm Central Time

  • Brief introduction / refresher on writing maintainable CMake build systems
  • Modern CMake best practices
  • Portable GPU programming with CMake and Kokkos
  • Open Q&A session

Prerequirements

For the exercise, we recommend that CMake version 3.22 or newer is installed on your personal computer. For the Portable GPU programming part, your affiliation will provide access to GPU resources. Please read the following instructions for each affiliation:

Acknowledgments

The training is funded by Argonne National Laboratory, Los Alamos National Laboratory, and NERSC; however, employees from all laboratories are welcome to attend.

How to Attend

Please register here. Participants will be added to a calendar event that includes the meeting room and zoom link closer to the event.