diff --git a/paddle/framework/tensor.h b/paddle/framework/tensor.h index 7d0f74fc5bcdefff023d6f78d81cb4213bfd3249..a36f375d2e42ee3c46ddef42954335cba7eb88f2 100644 --- a/paddle/framework/tensor.h +++ b/paddle/framework/tensor.h @@ -60,13 +60,15 @@ class Tensor { offset_); } - template + template ::value>::type* = nullptr> T* mutable_data(DDim dims, platform::Place place) { Resize(dims); return mutable_data(place); } - template + template ::value>::type* = nullptr> T* mutable_data(platform::Place place) { PADDLE_ENFORCE(product(dims_) > 0, "Tensor's numel must be larger than zero to call " @@ -150,7 +152,7 @@ class Tensor { struct PlaceholderImpl : public Placeholder { PlaceholderImpl(PlaceType place, size_t size) : ptr_(static_cast(memory::Alloc(place, size)), - memory::PodDeleter(place)), + memory::PODDeleter(place)), place_(place), size_(size) {} @@ -159,7 +161,7 @@ class Tensor { virtual paddle::platform::Place place() const { return place_; } virtual std::type_index type() const { return std::type_index(typeid(T)); } - std::unique_ptr> ptr_; + std::unique_ptr> ptr_; platform::Place place_; // record the place of ptr_. size_t size_; // size of the memory block. }; diff --git a/paddle/memory/memory.h b/paddle/memory/memory.h index f5890fb84450c08e13130f28a698a230b5c0b355..c4fe1e52203d6f028416a244e8818922dffff4fe 100644 --- a/paddle/memory/memory.h +++ b/paddle/memory/memory.h @@ -28,14 +28,16 @@ void Free(Place, void*); template size_t Used(Place); -template -class PodDeleter { +template ::value>::type* = nullptr> +class PODDeleter { public: - PodDeleter(PlaceType place) : place_(place) {} + PODDeleter(Place place) : place_(place) {} void operator()(T* ptr) { Free(place_, static_cast(ptr)); } private: - PlaceType place_; + Place place_; }; } // namespace memory