它使应用程序能够在GPU上执行使GPU可以不仅执行图形程序而且可以执行通用计算程序GPGPU, OpenCV official svn: 下载 ,这样做可以更有效率的处理单通道数据,由于OpenCL是一个跨平台的开放标准所有支持OpenCL的平台都将获益,它最初由Intel公司开发以GPL许可协议发布后来由Willow Garage基金会负责开发和维护以BSD许可协议发布至今已有超过250万的用户,OpenCV最初以C语言编写后来提供了C和Python接口在版本2.2中又加入了CUDA接口目前的正式版本为2.4, OpenCLOpen Computing Language是一个在异构平台例如CPU和GPUAPU上高效执行程序的开源计算框架它由Khronos发布并维护是一个IBM, AMD等业界公司普遍认可和支持的标准目前版本为1.2,。
3 基于OpenCL加速的函数列表 OpenCV拥有四百多个函数并且有些函数的算法十分复杂由于时间和资源所限目前的OpenCL并没有包含所有的函数以下是目前已经经过加速的函数列表 4 性能测试结果 通过GPU的加速和对代码的优化我们获得了可观的加速比整体而言我们对CUDA有1.2倍的加速对CPU有平均60倍的加速kernel时间vsCPU时间, 1 扩展库简介 OpenCVOpen Source Computer Vision Library是一个致力于实时处理计算机视觉问题的开源库,OpenCL包含一组用于定义和控制平台的API和一个基于C99标准的编写的可执行在并行设备上的kernel, 虽然OpenCV的目标是能够实时的处理计算机视觉问题但是大多数计算机视觉的算法太过复杂无法在CPU上实时执行, 表2测试平台[aligncenter][/align] 图2OpenCL vs. CUDA 纵坐标为加速比 图3OpenCL vs. CPU纵坐标为加速比 5 资源获取 基于OpenCL的OpenCV扩展库已经进入官方的svn可以在此下载最新代码也可以在Google Code中下载,本工程使用和OpenCV兼容的C/C编写致力于为OpenCV添加OpenCL接口使得OpenCV的函数能够在异构设备上高速运行, Intel,以下是我们的测试平台和测试结果, [aligncenter][/align]图1OpenCV架构图 为了获得良好的性能而又不损失灵活性我们将OpenCV中最重要的基础结构二维矩阵映射为GPU上的二维Buffer没有使用OpenCL中得Image对象,其用途非常广泛涵盖从图像处理计算机视觉到交互艺术矿产勘探等领域,而计算机视觉的大多数算法具有天生的并行性非常适合在GPU和APU上执行并获得可观的加速比, 2 OpenCV的架构 OpenCV可以分成以下一些模块以执行设备来分类的话有CPU和GPU之分GPU中原有CUDA模块现在我们加入OpenCL模块OpenCL模块将在CPU上执行的算法在GPU上加速执行。
