ios - 使用 Accelerate 框架 32 位与 64 位在 swift 中进行矩阵乘法

标签 ios swift 32bit-64bit accelerate-framework

我正在尝试使用 Accelerate 框架在 Swift 中进行矩阵乘法。使用了 vDSP_mmulD。这在 iPhone6、6 plus、iPad Air 模拟器(所有 64 位架构)中完美运行,但不适用于任何 32 位架构设备。 它看起来像 vDSP_mmulD 不被 32 位架构识别并且程序不构建。显示的错误消息是“使用未解析的标识符‘vDSP_mmulD’”还有其他人看到过这个错误吗?请让我知道你的想法。我正在使用 Xcode 6.1。 谢谢。

最佳答案

简单的解决方案:使用 cblas_dgemm相反(也是 Accelerate 的一部分)。它至少和vDSP_mmulD一样快在所有系统上,在某些系统上速度更快(在 iOS 8 和 Yosemite 中,vDSP_mmulD 实际上只是对 cblas_dgemm 的包装),它实际上应该在这里工作。

我怀疑您的 32 位模拟器构建失败;在i386上,vDSP_mmulD其实是一个围绕mmulD的宏,而Swift并不完全支持C语言宏。

注意:我怀疑您可能正在使用 3x3 或 4x4 矩阵,在这种情况下,Accelerate 例程都不是您真正想要的(它们针对更大的矩阵);你想要像 <simd/matrix.h> 中定义的那样的内联向量序列.不幸的是,Swift 不支持 SIMD 向量,所以这不是一个选项。此时你最好的选择可能是简单地写出元素计算,并报告一个错误以请求 Swift 支持 <simd/simd.h>接口(interface)。

关于ios - 使用 Accelerate 框架 32 位与 64 位在 swift 中进行矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26519169/

相关文章:

ios - Swift、约束、UILabel、 anchor 右

ios - cocos2d中是否建议不要导入父类或兄弟类的头文件?

iOS - 隐藏在键盘下的 UIAlertController

swift - 我的代码如何知道 Firebase 何时完成检索数据?

compiler-construction - 为什么制作 64 位版本的软件这么难?

iphone - UIView 绘制时的背景色

ios - Swift - 设置位置

ios - 直接在应用程序中呈现下载文件的预览

windows-7 - 在 64 位 Windows 上安装 32 位或 64 位应用程序有什么区别?

python - 在 64 位 linux 机器上运行 32 位 Python 脚本以使用 32 位客户端连接到 oracle DB