1)编程智能手机的GPU和其他GPU(例如Nvidia GeForce 9)是相等的吗?
并不总是。例如,取决于您使用的API和硬件平台,一些移动设备允许您开发与桌面GPU完全相同的程序。
例如,如果您在Tegra K1 / X1设备上进行CUDA程序,则几乎与您在GeForce 9上执行的操作相同。
但是,如果您使用OpenCL,就需要小心谨慎。一些移动设备仅支持OpenCL嵌入式配置文件,这意味着与桌面GPU相比,功能受到限制。即使某些移动设备支持OpenCL全配置文件,您处理的资源依然更少,因此程序仍需要修改以适应移动平台。
2)我听说过针对GPU的计算或图形编程:它们之间有什么区别? 它们相等吗?
图形编程更注重图形渲染。目标是在屏幕上绘制图形。您在手机上需要的主要API是Android的OpenGL ES、iOS的Metal或Windows的DX。
GPU的计算意味着您想完成一些与图形渲染无关的任务,而是需要计算一些方程或从输入数字计算一些值。例如,您可能希望过滤图像或处理某些视频等。计算的主要API是OpenCL、CUDA和Metal。
3)我已经配置了Eclipse来开发Android应用程序:还需要哪些工具?
您当然需要Android NDK。您需要移动设备的OpenCL库或SDK。
4)智能手机的GPU编程(针对Android)是否与设备无关? 是否适用于三星S4、LG G3和其他Android设备?
当然,设备性能差异很大,这将决定您可以做什么。主要区别在于手机中使用的芯片组。这将确定您应该使用哪个SDK以及硬件功能将相当不同。
需要注意的另一件事是,由于硬件差异巨大,GPU编程通常不具备性能可移植性。因此,在一部手机上非常优化的源代码可能在另一部手机上并不是最佳选择。
5) 我需要哪个库?我听说过OpenCV和Nvidia的Tegra包。
OpenCV是计算机视觉库。你是否需要它取决于你所使用算法的类型。如果你的应用程序严重依赖某些图像处理和计算机视觉算法,那么你可能会发现OpenCV很有用。但是,你也可以始终从自己的简单库开始。
Tegra NVPack没有什么特别之处。它只是一个软件/SDK捆绑包,包含Android开发SDK、NDK、IDE和工具,以及NVidia的SDK。你总是可以通过安装单独的SDK和工具来设置自己的环境。但如果你开发NVidia平台,NVPack可能更容易让你入手。