[Mlir-commits] [mlir] [mlir][sparse] cleanup of COO (PR #69239)

Aart Bik llvmlistbot at llvm.org
Mon Oct 16 12:14:27 PDT 2023


https://github.com/aartbik created https://github.com/llvm/llvm-project/pull/69239

Moves typedef to only file where it is used.
Removes some deadcode. Some minor doc changes.

>From 0d80455c0e1f90ddee10e5bb5215405e673a71ae Mon Sep 17 00:00:00 2001
From: Aart Bik <ajcbik at google.com>
Date: Mon, 16 Oct 2023 12:12:55 -0700
Subject: [PATCH] [mlir][sparse] cleanup of COO

Moves typedef to only file where it is used.
Removes some deadcode. Some minor doc changes.
---
 .../mlir/ExecutionEngine/SparseTensor/COO.h   | 21 +++++--------------
 .../ExecutionEngine/SparseTensor/Storage.h    |  5 +++++
 2 files changed, 10 insertions(+), 16 deletions(-)

diff --git a/mlir/include/mlir/ExecutionEngine/SparseTensor/COO.h b/mlir/include/mlir/ExecutionEngine/SparseTensor/COO.h
index f6eb45defcc1cfd..721e9bc69adac20 100644
--- a/mlir/include/mlir/ExecutionEngine/SparseTensor/COO.h
+++ b/mlir/include/mlir/ExecutionEngine/SparseTensor/COO.h
@@ -58,21 +58,13 @@ struct ElementLT final {
   const uint64_t rank;
 };
 
-/// The type of callback functions which receive an element.
-template <typename V>
-using ElementConsumer =
-    const std::function<void(const std::vector<uint64_t> &, V)> &;
-
 /// A memory-resident sparse tensor in coordinate-scheme representation
-/// (a collection of `Element`s).  This data structure is used as
-/// an intermediate representation; e.g., for reading sparse tensors
-/// from external formats into memory, or for certain conversions between
-/// different `SparseTensorStorage` formats.
+/// (a collection of `Element`s). This data structure is used as an
+/// intermediate representation, e.g., for reading sparse tensors from
+/// external formats into memory.
 template <typename V>
 class SparseTensorCOO final {
 public:
-  using const_iterator = typename std::vector<Element<V>>::const_iterator;
-
   /// Constructs a new coordinate-scheme sparse tensor with the given
   /// sizes and an optional initial storage capacity.
   explicit SparseTensorCOO(const std::vector<uint64_t> &dimSizes,
@@ -106,7 +98,7 @@ class SparseTensorCOO final {
   /// Returns the `operator<` closure object for the COO's element type.
   ElementLT<V> getElementLT() const { return ElementLT<V>(getRank()); }
 
-  /// Adds an element to the tensor. This method invalidates all iterators.
+  /// Adds an element to the tensor.
   void add(const std::vector<uint64_t> &dimCoords, V val) {
     const uint64_t *base = coordinates.data();
     const uint64_t size = coordinates.size();
@@ -135,12 +127,9 @@ class SparseTensorCOO final {
     elements.push_back(addedElem);
   }
 
-  const_iterator begin() const { return elements.cbegin(); }
-  const_iterator end() const { return elements.cend(); }
-
   /// Sorts elements lexicographically by coordinates. If a coordinate
   /// is mapped to multiple values, then the relative order of those
-  /// values is unspecified. This method invalidates all iterators.
+  /// values is unspecified.
   void sort() {
     if (isSorted)
       return;
diff --git a/mlir/include/mlir/ExecutionEngine/SparseTensor/Storage.h b/mlir/include/mlir/ExecutionEngine/SparseTensor/Storage.h
index 5e57facaf2376f6..c5be3d1acc33783 100644
--- a/mlir/include/mlir/ExecutionEngine/SparseTensor/Storage.h
+++ b/mlir/include/mlir/ExecutionEngine/SparseTensor/Storage.h
@@ -37,6 +37,11 @@
 namespace mlir {
 namespace sparse_tensor {
 
+/// The type of callback functions which receive an element.
+template <typename V>
+using ElementConsumer =
+    const std::function<void(const std::vector<uint64_t> &, V)> &;
+
 // Forward references.
 template <typename V>
 class SparseTensorEnumeratorBase;



More information about the Mlir-commits mailing list