clCreateProgramWithBinary 和 clCreateProgramWithSource
来源:互联网 发布:csol大刀控制台优化吧 编辑:程序博客网 时间:2024/05/22 13:49
摘录:
使用clCreateProgramWithSourc
(即,到buildProgram这一步,也还是在host端进行,build的结果是构造成一个完整的课加载至设备端的执行程序~哦~)
关于:clCreateBuffer的 flags参数
摘录自:《跨平台的多核与重核编程讲义------OpenCL的方式》
flag指定所要分配的存储器对象的分配和使用信息:
使用信息:CL_MEM_READ_WRITE(默认) 和 CL_MEM_READ_ONLY 和 CL_MEM_WRITE_ONLY
分配信息:【1】 CL_MEM_USE_HOST_PTR 此属性允许用户将host_ptr中指向的内存缓冲起来,已备kernel在OpenCL实现中调用。此时,host必须指向host端有效地址,size为内存长度。OpenCL不允许多个buffer共享一个host_ptr,或者多个buffer对象使用的host内存之间有任何重叠区域。
【2】 CL_MEM_ALLOC_HOST_PTR 此属性指定OpenCL在创建OpenCL内存对象时自动分配一块儿size大小的host memory,这块内存的指针在调用本API创建时,不透明,创建完成后可以通过指定的OpenCL的其他API获得。在其单独使用此属性时,host_ptr必须为空,故其与【1】互斥。
【3】 CL_MEM_COPY_HOST_PTR 在此属性下,OpenCL在创建OpenCL内存对象时,会自动分配一块儿指定大小的内存,该内存可以在host或local,并且将host_ptr中指定长度的内容复制到分配好的内存中。因此,本属性要求host_ptr非空。CL_MEM_COPY_HOST_PTR 不能与CL_MEM_USE_HOST_PTR同时使用。在CL_MEM_COPY_HOST_PTR和CL_MEM_ALLOC_HOST_PTR同时使用的情况下,自动分配的内存一定被分配在host端。
如果没有指明分配属性,将不做相应的分配和数据传输动作。在内核程序运行时直接将内存对象在设备中实现。
哈哈,刚才试了一下,用CL_MEM_USE_HOST_PTR做参数,执行clCreateBuffer,如使用参数host_ptr为outbuffer,create出cl_mem outputBuffer内存对象。
则在create之前,对outbuffer进行赋值以及在kernel执行过后,使用outbuffer访问存储结果的outputBuffer中的值,是完全有效的,不知道性能上是有什么差异,不过,是有效的,那么,CL_MEM_USE_HOST_PTR,果真是USE 了 host的了。
既然outbuffer和outputBuffer之间存在数据关联,即传值了,那,我有个问题use的过程是在kernel执行完成之后,对host内存中的outbuffer传值,还是执行过程中间歇性传值,还是触发式传值,哎,无所谓了先。
额,还是没太懂,现在再看http://www.cnblogs.com/mikewolf2002/archive/2011/12/18.html,是关于数据传输的文章,正在看,不知道咋样
....after one hour 看不懂啊,/抓狂,pin是啥个意思嘛?path又是啥嘛/抓狂,啊,晕。
附Apple‘s程序:http://www.cocoachina.com/bbs/simple/?t31352.html
其中,clGetDeviceIDs的平台参数为NULL,解释如下:
cl_int clGetDeviceIDs (cl_platform_id platform, cl_device_type device_type, cl_uint num_entries, cl_device_id * devices, cl_uint * num_devices )
这里的第一个参数,platform是通过调用clGetPlatformIDs函数获得的平台ID。如果这个参数为空,那么行为是实现定义的。对于Apple的OpenCL驱动而言,这个参数传空,那么将默认使用Apple的OpenCL驱动;否则的话可以使用其它第三方的OpenCL驱动。
又验证了一个,clEnqueueMapBuffer返回地址为该buffer在host中所映射的内存地址指针。
注意:clEnqueueUnmapBuffer与clEnqueueMapBuffer必须成对儿出现,即在map操作结束后需要释放host端的mapping资源。(mapping资源是啥?)
- clCreateProgramWithBinary 和 clCreateProgramWithSource
- . 和 ->
- || 和&&
- .和::
- “?”和“!”
- #和##
- && 和 ||
- 、和
- #和##
- .//和..//
- 和
- ?和\?
- ./ 和 ../
- #和##
- #、和##
- #和##
- *和&
- <和>
- Codeforces Round #232 (Div. 2)渣渣也写。
- android下根据路径不同拷贝文件至指定路径
- 在ubuntu9.04下安装QT4.5.3
- C#实现MD5算法,对用户密码加密
- SAS学习(一)
- clCreateProgramWithBinary 和 clCreateProgramWithSource
- jq实现逐字打印效果
- android一个项目应用另外一个项目和jar包引用
- Log Mask
- 2014工作感悟
- 初识Ajax
- 动态创建和释放二维数组
- SQL CHARINDEX函数的使用
- 微信运营三十三计――只要你一直提供价值,留下的总会留下来!