Part 4 High performance computing ecosystems

 

With today’s high performance computing (HPC) systems, it is not enough for you to just learn parallel programming languages. You also need to understand many aspects of the ecosystem including the following:

  • Placing and scheduling your processes for better performance
  • Requesting and scheduling resources using an HPC batch system
  • Writing and reading data in parallel on parallel file systems
  • Making full use of the tools and resources to analyze performance and assist software development

These are just some of the important topics that surround the core parallel programming languages; forming a complementary set of capabilities we call the HPC ecosystem.

Our computing systems are exponentially growing in both complexity and the number of cores. Many of the considerations in HPC are also becoming important for high-end workstations. With so many processor cores, we need to control the placement and scheduling of processes within a node, a practice that is loosely called process affinity and done in conjunction with the OS kernel. As the number of cores on processors grows, the tools for controlling process affinity are quickly being developed to help with new concerns about process placement. We’ll cover some of the techniques that are available for assigning process affinity in chapter 14.