Firefly开源社区

打印 上一主题 下一主题

[技术讨论] RK3588开发板 openCV调用openCL运行时失败,Status -11: CL_BUILD_PROGRAM_FAILURE...

43

积分

0

威望

0

贡献

技术小白

积分
43

RK3588开发板 openCV调用openCL运行时失败,Status -11: CL_BUILD_PROGRAM_FAILURE...

发表于 2022-9-26 11:03:32      浏览:5482 | 回复:7        打印      只看该作者   [复制链接] 楼主
问题描述及复现步骤:
本帖最后由 Williamboy 于 2022-9-26 11:06 编辑

RK3588S 开发板,Ubuntu 20.04.5 LTS, 系统信息

  1. <div>$ cat /proc/version
  2. </div><div>Linux version 5.10.66 (daijh@8d391e97ab54) (kernel commit id: fa94ece7080f) (sdk version: rk3588_linux_release_20220812_v1.0.1b) (aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 10.3.1 20210621, GNU ld (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 2.36.1.20210621) #155 SMP Fri Aug 12 10:03:43 CST 2022</div>
复制代码
OpenCV4.6
OpenCL 安装/设备/驱动正常OpenCL2.1

  1. <div>$clinfo
  2. Number of platforms                               1
  3.   Platform Name                                   ARM Platform
  4.   Platform Vendor                                 ARM
  5.   Platform Version                                OpenCL 2.1 v1.g6p0-01eac0.efb75e2978d783a80fe78be1bfb0efc1
  6.   Platform Profile                                FULL_PROFILE
  7.   Platform Extensions                  ...</div><div>.......</div>
复制代码

OpenCV调用OpenCL C++测试代码如下:
  1. void calcEdgesGPU()
  2. {
  3.     std::cout << "****** Use GPU imag processing ******"  << std::endl;

  4.     cv::ocl::setUseOpenCL(true);

  5.     bool ret1 = cv::ocl::haveOpenCL();
  6.     bool ret2 = cv::ocl::useOpenCL();
  7.     std::cout << "haveOpenCL:" << ret1 << std::endl;
  8.     std::cout << "useOpenCL:" << ret2 << std::endl;

  9.     double start = cv::getTickCount();
  10.     cv::UMat gpuFrame, gpuGray, gpuBlur, gpuEdges;
  11.     cv::Mat cpuFrame = cv::imread(IMAGE_PATHNAME);
  12.     cpuFrame.copyTo(gpuFrame); //Mat与UMat相互转换

  13.     cvtColor(gpuFrame, gpuGray, cv::COLOR_BGR2GRAY);
  14.     cv::GaussianBlur(gpuGray, gpuBlur, cv::Size(3, 3), 15, 15);
  15.     cv::Canny(gpuBlur, gpuEdges, 50, 100, 3);
  16.     std::vector<cv::Vec3f> cir;
  17.     cv::HoughCircles(gpuBlur, cir, cv::HOUGH_GRADIENT_ALT, 1.5, 15, 300, 0.8, 1, 100);

  18.     std::cout << "GPU cost time:(s)" << ((cv::getTickCount() - start) / cv::getTickFrequency()) << std::endl;

  19.     cv::Mat matResult = gpuEdges.getMat(cv::ACCESS_READ); //Mat与UMat相互转换
  20.     cv::namedWindow("Canny Edges GPU1", cv::WINDOW_NORMAL);
  21.     cv::imshow("Canny Edges GPU1", matResult);

  22.     cv::namedWindow("Canny Edges GPU2", cv::WINDOW_NORMAL);
  23.     cv::imshow("Canny Edges GPU2", gpuEdges);
  24. }
复制代码







编译正常,运行报错:
Status -11: CL_BUILD_PROGRAM_FAILURE


  1. ****** Use GPU imag processing ******
  2. haveOpenCL:1
  3. useOpenCL:1
  4. OpenCL program build log: imgproc/color_rgb
  5. <u>Status -11: CL_BUILD_PROGRAM_FAILURE</u>
  6. -D depth=0 -D scn=3 -D PIX_PER_WI_Y=1 -D dcn=1 -D bidx=0 -D STRIPE_SIZE=1
  7. <built-in>:167:9: error: expected member name or ';' after declaration specifiers
  8. int32_t depth;             /**< The image depth. */
  9. ~~~~~~~ ^
  10. <built-in>:1:15: note: expanded from here
  11. #define depth 0
  12.               ^

  13. <built-in>:167:8: error: expected ';' at end of declaration list
  14. int32_t depth;             /**< The image depth. */
  15.        ^

  16. error: Compiler frontend failed (error code 62)

  17. GPU cost time:(s)0.350019
复制代码



请问RK3588的GPU支持OPENCL吗?有人有同样的问题吗?
求救!
求救!!
求救!!!

SOS!
SOS!!
SOS!!!



opencl-error-log.txt

640 Bytes, 下载次数: 3, 下载积分: 灯泡 -1 , 经验 -1

回复

使用道具 举报

43

积分

0

威望

0

贡献

技术小白

积分
43
发表于 2022-9-27 10:58:24        只看该作者  沙发
这个文件就编译没通过。。。

OpenCL program build log: imgproc/color_rgb
Status -11: CL_BUILD_PROGRAM_FAILURE

点评

请问您找到原因了么? 我也遇到了相同问题  发表于 2022-11-17 17:12
回复

使用道具 举报

9

积分

0

威望

0

贡献

吃瓜的群众

积分
9
QQ
发表于 2022-11-20 16:24:10        只看该作者  板凳
Williamboy 发表于 2022-9-27 10:58
这个文件就编译没通过。。。

OpenCL program build log: imgproc/color_rgb

请问rk3588可以使用opencl吗
回复

使用道具 举报

4

积分

0

威望

0

贡献

吃瓜的群众

积分
4
发表于 2023-5-27 09:34:07        只看该作者  地板
一模一样的问题,解决了吗?跪求解决方案
回复

使用道具 举报

6

积分

0

威望

0

贡献

吃瓜的群众

积分
6
发表于 2023-8-17 16:04:57        只看该作者  5#
opencv是怎么编译的
回复

使用道具 举报

3

积分

0

威望

0

贡献

吃瓜的群众

积分
3
发表于 2023-10-22 12:54:16        只看该作者  6#
我也是同样的问题, 有人能给出一个解决方案或者思路嘛
回复

使用道具 举报

8

积分

0

威望

0

贡献

吃瓜的群众

积分
8
发表于 2023-11-29 12:21:24        只看该作者  7#
如果你是想用ocl加速remap,修改/modules/imgproc/src/imgwarp.cpp文件里的ocl_remap函数
1:把函数里的int depth变量换个名字,比如s_depth, 把这个函数里用到的depth都换成s_depth
2:还是在这个函数里找到buildOptions,都换成s_depth,包括字符串参数
buildOptions += format(" -D T=%s -D T1=%s -D cn=%d -D ST=%s -D s_depth=%d",
                           ocl::typeToStr(type), ocl::typeToStr(s_depth),
                           cn, ocl::typeToStr(sctype), s_depth);
我这里gpu使用成功,cpu负载很低
cat /sys/class/devfreq/fb000000.gpu/load
23@500000000Hz
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表