谷歌选择RenderScript而不是OpenCL的真正原因是什么?
这个问题的提问形式略有不同,但我想知道安卓开发者的想法,谷歌的决定背后到底是什么,而不是谷歌的官方答案是什么 OpenCL是一种开放标准,可用于各种设备,如CPU、桌面GPU、ARM处理器、FPGA和DSP。它为开发人员提供了创建高性能软件和库的便利,这些软件和库可以在所有设备上运行 RenderScript是一种更高级的语言,它主要关注媒体操作,并在CPU和GPU上运行。它适用于所有新的Android手机和平板电脑,但不适用于其他操作系统。与OpenCL的一大区别是RenderScript总是处理调度,而不是软件谷歌选择RenderScript而不是OpenCL的真正原因是什么?,opencl,renderscript,Opencl,Renderscript,这个问题的提问形式略有不同,但我想知道安卓开发者的想法,谷歌的决定背后到底是什么,而不是谷歌的官方答案是什么 OpenCL是一种开放标准,可用于各种设备,如CPU、桌面GPU、ARM处理器、FPGA和DSP。它为开发人员提供了创建高性能软件和库的便利,这些软件和库可以在所有设备上运行 RenderScript是一种更高级的语言,它主要关注媒体操作,并在CPU和GPU上运行。它适用于所有新的Android手机和平板电脑,但不适用于其他操作系统。与OpenCL的一大区别是RenderScript总是
谷歌对OpenCL的官方回答事实上是不正确的,这让OpenCL社区中的许多人感到沮丧,并在逻辑上给出了一些强烈的反应。因此,请实事求是地介绍RenderScript和OpenCL——我不希望这个问题被关闭,因为有人在胡说八道。首先,让我们讨论一下Tim Murray对这个问题的回答
- 他指出OpenCL/CUDA执行模型与执行模型的各种因素有关,如寄存器计数、本地内存和其他类似细节。虽然这在一定程度上是正确的,但OpenCL执行模型是专门开发的,它允许聪明的开发人员以一种仍然可以产生最大性能的方式来抽象这些差异
- 例如:如果内核开发人员需要了解这些细节,那么为了处理微体系结构中的差异,OpenCL运行时API提供了大量信息(请注意,这里也可以检索扩展信息)
- 向量(SIMD风格)执行的细节也不例外。大多数OpenCL实现都指导内核应该在没有显式矢量化的情况下编写——该实现将矢量化相邻工作项的执行。这也是CUDA遵循的模型(CUDA甚至不再提供向量类型,但这是另一回事)
- 谈到工作项目的要点;确实可以将工作维度调整为特定的大小。然而在实践中,很少使用
属性,除非它是某个已知维度(为了计算而不是性能)reqd\u work\u group\u size
- 此外,的OpenCL文档明确指出
- “OpenCL不适合Android开发者的需求”——我不相信有任何形式的民意调查。我不知道斯蒂芬是从哪里得到这些无可争议的信息的。我不能对此进行辩论
- “并积极促成平台碎片化”——谷歌的开发人员是否认为NDK不包含特定于硬件的功能?好像NDK主页上的内容还不够
- “OpenCL不符合Android的需求/目标,因此我们不会提供支持它的谷歌设备”。如果这是真的,这些Android设备就不会附带OpenCL支持。我不能比文森特更清楚地说明这一点
也许真的就这么简单。听着,作为一个过去曾与OpenCL合作并希望看到Android支持它的人,我同情你的挫折。然而,使用堆栈溢出作为肥皂盒来发泄不满并不是正确的方式。如果你能把它修改成一个关于OpenCL和Renderscript的特定技术问题,我们可以重新打开它,但现在这看起来像是一个政治声明。我也很沮丧——但同意你对这种情况的评估。我不会在这里谈论范宁的话题。