OpenCL与GPU加速

1.名词:

  • 加速比(Obscrved Speedup):
  • 并行开销(Parallel overhead):
  • 可拓展性(Scalability )

2.并行编程模型:

  • 共享存储模型
  • 线程模型
  • 消息传递模型
  • 数据并行模型

3.OpenCL:

  • OpenCL(Open Computing Langugae)是一种开放运算语言,是第一个面向异构系统(系统由CPU,GPU或其它类型的处理器架构组成)的并行编程的开放式标准,可跨平台。
  • OpenCL:一是用于编写kernels(在OpenCL设备上运行的函数)的语言;二是用于定义并控制平台的API(函数)
  • OpenCL提供了基于任务和基于数据两种并行计算机制。
  • OpenCL是一种标准,NVDIA中将OpenCL实现集成到它的CUDA SDK。
  • 架构:OpenCL平台API;OpenCL运行时API;OpenCL编程语言
  • OpenCL平台组成:宿主机和OpenCL设备

4.编写OpenCL程序的基本步骤

  • 1)获取平台–>clGetPlatformIDs
  • 2)从平台中获取设备–>clGetDeviceIDs
  • 3)创建上下文–>clCreateContext
  • 4)创建命令队列–>clCreateCommandQueue
  • 5)创建缓存->clCre
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 rk3588 上使用 OpenCV 进行 GPU 加速,可以使用 OpenCL 接口来调用 GPU。 以下是在 rk3588 上使用 OpenCV 进行 GPU 加速的基本步骤: 1. 确保已经安装了 OpenCL 库和驱动。可以通过 `ls /usr/lib/aarch64-linux-gnu/libOpenCL.so` 命令检查是否已经安装了 OpenCL 库。 2. 下载 OpenCV 源代码,并在下载的源代码目录中创建一个新目录 `build`。 3. 进入 `build` 目录,运行以下命令配置编译选项: ``` cmake -DWITH_OPENCL=ON -DWITH_OPENMP=OFF -DWITH_TBB=OFF -DWITH_IPP=OFF -DWITH_LAPACK=OFF -DWITH_EIGEN=OFF -DWITH_CUDA=OFF -DWITH_PROTOBUF=OFF -DWITH_GTK=OFF -DWITH_QT=OFF -DWITH_VTK=OFF -DWITH_GDAL=OFF -DWITH_XINE=OFF -DWITH_AVFOUNDATION=OFF -DWITH_OPENEXR=OFF -DWITH_WEBP=OFF -DWITH_JASPER=OFF -DWITH_JPEG=ON -DWITH_PNG=ON -DWITH_TIFF=ON -DWITH_ZLIB=ON -DWITH_FFMPEG=ON -DWITH_GSTREAMER=OFF .. ``` 4. 运行以下命令编译 OpenCV: ``` make -j4 ``` 5. 在 OpenCV 中启用 OpenCL。在代码中添加以下代码: ``` cv::ocl::setUseOpenCL(true); ``` 6. 在代码中使用 OpenCL 接口调用 GPU 进行加速。例如: ``` cv::UMat src, dst; cv::Mat src_host = cv::imread("input.jpg", cv::IMREAD_COLOR); src_host.copyTo(src); cv::ocl::oclMat ocl_src(src), ocl_dst; cv::ocl::Kernel kernel("my_kernel", cv::ocl::imgproc::ocl::cvtColor_oclsrc, cv::ocl::imgproc::ocl::cvtColor_oclsrc_len); kernel.args(cv::ocl::KernelArg::ReadOnlyNoSize(src), cv::ocl::KernelArg::WriteOnly(dst)); size_t globalThreads[3] = { src.cols, src.rows, 1 }; size_t localThreads[3] = { 16, 16, 1 }; cv::ocl::enqueueKernel(kernel, 2, globalThreads, localThreads); ocl_dst.download(dst); cv::Mat dst_host(dst); cv::imwrite("output.jpg", dst_host); ``` 这样,就可以在 rk3588 上使用 OpenCV 进行 GPU 加速,并通过 OpenCL 接口调用 GPU 进行加速

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值