OpenCL: Shared memory between CPU and GPU in Android development of Qaulcomm plateform

最近的一个高通平台的项目, 对性能要求很苛刻, 我们采用了 OpenCL 实现了主要的功能, 但是瓶颈出现在从 CPU 向 GPU 内存拷贝的部分。 虽然 OpenCL 的 map API 是为了解决这个问题而设计的, 但是在一些固有的框架内, map 并不能避免所有的内存拷贝。

高通针对 OpenCL 有两个非常有用的扩展, 可以有效的解决这个问题:

https://www.khronos.org/registry/cl/extensions/qcom/cl_qcom_ion_host_ptr.txt

https://www.khronos.org/registry/cl/extensions/qcom/cl_qcom_ext_host_ptr.txt

通过这样的方式, 可以把 Android ION memroy 和 GPU 共享, 避免了额外的内存拷贝, 效率有显著的提升, 同时可以降低一定的能耗。 是非常不错的解决方案。

时间: 2024-08-27 05:16:21

OpenCL: Shared memory between CPU and GPU in Android development of Qaulcomm plateform的相关文章

GPU编程--Shared Memory(4)

GPU的内存按照所属对象大致分为三类:线程独有的.block共享的.全局共享的.细分的话,包含global, local, shared, constant, and texture memoey, 我们重点关注以下两类内存 Global memory Global memory resides in device memory and device memory is accessed via 32-, 64-, or 128-bytes memory transactions Shared

OpenCL入门:(二:用GPU计算两个数组和)

本文编写一个计算两个数组和的程序,用CPU和GPU分别运算,计算运算时间,并且校验最后的运算结果.文中代码偏多,原理建议阅读下面文章,文中介绍了OpenCL相关名词概念. http://opencl.codeplex.com/wikipage?title=OpenCL%20Tutorials%20-%201  (英文版) http://www.cnblogs.com/leiben/archive/2012/06/05/2536508.html (博友翻译的中文版) 一.创建工程 按照OpenCL

图像重采样(CPU和GPU)

1 前言 之前在写影像融合算法的时候,免不了要实现将多光谱影像重采样到全色大小.当时为了不影响融合算法整体开发进度,其中重采样功能用的是GDAL开源库中的Warp接口实现的. 后来发现GDAL Warp接口实现的多光谱到全色影像的重采样主要存在两个问题:1 与原有平台的已有功能不兼容,产生冲突:2 效率较低.因此,决定重新设计和开发一个这样的功能,方便后期软件系统的维护等. 2 图像重采样 图像处理从形式上来说主要包括两个方面:1 单像素或者邻域像素的处理,比如影像的相加或者滤波运算等:2 图像

CUDA学习(五)之使用共享内存(shared memory)进行归约求和

共享内存(shared memory)是位于SM上的on-chip(片上)一块内存,每个SM都有,就是内存比较小,早期的GPU只有16K(16384),现在生产的GPU一般都是48K(49152). 共享内存由于是片上内存,因而带宽高,延迟小(较全局内存而言),合理使用共享内存对程序效率具有很大提升. 下面是使用共享内存对一个数组进行求和,使用全局内存进行归约求和可以浏览https://www.cnblogs.com/xiaoxiaoyibu/p/11397205.html #pragma on

CUDA学习(六)之使用共享内存(shared memory)进行归约求和(M个包含N个线程的线程块)

在https://www.cnblogs.com/xiaoxiaoyibu/p/11402607.html中介绍了使用一个包含N个线程的线程块和共享内存进行数组归约求和, 基本思路: 定义M个包含N个线程的线程块时(NThreadX = ((NX + ThreadX - 1) / ThreadX)),全局线程索引需使用tid = blockIdx.x * blockDim.x + threadIdx.x,而在每个线程块中局部线程索引是i = threadIdx.x, 每个线程块只计算一部分求和,

Multi-processor having shared memory, private cache memories, and invalidate queues having valid bits and flush bits for serializing transactions

Multi-processor systems are often implemented using a common system bus as the communication mechanism between CPU, memory, and I/O adapters. It is also common to include features on each CPU module, such as cache memory, that enhance the performance

CPU和GPU性能对比

计算20000次10000点的fft,分别使用CPU和GPU,得 the running time of cpu is : 2.3696s the running time of gpu is : 0.3425s 相同的参数matlab处理的时间为 1.2865s ,理论上gpu最快,cpu次之,matlab最慢,得到的结果不对 处理的环境是(CPU i7 4790K,gpu GTX1080, matlab 2015a,内存1666MHZ 16G, PCI E M.2 固态硬盘(读1.2GB/s

CPU和GPU双低效,摩尔定律之后一万倍 ——写于TPU版AlphaGo重出江湖之际

本文来自计算机体系结构专家王逵.他认为,“摩尔定律结束之后,性能提升一万倍”不会是科幻,而是发生在我们眼前的事实. 2008年,<三体2:黑暗森林>里写到: 真的很难,你冬眠后不久,就有六个新一代超级计算机大型研究项目同时开始,其中三个是传统结构的,一个是非冯结构的,另外两个分别是量子和生物分子计算机研究项目.但两年后,这六个项目的首席科学家都对我说,我们要的计算能力根本不可能实现.量子计算机项目是最先中断的,现有的物理理论无法提供足够的支持,研究撞到了智子的墙壁上.紧接着生物分子计算机项目也

CPU 和 GPU 的区别

作者:知乎用户链接:https://www.zhihu.com/question/19903344/answer/96081382来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景.CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理.这些都使得CPU的内部结构异常复杂.而GPU面对的则是类型高度统一的.相互无依赖的大规模数据和不需要被