首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android线性代数库

Android线性代数库
EN

Stack Overflow用户
提问于 2010-05-11 12:05:23
回答 3查看 6.7K关注 0票数 10

有没有人知道在Android中什么是计算线性代数的好库(SVD,QR,LU,最小二乘,逆等)?

EN

回答 3

Stack Overflow用户

发布于 2015-12-19 05:18:21

传统的线性代数库是分层实现的。Basic Linear Algebra Subprogram (BLAS)位于底层。Linear Algebra Package (LAPACK)是建立在BLAS之上的。这两层库的接口早在20世纪90年代就已经标准化了,硬件供应商通常会为他们的体系结构提供各种定制的实现。LAPACK提供了您提到的线性代数库操作(SVD、QR、LU、最小二乘、逆等)。最近几年,出现了一些用户友好的线性代数库(例如ArmadilloEigen),它们实际上为传统的BLAS和LAPACK库提供了一些包装器。

JBLAS只是传统BLAS的java实现。JAMA也是一个用Java语言实现的类LAPACK库。这两个库实际上并不是针对Android的。但是因为Android编程通常涉及Java,所以我们可以让它们在Android上工作。然而,我们不能期望这些实现的性能。我的论点是,性能是一个关键因素,因为您调用的是库,而不是自己编写的库,而且在使用Android操作系统的移动平台上,高性能通常会提高低能耗。

虽然上面的线性代数库通常针对的是中央处理器(例如,x86架构,操作系统: Linux/Windows/MacOS),但专家们现在正在取得进展,以便在移动平台(例如,ARM,操作系统: Android)上也提供全栈支持。

我刚刚注意到高通刚刚发布了自己的类似BLAS的库Snapdragon Math Library,它可以在高通定制的ARM架构上运行。通过顶层LAPACK的链接,这些线性代数运算(奇异值分解、QR、逻辑单元、最小二乘、求逆等)可以在安卓系统上高性能地实现。

最近,随着深度学习的快速发展,一些像NNPACK这样的神经网络软件包变得流行起来。在引擎盖下,它们是线性代数库,为神经网络中的不同层提供了低级的高性能原语实现。

票数 12
EN

Stack Overflow用户

发布于 2010-05-11 12:14:35

Jama运行得相当好。

票数 3
EN

Stack Overflow用户

发布于 2013-09-11 01:37:37

如果你使用C++和NDK,你可以使用Eigen。它可以使用SSE2/3/4、ARM霓虹灯和AltiVec指令集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2807998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档