LAPACK例程适用于iPhone模拟器,但不适用于设备

时间:2011-06-03 19:57:33

标签: iphone objective-c ios lapack accelerate-framework

我正在使用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

3 个答案:

答案 0 :(得分:3)

使用双精度时看起来像known issue

解决方案:使用单精度,即Floats。

答案 1 :(得分:0)

我使用dgesvd_(单精度)来解决1200x1200方程式系统。 iPhone 4的执行时间为1.1秒,而使用旧的“手动”方法则为60秒。

答案 2 :(得分:-2)

LOSACK在ios设备上不可用 - 仅限BLAS和vDSP。它适用于模拟器,因为该库在mac上可用。 iOS Accelerate Reference