Armadillo 在 iOS 上调用内部加速库

Posted

技术标签:

【中文标题】Armadillo 在 iOS 上调用内部加速库【英文标题】:Armadillo Calls Internal Accelerate Libraries on iOS 【发布时间】:2016-01-28 20:02:48 【问题描述】:

我最近尝试在 ios 上使用 Armadillo 来做一些矩阵计算。该应用程序在我的开发 iPhone 上运行,但 Apple 在尝试将其发布到 Appstore 时给了我错误消息。似乎犰狳调用了一些内部的 BLAS 函数。我在网上搜索了该消息,但没有发现任何有用的信息。我还发现调用带有“cblas_”前缀的 BLAS 函数,例如cblas_dgemv,直接来自我的代码不会导致错误。然而,这使得犰狳的使用毫无意义。

不知道有没有人遇到过同样的问题,解决方法是什么。我怀疑这与 config.hpp 中的某个宏有关。非常感谢您的热心帮助。

错误信息:

非公开 API 使用:

• 应用引用了 *** 中的非公共符号:_sgemm_、_sgemv_、_ssyrk_

【问题讨论】:

【参考方案1】:

Accelerate BLAS 实现支持一堆冗余符号,以方便各种 fortran 编译器的不同函数命名方案。严格来说,这些是为了(由您的 fortran 编译器)使用的,所以您可能有一些争论的理由,即它们不是私有接口。如果 AppStore 仍然给您带来麻烦,请向 Apple 提交错误并要求他们修复界面上的簿记,以便它们可以使用。

不过,在标头中开始使用 cblas_ 接口会更简单。

【讨论】:

以上是关于Armadillo 在 iOS 上调用内部加速库的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 10 上使用 Armadillo 作为库与 CLion 和 CMake 的问题

尝试使用 Armadillo 库运行示例时出现 Xcode C++ 链接器错误

Eigen的速度为啥这么快

在 Linux 中快速制作 Armadillo C++ 库 - Ubuntu

XCode 4、Armadillo 和 XCode 标准库

Svd Armadillo 给出一些 NaN 值