所以我有 2 个矩阵:每个都是 100x100。
我正在寻找计算第三个矩阵,这样:M3[i]=sqrt(M1[i]^2 + M2[i]^2)。
我显然可以做 ForLoops,但我确信有更快的东西。
我深入研究了加速框架并迷失在 Linpack 世界中
任何帮助让我走上正轨......
谢谢
所以我有 2 个矩阵:每个都是 100x100。
我正在寻找计算第三个矩阵,这样:M3[i]=sqrt(M1[i]^2 + M2[i]^2)。
我显然可以做 ForLoops,但我确信有更快的东西。
我深入研究了加速框架并迷失在 Linpack 世界中
任何帮助让我走上正轨......
谢谢
Accelerate 框架是个好主意。
您可以使用vDSP_vsq 之类的函数一次对矩阵的一列进行操作,将结果放在 M3 的相应列中。您可能必须制作两个结果矩阵(一个是 M1^2,另一个是 M2^2),然后通过添加调用vDSP_vadd的列来添加它们以形成正确的 M3 结果矩阵,这又是能够一次操作一列。
Apple 开发者页面上有示例代码(显示如何添加两个向量等)。
我认为最快的方法是使用
vDSP_vpythg 向量毕达哥拉斯;单精度。
从 A 中减去向量 C 并平方差,从 B 中减去向量 D 并平方差,将两组差平方相加,然后将和的平方根写入向量 E。
显然为 C 和 D 传递零向量。