1) 对智能手机的 GPU 进行编程和对其他 GPU 进行编程(Nvidia
例如 GeForce 9) 是否相等?
并非总是如此。例如,根据您使用的 API 和硬件平台,某些移动设备允许您开发与桌面 GPU 完全相同的程序。
例如,如果您在 Tegra K1/X1 设备上执行 CUDA 程序,那几乎与您在 GeForce 9 上执行的操作相同。
但是,如果您使用 OpenCL,则需要小心。一些移动设备仅支持 OpenCL Embedded Profile,这意味着与桌面 GPU 相比功能有限。即使某些移动设备支持 OpenCL full profile,但您需要处理的资源仍然较少,因此仍需要修改程序以适应移动平台。
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)我需要什么库?我关注的是 Nvidia 的 OpenCV 和 Tegra 包。
OpenCV 是计算机视觉库。您是否需要它取决于您使用的算法类型。如果您的应用程序严重依赖某些图像处理和计算机视觉算法,您可能会发现 OpenCV 很有用。但绝对可以从自己的简单库开始。
Tegra NVPack 没有什么特别之处。它只是一个包含 Android 开发 SDK、NDK、IDE 和工具以及 NVidia 的 SDK 的软件/SDK 包。您始终可以通过安装单独的 SDK 和工具来设置自己的环境。但如果您为 NVidia 平台开发,NVPack 对您来说可能更容易开始。