有没有人知道一个在iOS下使用OpenGL ES 2.0的线性代数库?
具体来说,我正在寻找一种方法,在iOS设备上使用GPU进行矩阵乘法运算,可以处理任意大小的矩阵(例如,远大于4x4,更像是5,000 x 100,000)。
有没有人知道一个在iOS下使用OpenGL ES 2.0的线性代数库?
具体来说,我正在寻找一种方法,在iOS设备上使用GPU进行矩阵乘法运算,可以处理任意大小的矩阵(例如,远大于4x4,更像是5,000 x 100,000)。
你询问“在底层使用OpenGL ES 2.0”的具体原因是什么?还是只想要一个快速的、硬件优化的线性代数库,比如内置于iOS中的BLAS?
MetalPerformanceShaders.framework提供了一些经过调整的类似BLAS的函数。它不是GLES,而是基于GPU的Metal技术。请参见MetalPerformanceShaders/MPSMatrixMultiplication.h。
iOS上的OpenGL可能不是正确的选择。如果你要使用GPU,那么iOS上的Metal支持将是更好的选择。
您可以使用苹果公司对Metal计算着色器的支持。我在我的博士学位中编写了高性能代码。我曾经用Metal计算一些分形图像,这可能会给您一些启示。
总的来说,这个问题太过宽泛。您打算用这个库做什么,或者您打算如何使用它?这是一次性的乘法吗?您是否已经测试了当前的库,并发现性能太慢了?如果是这样,那么差距有多大?
通常情况下,您可以在CPU vs. GPU vs. 专用硬件上运行教育性或纯信息性实验,以测试算法X的性能,但最常见的情况是遇到Amdahl's law和您的代码与该领域的专家团队之间的比较。
您还可以查看加速框架,该框架提供BLAS。
根据WWDC 2014的演讲加速框架中的新功能,苹果已经手动调整了针对其当前一代硬件的线性代数库。它们不仅快速,而且节能。还有更新的演讲。