This lesson is in the early stages of development (Alpha version)

Design for Heterogeneity

Overview

Teaching: 0 min
Exercises: 0 min
Questions
  • How should one design software for heterogeneous platforms

Objectives
  • To understand how research software design needs to adapt for heterogeneous platforms

Mechanisms Needed by the Code

Underlying Ideas: Unification of Computational Expressions

Make the same code work on different devices

Underlying Ideas: Moving Work and Data to the Target

Parallelization Models

Assigning work within the node

“Parallel For” or directives with unified memory

Directives or specific programming model for explicit data movement

More complex data orchestration system for asynchronous computation

Task based work distribution

Underlying Ideas: Mapping Work to Targets

This is how many abstraction layers work

These are specified either through constructs or pragmas

It can also be the end user who figures out the mapping

In either case performance depends upon how well the mapping is done

Features and Abstractions to be Added to Earlier Example

Mechanisms Needed by the Code : Example Flash-X

Construction of Application with Components and Tools

Key Points

  • More separation of concerns and abstractions are needed