Linalg portion of the tutorial - part 2
authorNicolas Vasilache <ntv@google.com>
Tue, 2 Apr 2019 17:32:18 +0000 (10:32 -0700)
committerMehdi Amini <joker.eph@gmail.com>
Tue, 2 Apr 2019 20:40:33 +0000 (13:40 -0700)
commit8affb783a8e6e430faa1e2015e261377bbdd3554
treeecf60255af4fa86e734bb037c8a91f2937973a5b
parent0be63691761b90db55573aaf5131c7d46a720e74
Linalg portion of the tutorial - part 2

    The second part of the Linalg tutorial introduces:
    1. the TensorContractionBase type from which all tensor contractions derive;
    2. a basic set of operations DotOp, MatvecOp and MatmulOp;
    3. a helper function `createFullyComposedView` that walks the producers of a SliceOp up until the root ViewOp and returns a single ViewOp;
    4. programmatic examples to test MLIR construction involving these types.

    This CL also refactors file organization so that:
    1. clients only need to include Ops.h and Types.h while keeping independent small files separate for the purpose of the tutorial;
    2. each step of the tutorial has its own linalgxxx include directory and each include explicitly states in which part of the tutorial a particular concept was introduced.

    Lastly the following cleanups are applied:
    1. ValueOrSliceOp is removed in favor of simpler helper function.
    2. methods that walk back the chain of ops are removed from the core ops and added to a separate Analysis.
    3. various additional cleanups.

--

PiperOrigin-RevId: 241555769
30 files changed:
mlir/tutorial/Linalg1/Example.cpp
mlir/tutorial/Linalg1/TestHarness.h
mlir/tutorial/Linalg1/include/linalg1/Analysis.h [new file with mode: 0644]
mlir/tutorial/Linalg1/include/linalg1/Common.h [moved from mlir/tutorial/Linalg1/include/linalg/Common.h with 70% similarity]
mlir/tutorial/Linalg1/include/linalg1/Dialect.h [moved from mlir/tutorial/Linalg1/include/linalg/Dialect.h with 94% similarity]
mlir/tutorial/Linalg1/include/linalg1/Intrinsics.h [moved from mlir/tutorial/Linalg1/include/linalg/Ops.h with 53% similarity]
mlir/tutorial/Linalg1/include/linalg1/Ops.h [new file with mode: 0644]
mlir/tutorial/Linalg1/include/linalg1/RangeOp.h [moved from mlir/tutorial/Linalg1/include/linalg/RangeOp.h with 96% similarity]
mlir/tutorial/Linalg1/include/linalg1/RangeType.h [moved from mlir/tutorial/Linalg1/include/linalg/RangeType.h with 91% similarity]
mlir/tutorial/Linalg1/include/linalg1/SliceOp.h [moved from mlir/tutorial/Linalg1/include/linalg/SliceOp.h with 82% similarity]
mlir/tutorial/Linalg1/include/linalg1/Types.h [moved from mlir/tutorial/Linalg1/include/linalg/Types.h with 87% similarity]
mlir/tutorial/Linalg1/include/linalg1/ViewOp.h [moved from mlir/tutorial/Linalg1/include/linalg/ViewOp.h with 90% similarity]
mlir/tutorial/Linalg1/include/linalg1/ViewType.h [moved from mlir/tutorial/Linalg1/include/linalg/ViewType.h with 92% similarity]
mlir/tutorial/Linalg1/lib/Analysis.cpp [new file with mode: 0644]
mlir/tutorial/Linalg1/lib/Common.cpp
mlir/tutorial/Linalg1/lib/Dialect.cpp
mlir/tutorial/Linalg1/lib/DialectRegistration.cpp
mlir/tutorial/Linalg1/lib/RangeOp.cpp
mlir/tutorial/Linalg1/lib/SliceOp.cpp
mlir/tutorial/Linalg1/lib/ViewOp.cpp
mlir/tutorial/Linalg1/lib/ViewType.cpp
mlir/tutorial/Linalg2/Example.cpp [new file with mode: 0644]
mlir/tutorial/Linalg2/include/linalg2/Analysis.h [new file with mode: 0644]
mlir/tutorial/Linalg2/include/linalg2/Intrinsics.h [new file with mode: 0644]
mlir/tutorial/Linalg2/include/linalg2/Ops.h [new file with mode: 0644]
mlir/tutorial/Linalg2/include/linalg2/TensorOps.h [new file with mode: 0644]
mlir/tutorial/Linalg2/include/linalg2/Transforms.h [new file with mode: 0644]
mlir/tutorial/Linalg2/lib/DialectRegistration.cpp [new file with mode: 0644]
mlir/tutorial/Linalg2/lib/TensorOps.cpp [new file with mode: 0644]
mlir/tutorial/Linalg2/lib/Transforms.cpp [new file with mode: 0644]