diff --git a/paddle/framework/tensor.h b/paddle/framework/tensor.h index d3f56b31cd350fac746b8fd5a37f278b26db3e7d..2edc981cdd06f4dca01ce81285608f19b1e6e318 100644 --- a/paddle/framework/tensor.h +++ b/paddle/framework/tensor.h @@ -129,13 +129,16 @@ class Tensor { virtual platform::Place place() const = 0; }; - template + template struct PlaceholderImpl : public Placeholder { - PlaceholderImpl(PlaceType place, size_t size) - : ptr_(static_cast(memory::Alloc(place, size)), - memory::PODDeleter(place)), - place_(place), - size_(size) {} + PlaceholderImpl(Place place, size_t size) + : place_(place), + size_(size), + ptr_(static_cast(memory::Alloc(place, size)), + memory::PODDeleter(place)) { + PADDLE_ENFORCE(ptr_ != nullptr, "Insufficient %s memory to allocation.", + is_cpu_place(place_) ? "CPU" : "GPU"); + } virtual size_t size() const { return size_; } virtual platform::Place place() const { return place_; } @@ -143,7 +146,7 @@ class Tensor { virtual std::type_index type() const { return std::type_index(typeid(T)); } /*! the pointer of memory block. */ - std::unique_ptr> ptr_; + std::unique_ptr> ptr_; /*! the place of memory block. */ platform::Place place_;