2011年12月18日

OpenCL memory object 之选择传输path

摘要: 对应用程序来说,选择合适的memory object传输path可以有效提高程序性能。下面先看一写buffer bandwidth的例子:1. clEnqueueWriteBuffer()以及clEnqueueReadBuffer() 如果应用程序已经通过malloc 或者mmap分配内存,CL_MEM_USE_HOST_PTR是个理想的选择。有两种使用这种方式的方法:第一种:a. pinnedBuffer = clCreateBuffer( CL_MEM_ALLOC_HOST_PTR or CL_MEM_USE_HOST_PTR ) b. deviceBuffer = clCreateBuf 阅读全文

posted @ 2011-12-18 18:32 迈克老狼2012 阅读(5870) 评论(1) 推荐(1) 编辑

OpenCL memory object 之 传输优化

摘要: 首先我们了解一些优化时候的术语及其定义:1、deferred allocation(延迟分配), 在第一次使用memory object传输数据时,runtime才对memory object真正分配空间。 这样减少了资源浪费,但第一次使用时要慢一些[一个context多个设备,一个memory object多个location,见前面的blog]。2.peak interconntect bandwith(峰值内联带宽) host和device之间通过PCIE总线传输数据,PCIE2.0的上行、下行带宽都是8Gb/s, 对于我们的程序,能达到3Gb/s就不错了,我的笔记本测试只有1.2Gb/ 阅读全文

posted @ 2011-12-18 13:52 迈克老狼2012 阅读(3559) 评论(2) 推荐(1) 编辑

OpenCL memory object 之 Global memory (2)

摘要: 当我们用clCreateBuffer, clCreateImage创建OpenCL memory object时候,我们需要输入一个flag参数,这个参数决定memory object的位置。 cl_mem clCreateBuffer (cl_context context, cl_m... 阅读全文

posted @ 2011-12-18 08:45 迈克老狼2012 阅读(3966) 评论(0) 推荐(1) 编辑

导航