1)Programming Smartphone’s GPU and programming other GPU (Nvidia

GeForce 9 for example) are equal?

不总是.例如,根据您使用的API和硬件平台,某些移动设备允许您开发与桌面GPU完全相同的程序.

例如,如果您在Tegra K1 / X1设备上执行CUDA程序,那将与GeForce 9几乎相同.

但是,如果您使用OpenCL,则需要小心.一些移动设备只支持OpenCL Embedded Profile,这意味着与桌面GPU相比,功能是有限的.即使一些移动设备支持OpenCL的完整配置文件,您仍然需要更少的资源来处理,因此该程序仍然需要修改以适应移动平台.

2)I herd about computation or graphic programming for GPU: what’s the

difference? Are them equal?

图形编程更多地侧重于图形渲染.目标是在屏幕上画一些东西.您需要手机的主要API将是适用于Android的OpenGL ES,或者适用于iOS的“金属”或“Windows”.

GPU的计算意味着您要完成一些与图形渲染无关的任务,而需要计算一些方程式或从输入数字计算一些值.例如,您可能需要过滤图像或处理某些视频等等.计算的主要API是OpenCL,CUDA和Metal.

3)I already configured Eclipse to develop Android apps: what other

tools I need?

当然你需要Android NDK.您需要OpenCL库,或者是您拥有的移动设备的SDK.

4)Smartphone’s GPU programming (for Android) is device independent? It’

s the same for Samsung S4, LG G3, and other Android device?

当然,设备能力在你能做什么有很大的差异.主要区别在于手机中使用的芯片组.这将决定你应该使用什么SDK,硬件功能会有很大的不同.

另外值得注意的是,由于巨大的硬件差异,GPU编程通常不是性能可移植的.因此,一个手机上非常优化的源代码可能不是最好的另一个手机.

5)What library I need?I herd about OpenCV and Tegra pack of Nvidia.

OpenCV是计算机视觉库.是否需要它取决于你所使用的算法类型.如果您的应用程序严重依赖于某些图像处理和计算机视觉算法,您可能会发现OepnCV有用.但绝对你可以随时从你自己的简单库开始.

Tegra NVPack没什么特别的.它只是一个包含Android开发SDK,NDK,IDE和工具的软件/ SDK软件包,以及NVidia的SDK.您可以随时通过安装单独的SDK和工具来设置自己的环境.但是,如果您开发NVidia平台,NVPack可能会更容易开始.