From 2b6f8556caac9ad896d9903d8a1a6b9eb33a7baf Mon Sep 17 00:00:00 2001 From: Jesse Lee Date: Mon, 28 Sep 2020 09:21:34 -0400 Subject: [PATCH] revert arena code to use malloc --- mindspore/ccsrc/minddata/dataset/util/arena.cc | 6 +++--- mindspore/ccsrc/minddata/dataset/util/arena.h | 9 +++++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/mindspore/ccsrc/minddata/dataset/util/arena.cc b/mindspore/ccsrc/minddata/dataset/util/arena.cc index b4864e2687..6bd6d295ff 100644 --- a/mindspore/ccsrc/minddata/dataset/util/arena.cc +++ b/mindspore/ccsrc/minddata/dataset/util/arena.cc @@ -235,15 +235,15 @@ std::ostream &operator<<(std::ostream &os, const ArenaImpl &s) { Status Arena::Init() { try { int64_t sz = size_in_MB_ * 1048576L; - RETURN_IF_NOT_OK(mem_.allocate(sz)); - impl_ = std::make_unique(mem_.GetMutablePointer(), sz); + RETURN_IF_NOT_OK(DeMalloc(sz, &ptr_, false)); + impl_ = std::make_unique(ptr_, sz); } catch (std::bad_alloc &e) { return Status(StatusCode::kOutOfMemory); } return Status::OK(); } -Arena::Arena(size_t val_in_MB) : size_in_MB_(val_in_MB) {} +Arena::Arena(size_t val_in_MB) : ptr_(nullptr), size_in_MB_(val_in_MB) {} Status Arena::CreateArena(std::shared_ptr *p_ba, size_t val_in_MB) { RETURN_UNEXPECTED_IF_NULL(p_ba); diff --git a/mindspore/ccsrc/minddata/dataset/util/arena.h b/mindspore/ccsrc/minddata/dataset/util/arena.h index 1409b91d82..8cf686a4c0 100644 --- a/mindspore/ccsrc/minddata/dataset/util/arena.h +++ b/mindspore/ccsrc/minddata/dataset/util/arena.h @@ -104,7 +104,12 @@ class Arena : public MemoryPool { // Disable copy and assignment constructor Arena(const Arena &) = delete; Arena &operator=(const Arena &) = delete; - ~Arena() override = default; + ~Arena() override { + if (ptr_ != nullptr) { + free(ptr_); + } + ptr_ = nullptr; + } /// As a derived class of MemoryPool, we have to implement the following. /// But we simply transfer the call to the implementation class @@ -141,7 +146,7 @@ class Arena : public MemoryPool { protected: mutable std::mutex mux_; std::unique_ptr impl_; - MemGuard mem_; + void *ptr_; size_t size_in_MB_; explicit Arena(size_t val_in_MB = 4096);