Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Facilities for fusing two SOACs.
When the fusion algorithm decides that it's worth fusing two SOAC statements, this is the module that tries to see if that's possible. May involve massaging either producer or consumer in various ways.
Synopsis
- data FusedSOAC = FusedSOAC {
- fsSOAC :: SOAC
- fsOutputTransform :: ArrayTransforms
- fsOutNames :: [VName]
- data Mode
- attemptFusion :: (HasScope SOACS m, MonadFreshNames m) => Mode -> Names -> [VName] -> SOAC -> FusedSOAC -> m (Maybe FusedSOAC)
Documentation
A fused SOAC contains a bit of extra information.
FusedSOAC | |
|
Whether we are doing horizontal or vertical fusion. Note that vertical also includes "diagonal" fusion, where some producer results are also produced by the final SOAC.