Draft page

This page is an outline. It describes what will be covered and is not yet complete technical documentation.

Kernels can be written at several levels of abstraction, from vendor assembly through domain-specific languages to compiler-generated code. The levels differ in achievable performance, portability and how much effort each change costs.

This page compares them and suggests how to choose.

What you will learn

  • The levels of abstraction available for kernel work.
  • How portability and peak performance trade against each other.
  • Where compiler-based approaches are sufficient.
  • Which profiling tools to use to direct the effort.

This page is an outline. The subsections below are the planned structure; they are filled in as the handbook is written.

Levels of abstraction

Draft

Vendor libraries

Draft

Kernel domain-specific languages

Draft

Compiler-based approaches

Draft

Profiling tools

Draft

Choosing an approach

Draft