摘要: 现在,我们开始写一个简单的OpenCL程序,计算两个数组相加的和,放到另一个数组中去。程序用cpu和gpu分别计算,最后验证它们是否相等。opencl程序的流程大致如下: 下面是source code中的主要代码: int main(int argc, char* argv[]) { //在host内存中创建三个缓冲区 ...阅读全文
posted @ 2012-09-05 06:49 迈克老狼2012 阅读(4290) | 编辑
OpenCL 学习step by step (1) 安装AMD opencl APP
摘要: 从今天开始学习OpenCL…… 因为老狼的显卡是AMD 5xx的redwood,所以下面先介绍opencl APP(Accelerated Parallel processing)的安装。 下载地址: 安装注意事项:ht...阅读全文
posted @ 2012-09-04 19:52 迈克老狼2012 阅读(3507) | 编辑
AMD opencl大学教程(8)
摘要: , 在本节,我们主要介绍OpenCL中buffer的使用,同时提供了2个完整的例子,一个是图像的旋转,一个是矩阵乘法(非常简单,没有分块优化)。1、创建OpenCL设备缓冲(buffer) opencl设备使用的数据都存放在设备的buffer中[其实就是device memory中]。我们用下面的代码创建buffer对象:cl_mem bufferobj = clCreateBuffer ( cl_context context, //Context namecl_mem_flags flags, //Memory flagssize_t size, //Memory size allocat阅读全文
posted @ 2012-01-31 19:42 迈克老狼2012 阅读(1513) | 编辑
AMD OpenCL大学课程(13) opencl扩展
摘要: 1、OpenCL扩展 OpenCL扩展是指device支持某种特性,但这中特性并不是OpenCL标准的一部分。通过扩展,厂商可以给device增加一些新的功能,而不用考虑兼容性问题。现在各个厂商在OpenCL的实现中或多或少的使用了自己的扩展。 扩展的类型分为三种: Khronos OpenCL工作组批准的扩展,这种要经过一致性测试,可能会被增加到新版本的opencl规范中。这种扩展都以cl_khr作为扩展名。 外部扩展, 以cl_ext为扩展名。这种扩展是由2个或2个以上的厂商发起,并不需要进行一致性测试。比如cl_ext_device_fission扩展。 某个厂商自己的扩展,比如AMD的阅读全文
posted @ 2012-01-31 19:33 迈克老狼2012 阅读(943) | 编辑
AMD opencl大学课程(12) 性能优化案例NBody
摘要: 本节主要介绍NBody算法的opencl性能优化。 1、NBody NBody系统主要用来通过粒子之间的物理作用力来模拟星系系统。每个粒子表示一个星星,多个粒子之间的相互作用,就呈现出星系的效果。 上图为一个粒子模拟星系的图片:Source: THE GALAXY-CLUSTER-SUPERCLUSTER CONNECTION,阅读全文
posted @ 2012-01-31 19:31 迈克老狼2012 阅读(1138) | 编辑
AMD opencl大学课程(11)
摘要: 性能优化1、线程映射 所谓线程映射是指某个线程访问哪一部分数据,其实就是线程id和访问数据之间的对应关系。合适的线程映射可以充分利用硬件特性,从而提高程序的性能,反之,则会降低performance。 请参考Static Memory Access Pattern Analysis on a Massively Parallel GPU这篇paper,文中讲述线程如何在算法中充分利用线程映射。这是我在google中搜索到的下载地址:~bjang/patternAnalysis.pdf 使用不同的线程映射,同一个线程可能访问不同位置的数据。下面是几个阅读全文
posted @ 2012-01-31 19:26 迈克老狼2012 阅读(1265) | 编辑
AMD opencl大学课程(10)
摘要: GPU线程及调度 本节主要讲述OpenCL中的Workgroup如何在硬件设备中被调度执行。同时也会讲一下同一个workgroup中的workitem,如果它们执行的指令发生diverage(就是执行指令不一致)对性能的影响。学习OpenCL并行编程,不仅仅是对OpenCL Spec本身了解,更重要的是了解OpenCL硬件设备的特性,现阶段来说,主要是了解GPU的的架构特性,这样才能针对硬件特性优化算法。 现在OpenCL的Spec是1.1,随着硬件的发展,相信OpenCL会支持更多的并行计算特性。基于OpenCL的并行计算才刚刚起步,…1、workgroup到硬件线程 在opencl中,Ke阅读全文
posted @ 2012-01-31 19:24 迈克老狼2012 阅读(1254) | 编辑
AMD opencl大学教程(9)
摘要: 本节主要讲述GPU的memory架构。优化基于GPU device的kernel程序时,我们需要了解很多GPU的memory知识,比如内存合并,bank conflit(冲突)等等,这样才能针对具体算法做一些优化工作。1、GPU总线寻址介绍 假定X是一个指向整数(32位整数)数组的指针,数组的首地址为0x00001232。一个线程要访问元素X[0], int tmp = X[0]; 假定memory总线宽度为256位(HD5870就是如此,即为32字节),因为基于字节地址的总线要访问memeory,必须和总线宽度对齐,也就是说按必须32字节对齐来访问memory,比如访问0x00000000.阅读全文
posted @ 2012-01-31 19:21 迈克老狼2012 阅读(1403) | 编辑
AMD opencl大学课程(7)
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shenmilingyu/article-4201-2.html
竟然有五条优质高蛋白