![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenCL
文章平均质量分 65
疯狂的蕉尼基
将来的你会感谢现在努力的自己。
展开
-
OpenCL API接口整理
【代码】OpenCL API接口整理。原创 2022-12-20 16:07:58 · 839 阅读 · 0 评论 -
OpenCL线程代数库ViennaCL的使用
OpenCL 线性代数库ViennaCL 的使用。原创 2022-06-27 14:44:31 · 1022 阅读 · 0 评论 -
用于读取OpenCL平台及设备的接口
Platform Infovoid PrintPlatformInfo(cl_platform_id platform){ char queryBuffer[1024]; cl_int clError; clError = clGetPlatformInfo (platform, CL_PLATFORM_NAME, 1024, &queryBuffer, NULL); if(clError == CL_SUCCESS) { printf(原创 2021-12-24 14:30:03 · 423 阅读 · 0 评论 -
OpenCL设置 clCreateBuffer 属性对整体性能的影响
OpenCL设置 clCreateBuffer 属性对整体性能的影响一,函数介绍这里讨论clCreateBuffer 对性能的影响,就需要先对OpenCL的clCreateBuffer函数进行介绍了。cl_mem clCreateBuffer(cl_context context, cl_mem_flags flags, size_t size, void* host_ptr,原创 2021-12-17 14:41:57 · 2016 阅读 · 0 评论 -
基于OpenCL的yolov3 后处理优化
基于OpenCL的yolov3 后处理代码性能优化背景:目前对Yolov3的整体架构不是很了解,在网上也看了很多教程,对我来说,讲的比较复杂,可能是对很多的术语没有概念。不过Yolov3代码都是C编写的, 对我来说只要是C代码,就不是问题,针对问题,以及解决方法,改代码就好。我拿到的yolov3的代码可能不是标准的yolov3 , 不过大致处理逻辑是不变的。yolov3 检测部分有两个部分比较耗时:第一个耗时点在,网络数据是以uint8类型保存的,那么如果想对数据进行处理,那么一定要讲数据转化成f原创 2021-12-16 17:19:52 · 972 阅读 · 1 评论 -
OpenCL error返回处理显示函数
OpenCL error处理显示函数在编写OpenCL程序的时候,遇到返回错误,每次都需要网上查,或者要打开用户手册去查, 总结了以下的函数,错误调用就能看到对应的错误了。static void cl_error(cl_int err,char * funName){ if(err!=CL_SUCCESS){ fprintf(stderr,funName); fprintf(stderr,": opencl error: %d, ",err); s原创 2021-12-10 16:46:53 · 1181 阅读 · 0 评论 -
【BUG】clCreateKernel: opencl error: -6, CL_OUT_OF_HOST_MEMORY
clCreateKernel: opencl error: -6, CL_OUT_OF_HOST_MEMORY今天调试OpenCL 代码写了一个memcpy的函数,发现调用clCreateKernel()函数产生了错误,err:-6CL_OUT_OF_HOST_MEMORY :宿主机上没有足够的内存执行命令由于官方解释的原因就是这样,所以我的关注重点放在了内存上面,找了半天也没有发现问题原因。突然间猛然想到,是不是函数本生的使用产生了问题,于是将重点放在了函数功能上,在实现函数的功能所依赖的kern原创 2021-12-10 13:11:16 · 1476 阅读 · 0 评论 -
理解Region of Interest - (RoI Align and RoI Warp)
理解Region of Interest - (RoI Align and RoI Warp)If you’re not familiar with idea of RoI it might be beneficial to read Understanding Region of Interest — (RoI Pooling) first. This article doesn’t include an introduction about what RoI is and focuses only翻译 2021-11-23 11:14:50 · 2012 阅读 · 0 评论 -
理解Region of Interest - ROI pooling
理解Region of Interest - ROI poolingWe’re going to discuss original RoI pooling described in Fast R-CNN paper (light blue rectangle on the image above). There is a second and a third version of that process called RoIAlign and RoIWarp.我们将要讨论Fast R-CNN论文中原翻译 2021-11-22 17:07:53 · 5610 阅读 · 0 评论 -
对OpenCL的缓存对象和图像对象的理解
对OpenCL的缓存对象和图像对象的理解理论上讲:可以将图像对象保存在缓存对象中,将它的像素作为一般的缓存数据来访问。但选择图像对象有如下四个重要的理由:1.在GPU上,图像数据是保存在特殊的全局内存中,这个内存被称为纹理内存,和一般的全局内存不同,纹理内存是被缓存,用于高速访问处理。2. 用来读写图像数据的函数可以在不卡吕图像数据格式的前提下,被调用,前提条件是数据格式要为OpenCL所支持。3. 被称为采样器的特殊数据格式可以用来配置读取图像中呀白色信息的方式。4. OpenCL提供了这样的函原创 2021-11-22 09:37:15 · 354 阅读 · 0 评论 -
OpenCL Reduction操作与group组内同步(barrier)操作的理解
OpenCL Reduction操作与group同步先解释一下什么是reduction操作和barrier操作Reduction操作:规约操作就是由多个数生成一个数,如求最大值、最小值、向量点积、求和等操作,都属于这一类操作。group同步:OpenCL只提供了工作组内的各线程之间的同步机制,并没有提供所有线程的同步。提供组内item-work同步的方法:void barrier (cl_mem_fence_flags flags)参数说明: cl_mem_fence_flags 可以取C原创 2021-11-03 14:52:03 · 1338 阅读 · 0 评论 -
OpenCl 对维度,工作项,工作组概念的理解
Enqueues a command to execute a kernel on a device.-对命令进行排队,以便在设备上执行内核。参数command_queue一个有效的命令队列。内核将在与command_queue关联的设备上排队执行。kernel一个有效的内核对象。与kernel和command_queue关联的OpenCL上下文必须是相同的。work_dim用于指定全局工作项和工作组中的工作项的维数。Work_dim必须大于0且小于或等于3。global_work_of原创 2021-11-03 13:35:24 · 1566 阅读 · 0 评论 -
CL_KERNEL_WORK_GROUP_SIZE与CL_DEVICE_MAX_WORK_GROUP_SIZE的区别
CL_KERNEL_WORK_GROUP_SIZE与CL_DEVICE_MAX_WORK_GROUP_SIZE的区别最近调试代码发现一个问题:就是我通过clGetDeviceInfo函数获取了max group size(1024) 作为我NDRange 的local size,很多用例和项目都是这样写的,我个人觉得也没有什么问题。后来在一个新的平台上去调试同一个代码,产生了CL_INVALID_WORK_GROUP_SIZE的错误。有点懵为什么会有这个问题,CL_DEVICE_原创 2021-11-03 10:45:45 · 799 阅读 · 0 评论 -
OpenCL 2.0 异构计算 [第三版] (Heterogeneous Computing with OpenCL 2.0)
OpenCL 2.0 异构计算 [第三版] (Heterogeneous Computing with OpenCL 2.0)给大家分享一个很棒的在线阅读平台,有兴趣的朋友可以点击下连接去学习:https://www.bookstack.cn/read/Heterogeneous-Computing-with-OpenCL-2.0/README.md...原创 2021-10-26 10:21:55 · 316 阅读 · 0 评论 -
OpenCL Memory优化
Memory的访问效率往往决定着整个kernel的性能,最小化global memory访问次数在优化OpenCL代码时是非常有效的。Memory主要有以下几种:global, constant, local以及private。互联拓扑结构将共享的global内存,constant内存,local内存系统连接到他们的基础内存下,同时互联也包含对memory端口的访问仲裁。Memory的访问会争夺共享内存资源,如果kernel中执行大俩个的内存访问,那么必须生成负责的仲裁逻辑处理内存访问请求,会导致fMax转载 2021-10-26 09:56:47 · 870 阅读 · 0 评论 -
OpenCL学习笔记二(主机编程:OpenCL基本的数据结构)
基本的数据类型OpenCL 是跨平台的工具包,因而需要一系列统一的基本数据类型做支撑。标量数据类型位宽目的cl_char8有符号补码表示整数cl_uchar8无符号补码表示整数cl_short16有符号补码表示整数cl_ushort16无符号补码表示整数cl_int32有符号补码表示整数cl_uint32无符号补码表示整数cl_long64有符号补码表示整数cl_ulong64无符号补码表示整数cl_h原创 2021-08-04 15:58:33 · 340 阅读 · 0 评论 -
OpenCL学习笔记一
什么是OpenCL百度百科飞机票✈OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。OpenCL由一门用于编写kernels (在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成。OpenCL提供了基于任务分割和数据分割的并行计算机制。上面是官方的一些解释,大体上是指用于编写运行在异构平台上的程序的一种框架,由特定的数据类型,数据结构,和一些API组成接口组成,说实话,我个人觉得它并不是一门语言,其实就是在C/C++的原创 2021-08-03 16:45:40 · 279 阅读 · 0 评论 -
OpenCL编译方式技术分析
OpenCL编译方式技术分析OpenCL程序的动态编译OpenCL(OpenComputionLanguage)是一种全新的针对异构系统进行并行编程的应用程序接 口(API),有效利用系统中的所有计算资源。OpenCL采用运行时动态编译的方式来执行程序,灵活高效。OpenCL程序的编译运行方式非常特殊,运行在加速设备上的程序是由主程序在运行过程中动态的生成,并编译 、执行的 。kernel对象的创建、设置、查询。host程序在运行时,通过OpenCL提供的API函数clCreateKernelgI原创 2021-07-27 14:05:19 · 873 阅读 · 0 评论