未验证 提交 726d9af6 编写于 作者: Y ysh329 提交者: GitHub

Merge branch 'release/v2.6' into cherry-pick-precision-profiler-enhance

......@@ -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"
......@@ -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
......
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册