From a5ca238fd377f50e8f961cf7137198a7cb26dec9 Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Wed, 16 Aug 2023 12:03:34 -0500 Subject: [PATCH] fixes 152 --- .../background/assets/logical_v_physical.png | Bin 0 -> 72854 bytes docs/source/background/index.rst | 1 + docs/source/background/logical_v_physical.rst | 71 ++++++++++++++++++ docs/source/developer/design/overview.rst | 30 ++++++-- 4 files changed, 94 insertions(+), 8 deletions(-) create mode 100644 docs/source/background/assets/logical_v_physical.png create mode 100644 docs/source/background/logical_v_physical.rst diff --git a/docs/source/background/assets/logical_v_physical.png b/docs/source/background/assets/logical_v_physical.png new file mode 100644 index 0000000000000000000000000000000000000000..7312f8c4c20fcdd5bb46195664d5a53b08e1442f GIT binary patch literal 72854 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. +`ParallelZone `__. Implementation-Facing Classes ============================= @@ -307,7 +323,6 @@ as: - Fundamental type of the values (*e.g.*, float, double, etc.) - Vectorization strategy (row-major vs. column-major) - Value location: distribution, RAM, disk, on-the-fly, GPU -- Distribution strategy Buffer ------ @@ -339,7 +354,7 @@ describing the runtime properties of the tensor: - Actual shape of the tensor (including tiling) - Actual symmetry (accounting for actual shape) - Actual sparsity of the tensor (accounting for symmetry) -- Distribution for multi-process tensors +- Distribution for distributed tensors Expression @@ -353,27 +368,26 @@ in a user-facing manner; however, the expression layer is specifically designed to appear to the user like they are working with only ``TensorWrapper`` objects, which is why we consider it an implementation detail. Responsibilities include: -- Assembling the :ref:`term_cst` from the DSL. +- Assembling the :ref:`term_cst` from the :ref:`term_dsl`. - Express transformations of a single tensor - Express binary operations - Represent branching nodes of the abstract syntax tree - OpGraph ------- Main discussion: :ref:`tw_designing_the_opgraph`. The ``Expression`` component contains a user-friendly mechanism for composing -tensors using TensorWrapper's DSL. The result is a CSL. In practice, CSLs -contain extraneous information (and in C++ are typically represented by +tensors using TensorWrapper's DSL. The result is a :ref:`term_cst`. In practice, +CSTs contain extraneous information (and in C++ are typically represented by heavily nested template instantiations which are not fun to look at). The ``OpGraph`` component is designed to be an easier-to-manipulate, more-programmer-friendly representation of the tensor algebra the user requested than the ``Expression`` component. It is the ``OpGraph`` which is used to drive executing the backends. Responsibilities include: -- Converting the CST to an AST +- Converting the CST to an :ref:`term_ast` - Runtime optimizations of the AST Implementation-Facing External Dependencies