我对GPU编程一无所知,我想了解一下这方面的情况。我必须开发一个图像处理项目,在智能手机的GPU上工作(在Android设备上),但我不知道从哪里开始。
1)编程智能手机的图形处理器和编程其他图形处理器(例如Nvidia GeForce 9)是一样的吗?
2)我听说过GPU的计算或图形编程:有什么区别?它们是否相等?
3)我已经配置了Eclipse来开发Android应用程序:我还需要哪些工具?
4)智能手机的GPU编程(适用于Android)是否独立于设备?三星S4,LG G3和其他安卓设备也是一样的吗?
5)我需要什么库?我听说了Nvidia的OpenCV和Tegra pack。
你能帮我做这个吗?另外,你能帮我做一些有针对性的链接吗?
发布于 2015-10-14 14:33:38
1)编程智能手机的图形处理器和编程其他图形处理器(例如Nvidia GeForce 9)是一样的吗?
不总是这样。例如,根据您使用的API和硬件平台,某些移动设备允许您开发与桌面GPU完全相同的程序。
例如,如果您在Tegra K1/X1设备上进行CUDA编程,这几乎与您在GeForce 9上所做的操作相同。
但是,如果您使用OpenCL,则需要小心。一些移动设备只支持OpenCL Embedded Profile,这意味着与桌面GPU相比,功能有限。即使一些移动设备支持OpenCL full profile,您需要处理的资源仍然较少,因此,仍然需要修改程序以适应移动平台。
2)我喜欢图形处理器的计算或图形编程:有什么区别?它们是否相等?
图形编程更侧重于图形渲染。目标是在屏幕上绘制一些东西。手机需要的主要API是用于安卓的OpenGL ES,或者用于iOS的Metal,或者用于Windows的DX。
GPU的计算意味着你想要完成一些与图形渲染无关的任务,而是需要从输入的数字中计算出一些方程或一些值。例如,您可能想要过滤图像或处理某些视频等。用于计算的主要API是OpenCL、CUDA和Metal。
Eclipse3)我已经配置了
来开发安卓应用程序:我还需要哪些工具?
当然,你需要Android NDK。您需要为您的移动设备提供OpenCL库或SDK。
4)智能手机的图形处理器编程(适用于安卓)是独立于设备的吗?三星S4、LG G3和其他安卓设备也是如此?
当然,设备功能在您能做的事情上有很大的不同。主要的区别在于手机中使用的芯片组。这将决定您应该使用什么SDK,并且硬件功能将会有很大的不同。
另一件需要注意的事情是,由于巨大的硬件差异,GPU编程通常不具备可移植性。所以在一部手机上优化得很好的源代码在另一部手机上可能不是最好的。
5)我需要什么库?关于OpenCV和Nvidia的Tegra pack。
OpenCV是计算机视觉库。您是否需要它取决于您所使用的算法类型。如果您的应用程序严重依赖于某些图像处理和计算机视觉算法,您可能会发现OepnCV很有用。但毫无疑问,您可以从自己的简单库开始。
Tegra NVPack并没有什么特别之处。它只是一个软件/ SDK捆绑包,包含Android开发SDK、NDK、IDE和工具,以及NVidia的SDK。您始终可以通过安装单独的SDK和工具来设置自己的环境。但是,如果您针对NVidia平台进行开发,那么NVPack可能会更容易入门。
发布于 2015-03-19 18:48:20
在安卓系统中访问图形处理器的一个简单方法是使用OpenGL ES。android SDK将所有的OpenGL ES暴露到java https://www.khronos.org/opengles/sdk/docs/man/中。
OpenGL ES允许您在GLSL (开放GL着色语言)中编写着色器,并在运行时在GPU上编译它。https://www.opengl.org/documentation/glsl/
这段GLSL代码直接在GPU上运行。
有关安卓OpenGL ES的更多信息,可以在安卓文档http://developer.android.com/guide/topics/graphics/opengl.html中找到
这是一种非常本机的方法。使用库完全取决于您希望通过GPU实现的功能
发布于 2015-03-19 18:44:50
安卓使用OpenGL ES (嵌入式系统的开放图形库)
OpenGL ES有不同的版本。我推荐使用2.0,但您也可以使用1.0或更高版本。
大多数手机都支持2.0,你有更多的选择,而且比1.0更快
学习OpenGL是困难的,可能需要一段时间。下面是一个很好的概述教程:http://blog.db-in.com/all-about-opengl-es-2-x-part-1/
苹果智能手机也使用OpenGL ES,所以如果你在安卓上学习它,你也可以在iphones上使用它。
是的,所有的安卓设备都使用OpenGL。
https://stackoverflow.com/questions/29142142
复制相似问题