futhark-0.20.0: An optimising compiler for a functional, array-oriented language.
Safe HaskellNone
LanguageHaskell2010

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

unstreamKernels :: Pass Kernels Kernels Source #

The pass for GPU kernels.

unstreamMC :: Pass MC MC Source #

The pass for multicore.