使用 Mali-400 GPU (OpenGL ES 2.0) 进行通用计算?
Using Mali-400 GPU (OpenGL ES 2.0) for general purpose computation?
我正准备购买 cluster of SOPINE A64 modules for basic (CPU-based) parallel computing, and I noticed that the modules also have GPUs. It wasn't difficult to find that the Mali-400 不 与 OpenCL 兼容,但我无法确认我是否能够将 OpenGL 接口用于通用 GPU 编程。我不需要做任何花哨的事情;我只想知道我是否可以将一些矩阵繁重的任务卸载到 GPU。
我可以找到一个有用的 tutorial on GPGPU programming in OpenGL but it assumes access to GLUT, which isn't available on OpenGL ES 2.0, and the most relevant answer I've found on SE talks about doing what I want on iOS 但不是用相同的 GPU。
是否像使用 GLUT 以外的东西设置 OpenGL 环境然后按照链接的教程一样简单?还是我需要注意其他硬件限制?
Mali-400 仅支持 OpenGL ES 2.0,因此虽然您可以将其用于非图形计算,但请注意它有一些严重的限制。
- 片段着色器仅支持
mediump
处理,即FP16精度。
- ...但它不是 IEEE-754 FP16 - 所以不要指望在极端情况下有完整的 IEEE-754 语义。
- 整数处理比您预期的更有限(即它只是伪装成整数的浮点数,比 16 位窄)。
- 输出必须通过纹理,这是某种形式的每通道 8 位颜色格式。您可以将更广泛的数据打包到其中,但这并不理想...
- 将数据返回到 CPU 的成本很高(图形内存通常未缓存)。
我正准备购买 cluster of SOPINE A64 modules for basic (CPU-based) parallel computing, and I noticed that the modules also have GPUs. It wasn't difficult to find that the Mali-400 不 与 OpenCL 兼容,但我无法确认我是否能够将 OpenGL 接口用于通用 GPU 编程。我不需要做任何花哨的事情;我只想知道我是否可以将一些矩阵繁重的任务卸载到 GPU。
我可以找到一个有用的 tutorial on GPGPU programming in OpenGL but it assumes access to GLUT, which isn't available on OpenGL ES 2.0, and the most relevant answer I've found on SE talks about doing what I want on iOS 但不是用相同的 GPU。
是否像使用 GLUT 以外的东西设置 OpenGL 环境然后按照链接的教程一样简单?还是我需要注意其他硬件限制?
Mali-400 仅支持 OpenGL ES 2.0,因此虽然您可以将其用于非图形计算,但请注意它有一些严重的限制。
- 片段着色器仅支持
mediump
处理,即FP16精度。 - ...但它不是 IEEE-754 FP16 - 所以不要指望在极端情况下有完整的 IEEE-754 语义。
- 整数处理比您预期的更有限(即它只是伪装成整数的浮点数,比 16 位窄)。
- 输出必须通过纹理,这是某种形式的每通道 8 位颜色格式。您可以将更广泛的数据打包到其中,但这并不理想...
- 将数据返回到 CPU 的成本很高(图形内存通常未缓存)。