LAPACK 例程适用于 iPhone 模拟器,但不适用于设备
我正在使用 Accelerate 框架来求解欠定/超定线性方程组。我使用的例程是 dgelsd_ ,最初来自 LAPACK。
dgelsd_( &m, &n, &nrhs, a_t, &lda, b, &ldb, s, &RCOND, &IRANK, work, &workSize, iWork, &info);
这在模拟器中工作得很好,在提供矩阵 a_t 和 b 时,结果在 b 中正确返回。但是,当我在设备上尝试此操作时,结果全为零。
我哪里可能出错了?我已根据需要为例程分配了一定量的工作内存,但我使用探查器进行了检查,内存似乎不是问题。
有人让 LAPACK 例程在 iPhone 设备上正常工作吗?谢谢。
编辑:iPhone SDK 版本 4.2,设备 iPhone 4
I'm using the Accelerate framework to solve a under/overdetermined system of linear equations. The routine I'm using is dgelsd_ originally from LAPACK.
dgelsd_( &m, &n, &nrhs, a_t, &lda, b, &ldb, s, &RCOND, &IRANK, work, &workSize, iWork, &info);
This works fine in the simulator, where on supplying matrices a_t and b, the result is returned correctly in b. However, when I try this on the device, the result is all zeroes.
Where could I be going wrong? I have allocated a certain amount of working memory for the routine, as required, but I ran a check with the profiler and memory doesn't seem to be the issue.
Has anyone got LAPACK routines to work correctly on the iPhone device? Thanks.
Edit: iPhone SDK version 4.2, Device iPhone 4
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用双精度时,这似乎是一个已知问题。
解决方案:使用单精度,即Floats。
Looks like it's a known issue when using double precision.
Solution: Use single-precision, i.e. Floats.
我正在使用 sgesv_(单精度)来求解 1200x1200 方程组。
iPhone 4 上的执行时间为 1.1 秒,而使用我旧的“手动”方法时为 60 秒。
I am using sgesv_ (single-precison) to solve a 1200x1200 equation system.
The execution time on an iPhone 4 is 1.1 s, compared to 60 s when using my old "manual" method.
LAPACK 不适用于 iOS 设备 - 仅适用于 BLAS 和 vDSP。它可以在模拟器上运行,因为该库在 Mac 上可用。 iOS 加速参考
LAPACK isn't available on ios devices - only BLAS and vDSP. It works on the simulator because that library is available on mac. iOS Accelerate Reference