你是否正在寻找关于opencl的内容?让我把最权威的东西奉献给你:
opencl 学习step by step (11) 数组求和(reduction)
摘要: 本篇教程中,我们学习一下如何用opencl有效实现数组求和,也就是通常所说的reduction问题。 在程序中,我们设置workgroup size为256,kernel的输入、输出缓冲参数都用uint4的格式,这样我们原始求和的数组大小为256*4的倍数,数据类型为uint。我们设定每个workgroup处理处理512个uint,即2048个uint 为了简便期...阅读全文
posted @ 2012-11-24 12:12 迈克老狼2012 阅读(2455) | 编辑
opencl 学习step by step (10) 矩阵转置
摘要: 本章学习一下在opencl中如何实现矩阵的转置,主要的技巧还是利用好local memory,防止bank conflit以及使得全局memory的读写尽量是合并(coalensing)读写。 我们的矩阵是一副二维灰度图像256*256,矩阵的转置也就是图像的转置。每个thread处理16(4*4)个pixel(uchar),workgroup的size是(16,16)。 ...阅读全文
posted @ 2012-11-13 19:18 迈克老狼2012 阅读(1528) | 编辑
opencl 学习step by step (9) 灰度图Histogram计算(3)
摘要: 在opencl编程中,特别是基于gpu的opencl的编程,提高程序性能最主要的方法就是想法提高memory的利用率:一个是提高global memory的合并读写效率,另一个就是减少local memory的bank conflit。下面我们分析一下教程7中的代码,其的memory利用率如何? 首先我们用amd的opencl profiler分析一下程序性能(不会找不到用...阅读全文
posted @ 2012-10-27 07:36 迈克老狼2012 阅读(1221) | 编辑
opencl 学习step by step (8) 灰度图Histogram计算(2)
摘要: 现在我们利用上一篇教程的方法,来统计一副RGBA图像中,有多少个像素点(该像素点满足R, G, B, A任意分量>=5)?我考虑的方法是建立256 bin的直方图,对于一个像素,求max(R, G,B,A),用该值决定该像素点进入那个bin,这样求出直方图后,width*height - hostBin[0] - hostBin[1] - hostBin[2] - hostBin[3] ...阅读全文
posted @ 2012-10-22 20:38 迈克老狼2012 阅读(790) | 编辑
opencl 学习step by step (7) 灰度图Histogram计算(1)
摘要: histogram翻译成中文就是直方图,在计算机图像处理和视觉技术中,通常用histogram来进行图像匹配,从而完成track,比如meanshift跟踪算法中,经常要用到图像的直方图。 灰度图的histogram计算,首先要选择bin(中文可以称作槽)的数量,对于灰度图,像素的范围通常是[0-255],所以bin的数目就是256,然后我们循环整幅图像,统计出每种像素值出现...阅读全文
posted @ 2012-10-22 20:22 迈克老狼2012 阅读(1696) | 编辑
opencl 学习step by step (6) 旋转图像
摘要: 在本教程中,我们学习用opencl进行简单的图像处理,对一个图片进行旋转。图片读入、保存等工作,我们使用开源的FreeImage,下载地址: 首先我们建立一个gFreeImage类,用来装入图像,该类主要调用FreeImage的函数,首先会初始化FreeImage库,然后根据文件名猜测图像文件格式,最终lo...阅读全文
posted @ 2012-09-11 20:11 迈克老狼2012 阅读(1855) | 编辑
opencl 学习step by step (5) 使用二维NDRange workgroup
摘要: 在本教程中,我们使用二维NDRange来设置workgroup,这样在opencl中,workitme的组织形式是二维的,Kernel中 的代码也要做相应的改变,我们先看一下clEnqueueNDRangeKernel函数的变化。首先我们指定了workgroup size为localx*localy,通常这个值为64的倍数,但最好不要超过256。 //执行kernel,Range用2...阅读全文
posted @ 2012-09-07 19:48 迈克老狼2012 阅读(2030) | 编辑
opencl 学习step by step (4) 读入二进制kernel文件
摘要: 本教程中,我们使用上一篇教程中产生的二进制kernel文件vecadd.bin作为输入来创建程序对象,程序代码如下: //kernel文件为vecadd.bin gclFile kernelFile; if(!kernelFile.readBinaryFromFile("vecadd.bin")) { printf("Failed...阅读全文
posted @ 2012-09-06 21:19 迈克老狼2012 阅读(1106) | 编辑
opencl 学习step by step (3) 存储kernel文件为二进制
摘要: 在教程2中,我们通过函数convertToString,把kernel源文件读到一个string串中,然后用函数clCreateProgramWithSource装入程序对象,再调用函数clBuildProgram编译程序对象。其实我们也可以直接调用二进制kernel文件,这样,当不想把kernel文件给别人看的时候,起到一定的保密作用。在本教程中,我们会把读入的源文件存储一个二进制文件...阅读全文
posted @ 2012-09-06 20:21 迈克老狼2012 阅读(1797) | 编辑
OpenCL 学习step by step (2) 一个简单的opencl的程序
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shenmilingyu/article-4201-1.html
美军刚出发就有中军舰尾随