C++ for Scientific and High Performance Computing

Modern C++'s move semantics, constexpr (constant expressions), well defined memory models for concurrency and parallelism features (e.g., memory models, threads, mutexes, locks, condition variables, and atomics), variadic templates, additional data structures/objects, etc. can be used to write high-level code that is significantly shorter, comprehensible, and efficient. This one-day course will focus on understanding and leveraging a number of modern C++ language features so the attendee can impart such within his/her own C++ programs. During the day, in addition to instruction and discussions with various C++ concepts/features, attendees should expect to do some hands-on exercises.

This class will focus on:

  • move semantics
  • constant expressions (incl. compile-time computations)
  • variadic template expressions (incl. C++17 fold expressions)
  • using concurrency and parallel constructs
  • calling Fortran code from C++ and vice versa

Target Audience: Researchers and students who are using C++.

Instructor: Paul Preney, SHARCNET, University of Windsor.

Prerequisites: The attendee is expected to know how to write procedural and object-oriented C++ code (C++98 or newer). If familiarity with C++ is weak, the attendee is expected to have intermediate to advanced experience writing (i) object-oriented code and (ii) concurrent code that exploits multithreading (e.g., Java, C/C++ with Pthreads, and/or OpenMP). (Feel free to contact the instructor via help@sharcnet.ca asking before the course if desired.)