From fe10e86dd536cc22f65a07a1900bb8b199a8bd5b Mon Sep 17 00:00:00 2001 From: qijun Date: Wed, 4 Oct 2017 14:05:37 -0700 Subject: [PATCH] fix gpu build error --- paddle/framework/executor.cc | 19 ++++++++++++++----- paddle/framework/executor.h | 4 ++-- paddle/platform/gpu_info.cc | 2 +- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/paddle/framework/executor.cc b/paddle/framework/executor.cc index 03504952edc..aa36b7438ff 100644 --- a/paddle/framework/executor.cc +++ b/paddle/framework/executor.cc @@ -27,12 +27,12 @@ Executor::Executor(const std::vector& places) { device_contexts_.resize(places.size()); for (size_t i = 0; i < places.size(); i++) { if (platform::is_cpu_place(places[i])) { - device_contexts_[i].reset(new platform::CPUDeviceContext( - boost::get(places[i]))); - } else { + device_contexts_[i] = new platform::CPUDeviceContext( + boost::get(places[i])); + } else if (platform::is_gpu_place(places[i])) { #ifndef PADDLE_ONLY_CPU - device_contexts_[i].reset(new platform::CUDADeviceContext( - boost::get(places[i]))); + device_contexts_[i] = new platform::CUDADeviceContext( + boost::get(places[i])); #else PADDLE_THROW("'GPUPlace' is not supported in CPU only device."); #endif @@ -40,6 +40,14 @@ Executor::Executor(const std::vector& places) { } } +Executor::~Executor() { + for (auto& device_context : device_contexts_) { + if (device_context) { + delete device_context; + } + } +} + void Executor::Run(const ProgramDesc& pdesc, Scope* scope, std::vector* outputs) { // TODO(tonyyang-svail): @@ -59,6 +67,7 @@ void Executor::Run(const ProgramDesc& pdesc, Scope* scope, for (auto& op_desc : block.ops()) { auto op = paddle::framework::OpRegistry::CreateOp(op_desc); + std::cout << op->DebugString() << std::endl; op->Run(*scope, *device); } diff --git a/paddle/framework/executor.h b/paddle/framework/executor.h index d5c21c59feb..fc53be37c3f 100644 --- a/paddle/framework/executor.h +++ b/paddle/framework/executor.h @@ -25,11 +25,11 @@ namespace framework { class Executor { public: explicit Executor(const std::vector& places); - ~Executor() {} + ~Executor(); void Run(const ProgramDesc&, Scope*, std::vector*); private: - std::vector> device_contexts_; + std::vector device_contexts_; }; } // namespace framework diff --git a/paddle/platform/gpu_info.cc b/paddle/platform/gpu_info.cc index f4870148719..0464797f310 100644 --- a/paddle/platform/gpu_info.cc +++ b/paddle/platform/gpu_info.cc @@ -43,7 +43,7 @@ int GetCurrentDeviceId() { } void SetDeviceId(int id) { - PADDLE_ENFORCE(id < GetDeviceCount(), "id must less than GPU count") + PADDLE_ENFORCE(id < GetDeviceCount(), "id must less than GPU count"); PADDLE_ENFORCE(cudaSetDevice(id), "cudaSetDevice failed in paddle::platform::SetDeviceId"); } -- GitLab