和亲公主19楼,情迷阿斯兰,电热水器的安装
第一种:使用ion:
cl_mem_ion_host_ptr ion_host_ptr1; ion_host_ptr1.ext_host_ptr.allocation_type = cl_mem_ion_host_ptr_qcom; ion_host_ptr1.ext_host_ptr.host_cache_policy = cl_mem_host_uncached_qcom; ion_host_ptr1.ion_filedesc = fd_data.fd; ion_host_ptr1.ion_hostptr = host_addr; clock_gettime(clock_realtime, &ts); cl_mem input_image = clcreateimage(context, cl_mem_write_only | cl_mem_use_host_ptr | cl_mem_ext_host_ptr_qcom, &imageformat, &imagedesc, &ion_host_ptr1, &err);
第二种,使用opencl api:
cl_mem normalimage = clcreateimage(context, cl_mem_write_only | cl_mem_alloc_host_ptr, &imageformat, &imagedesc, null, &err);
第三种,使用cl_mem_use_host_ptr
cl_mem normalimage = clcreateimage(context, cl_mem_write_only | cl_mem_use_host_ptr , &imageformat, &imagedesc, data, &err);
然后用这三个cl_mem去执行相同的kernel(用255减去像素值,图像大小为1440x1080),然后把结果clenqueuemapimage
到host指针,然后再使用memcpy复制到另外一块host内存,测量时间如下,单位为ms:
方式 | clcreateimage | clenqueuendrangekernel | clenqueuemapimage |
---|---|---|---|
ion | 0.05 | 1.5 | 0.035 |
opencl api | 0.8 | 1.5 | 0.5 |
cl_mem_use_host_ptr | 1.7 | 2.4 | 1.0 |
同时,clenqueueunmapmemobject和memcpy都很快,耗时分别为0.015ms和0.0004ms左右。
从测量结果来看,使用ion的方式,在各项速度上都是占优的。使用opencl api也比较接近。而使用cl_mem_use_host_ptr则会获得比较差的效果。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android studio 解决logcat无过滤工具栏的操作
Android Studio 恢复小窗口停靠模式(Docked Mode)
Android studio保存logcat日志到本地的操作
Android Studio快捷键生成TAG、Log.x日志输出介绍
网友评论