Loading...
Searching...
No Matches
Vectorization
Common

Abstractions for using vectorization libraries. More...

Collaboration diagram for Vectorization:

## Topics

| Application Developer's Interface
| How to request vectorization from Dune.
| Library Developer's Interface
| How to support vectorization in Dune classes.
| Abstraction Developer's Interface
| How to add support for a new vectorization library.

## Detailed Description

Abstractions for using vectorization libraries.

This vectorization abstraction targets three kinds of developers:

- Application developers create SIMD types (usually with the help of some vectorization library) and pass them to the Dune library. They are responsible for a compilation unit, typically a .cc file that is compiled into a program or part of a library. Since they create the type, they have the knowledge which library abstraction is needed and are responsible for including that, as well as making sure the correct compiler flags are provided.
- Library developers implement support in Dune for handling SIMD types, e.g. by extending some existing class. By using the interfaces provided here, they should not have to worry about the exact vectorization library being used, or whether a vectorization library is used at all.
- Abstraction developers provide the necessary hooks to make a vectorization library known to this interface. They are also responsible for documenting for application developers how to meet the prerequisites for using the abstraction, e.g. which headers to include and how to add the necessary compiler flags.