Add docs to fusion phases
authorBen Lippmeier <benl@ouroborus.net>
Fri, 7 Oct 2011 01:01:07 +0000 (12:01 +1100)
committerBen Lippmeier <benl@ouroborus.net>
Tue, 11 Oct 2011 04:11:42 +0000 (15:11 +1100)
dph-base/include/fusion-phases.h

index f86f691..d7adef5 100644 (file)
@@ -1,16 +1,75 @@
-#define INLINE_U       INLINE
-#define INLINE_UP      INLINE
-#define INLINE_STREAM  INLINE [1]
-#define INLINE_DIST    INLINE [1]
-#define INLINE_PA      INLINE
-#define INLINE_BACKEND INLINE [2]
-#define INLINE_INNER   INLINE [0]
-
-#define PHASE_PA
+-------------------------------------------------------------------------------
+-- These are the main simplifier phases used in DPH.
+--  The phase is numbered after the set of bindings that are inlined in that
+--  phase. We start from the "outermost" combinators produced by the
+--  vectoriser and work our way down to the Data.Vector streams.
+--
+
+-- Inline bindings in user code, and closure functions.
+-- This is dph-common-vseg:D.A.P.Lifted.Closure
+#define PHASE_USER      [4]
+
+-- Inline combinators that work on PArray and PData.
+-- This is dph-common-vseg:D.A.P.PArray
+#define PHASE_PA        [3]
+
+-- Inline combinators from the unlifted backends
+-- This is dph-prim-par:D.A.P.Unlifted.Parallel
+--     and dph-prim-par:D.A.P.Unlifted.Sequential
 #define PHASE_BACKEND   [2]
+
+-- Inline combinators for distributed arrays.
+-- This is dph-prim-par:D.A.P.Unlifted.Distributed
 #define PHASE_DIST      [1]
+
+-- Inline combinators for Data.Vector
 #define PHASE_STREAM    [1]
+
+-- Inline stuff in inner loops.
 #define PHASE_INNER     [0]
 
+
 #define UNTIL_PHASE_BACKEND [~2]
 
+
+-------------------------------------------------------------------------------
+-- More fine-grained inliner pragmas that we use to annotate the actual
+-- bindings. When debugging it's useful to control exactly what gets inlined.
+
+-- Bindings in hand-crafted example code.
+#define INLINE_USER    INLINE PHASE_USER
+
+-- Closure combinators produced by the vectoriser.
+-- dph-common-vseg:D.A.P.Lifted.Closure
+#define INLINE_CLOSURE INLINE PHASE_USER
+
+-- Stuff that works on PArrays
+-- dph-common-vseg:D.A.P.Lifted.Combinators
+-- dph-common-vseg:D.A.P.PArray
+#define INLINE_PA      INLINE PHASE_PA
+
+-- dph-common-vseg:D.A.P.PArray.PData
+#define INLINE_PDATA   INLINE PHASE_PA
+
+-- Generic stuff in the unlifted backend.
+#define INLINE_BACKEND INLINE PHASE_BACKEND
+
+-- Unlifted parallel array combinators.
+-- dph-prim-par:D.A.P.Unlifted.Parallel
+#define INLINE_UP      INLINE PHASE_BACKEND
+
+-- Unlifted sequential array combinators.
+-- dph-prim-seq:D.A.P.Unlifted.Sequential
+#define INLINE_U       INLINE PHASE_BACKEND
+
+-- dph-prim-par:D.A.P.Unlifted.Distributed
+#define INLINE_DIST    INLINE PHASE_DIST
+
+-- dph-prim-seq:D.A.P.Unlifted.Sequential.Vector
+#define INLINE_STREAM  INLINE PHASE_STREAM
+
+
+#define INLINE_INNER   INLINE PHASE_INNER
+
+
+