Preliminaries

Note

This is an “about the book” chapter.

Motivation

This is not all-inclusive.

Tenets:

  • Who are the next generation of research software engineers who want to consider HPC careers?

  • Most graduates drawn to modern web development, data science, and machine learning jobs.

  • While all are wonderful jobs, this is a lost opportunity, as most of the modern/hip languages are designed for improving how we solve problems.

  • Most graduates learning about cool languages that offer higher-order thinking, e.g. Scala, Go, Rust, and numerous scripting languages.

But…

  • HPC itself is still cool. Where else can you have access to so many cores and novel architectures?

  • The most modern languages still punt to C to provide acceleration.

  • Research software engineers who know about computer systems and software engineering are most likely to progress by embracing these two areas (computer systems and SE)

Topics

These are the planned chapters:

  • Parallel Programming Principles

  • Development Environment [minimum friction approaches]

  • Software Engineering

  • Modern C++ as a Better C/C++

  • Data Parallel C++

  • Multicore Programming

  • Working with Devices

  • Going Distributed

  • Performance Evalution