Skip to content

Commit

Permalink
[Cherry-pick][Bugfix][OpenCL][Core] fix opencl multi-run result error (
Browse files Browse the repository at this point in the history
…#4413)

* [Bugfix][OpenCL][Core] fix opencl multi-run result error when using memory_optimize_pass (#4410)

* [Bugfix][OpenCL][Core] fix opencl multi-run result error when using memory_optimize_pass. test=develop

* test=develop

Co-authored-by: ysh329 <[email protected]>
  • Loading branch information
zhaoyang-star and ysh329 authored Sep 24, 2020
1 parent 01242ee commit 2425f9a
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 8 deletions.
18 changes: 10 additions & 8 deletions lite/core/memory.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
// limitations under the License.

#pragma once
#include <algorithm>
#include <string>
#include "lite/api/paddle_place.h"
#include "lite/core/target_wrapper.h"
Expand Down Expand Up @@ -135,20 +136,21 @@ class Buffer {
#ifdef LITE_WITH_OPENCL
template <typename T>
void ResetLazyImage2D(TargetType target,
const size_t img_w,
const size_t img_h,
const size_t img_w_req,
const size_t img_h_req,
void* host_ptr = nullptr) {
if (target != target_ || cl_image2d_width_ < img_w ||
cl_image2d_height_ < img_h || host_ptr != nullptr) {
if (target != target_ || cl_image2d_width_ < img_w_req ||
cl_image2d_height_ < img_h_req || host_ptr != nullptr) {
CHECK_EQ(own_data_, true) << "Can not reset unowned buffer.";
cl_image2d_width_ = std::max(cl_image2d_width_, img_w_req);
cl_image2d_height_ = std::max(cl_image2d_height_, img_h_req);
Free();
data_ = TargetWrapperCL::MallocImage<T>(img_w, img_h, host_ptr);
data_ = TargetWrapperCL::MallocImage<T>(
cl_image2d_width_, cl_image2d_height_, host_ptr);
target_ = target;
space_ = sizeof(T) * img_w * img_h *
space_ = sizeof(T) * cl_image2d_width_ * cl_image2d_height_ *
4; // un-used for opencl Image2D, 4 for RGBA,
cl_use_image2d_ = true;
cl_image2d_width_ = img_w;
cl_image2d_height_ = img_h;
}
}
#endif
Expand Down
6 changes: 6 additions & 0 deletions lite/core/memory_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,12 @@ TEST(memory, test) {
ASSERT_TRUE(buf_cuda);
TargetFree(TARGET(kCUDA), buf_cuda);
#endif

#ifdef LITE_WITH_OPENCL
auto* buf_cl = TargetMalloc(TARGET(kOpenCL), 10);
ASSERT_TRUE(buf_cl);
TargetFree(TARGET(kOpenCL), buf_cl);
#endif
}

} // namespace lite
Expand Down

0 comments on commit 2425f9a

Please sign in to comment.