[Mlir-commits] [mlir] [mlir][sparse] remove deprecated toCOO from sparse runtime support lib (PR #85319)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Thu Mar 14 14:50:32 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir-sparse
Author: Aart Bik (aartbik)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/85319.diff
1 Files Affected:
- (modified) mlir/include/mlir/ExecutionEngine/SparseTensor/Storage.h (+1-60)
``````````diff
diff --git a/mlir/include/mlir/ExecutionEngine/SparseTensor/Storage.h b/mlir/include/mlir/ExecutionEngine/SparseTensor/Storage.h
index 468782ebef4e34..b207fc1ee104d3 100644
--- a/mlir/include/mlir/ExecutionEngine/SparseTensor/Storage.h
+++ b/mlir/include/mlir/ExecutionEngine/SparseTensor/Storage.h
@@ -197,7 +197,7 @@ class SparseTensorStorage final : public SparseTensorStorageBase {
const uint64_t *lvl2dim)
: SparseTensorStorageBase(dimRank, dimSizes, lvlRank, lvlSizes, lvlTypes,
dim2lvl, lvl2dim),
- positions(lvlRank), coordinates(lvlRank), lvlCursor(lvlRank), coo() {}
+ positions(lvlRank), coordinates(lvlRank), lvlCursor(lvlRank) {}
public:
/// Constructs a sparse tensor with the given encoding, and allocates
@@ -337,16 +337,6 @@ class SparseTensorStorage final : public SparseTensorStorageBase {
}
}
- /// Allocates a new COO object and initializes it with the contents.
- /// Callers must make sure to delete the COO when they're done with it.
- SparseTensorCOO<V> *toCOO() {
- std::vector<uint64_t> dimCoords(getDimRank());
- coo = new SparseTensorCOO<V>(getDimSizes(), values.size());
- toCOO(0, 0, dimCoords);
- assert(coo->getElements().size() == values.size());
- return coo;
- }
-
/// Sort the unordered tensor in place, the method assumes that it is
/// an unordered COO tensor.
void sortInPlace() {
@@ -556,58 +546,10 @@ class SparseTensorStorage final : public SparseTensorStorageBase {
return -1u;
}
- // Performs forall on level entries and inserts into dim COO.
- void toCOO(uint64_t parentPos, uint64_t l, std::vector<uint64_t> &dimCoords) {
- if (l == getLvlRank()) {
- map.pushbackward(lvlCursor.data(), dimCoords.data());
- assert(coo);
- assert(parentPos < values.size());
- coo->add(dimCoords, values[parentPos]);
- return;
- }
- if (isCompressedLvl(l)) {
- const std::vector<P> &positionsL = positions[l];
- assert(parentPos + 1 < positionsL.size());
- const uint64_t pstart = static_cast<uint64_t>(positionsL[parentPos]);
- const uint64_t pstop = static_cast<uint64_t>(positionsL[parentPos + 1]);
- const std::vector<C> &coordinatesL = coordinates[l];
- assert(pstop <= coordinatesL.size());
- for (uint64_t pos = pstart; pos < pstop; pos++) {
- lvlCursor[l] = static_cast<uint64_t>(coordinatesL[pos]);
- toCOO(pos, l + 1, dimCoords);
- }
- } else if (isLooseCompressedLvl(l)) {
- const std::vector<P> &positionsL = positions[l];
- assert(2 * parentPos + 1 < positionsL.size());
- const uint64_t pstart = static_cast<uint64_t>(positionsL[2 * parentPos]);
- const uint64_t pstop =
- static_cast<uint64_t>(positionsL[2 * parentPos + 1]);
- const std::vector<C> &coordinatesL = coordinates[l];
- assert(pstop <= coordinatesL.size());
- for (uint64_t pos = pstart; pos < pstop; pos++) {
- lvlCursor[l] = static_cast<uint64_t>(coordinatesL[pos]);
- toCOO(pos, l + 1, dimCoords);
- }
- } else if (isSingletonLvl(l) || isNOutOfMLvl(l)) {
- assert(parentPos < coordinates[l].size());
- lvlCursor[l] = static_cast<uint64_t>(coordinates[l][parentPos]);
- toCOO(parentPos, l + 1, dimCoords);
- } else { // Dense level.
- assert(isDenseLvl(l));
- const uint64_t sz = getLvlSizes()[l];
- const uint64_t pstart = parentPos * sz;
- for (uint64_t c = 0; c < sz; c++) {
- lvlCursor[l] = c;
- toCOO(pstart + c, l + 1, dimCoords);
- }
- }
- }
-
std::vector<std::vector<P>> positions;
std::vector<std::vector<C>> coordinates;
std::vector<V> values;
std::vector<uint64_t> lvlCursor;
- SparseTensorCOO<V> *coo;
};
//===----------------------------------------------------------------------===//
@@ -661,7 +603,6 @@ SparseTensorStorage<P, C, V>::SparseTensorStorage(
: SparseTensorStorage(dimRank, dimSizes, lvlRank, lvlSizes, lvlTypes,
dim2lvl, lvl2dim) {
assert(!lvlCOO || lvlRank == lvlCOO->getRank());
- coo = lvlCOO;
// Provide hints on capacity of positions and coordinates.
// TODO: needs much fine-tuning based on actual sparsity; currently
// we reserve position/coordinate space based on all previous dense
``````````
</details>
https://github.com/llvm/llvm-project/pull/85319
More information about the Mlir-commits
mailing list