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.)