futhark-0.16.3: An optimising compiler for a functional, array-oriented language.

Futhark.Optimise.Unstream

Description

Sequentialise any remaining SOACs. It is very important that this is run *after* any access-pattern-related optimisation, because this pass will destroy information.

This pass conceptually contains three subpasses:

1. Sequentialise Stream operations, leaving other SOACs intact.
2. Apply whole-program simplification.
3. Sequentialise remaining SOACs.

This is because sequentialisation of streams creates many SOACs operating on single-element arrays, which can be efficiently simplified away, but only *before* they are turned into loops. In principle this pass could be split into multiple, but for now it is kept together.

Synopsis

# Documentation

The pass definition.