当前位置:  开发笔记 > 编程语言 > 正文

线性代数库适用于Android

如何解决《线性代数库适用于Android》经验,为你挑选了1个好方法。

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



1> Jianyu Huang..:

传统的线性代数库是分层实现的.基本线性代数子程序(BLAS)位于底层.线性代数包(LAPACK)建立在BLAS之上.这两个层库的接口在20世纪90年代被标准化,硬件供应商通常会为其架构提供各种定制的实现.LAPACK提供您提到的线性代数库操作(SVD,QR,LU,最小二乘,反转等).在最近几年,出现了一些更加用户友好的线性代数库(例如Armadillo,Eigen),它实际上为传统的BLAS和LAPACK库提供了一些包装器.

JBLAS只是传统BLAS的java实现.JAMA也是一个用Java实现的类似LAPACK的库.这两个库实际上并不是Android的目标.但由于Android编程通常涉及Java,我们可以让它们在Android上运行.但是,我们不能指望这些实现的性能.我的论点是性能是一个关键因素,因为您正在调用库而不是自己编写库,而高性能通常会提高Android操作系统移动平台的低能耗.

虽然上述线性代数库通常以CPU为目标(例如x86架构,操作系统:Linux/Windows/MacOS),但专家们现在正在进步,以便在移动平台(例如ARM,OS:Android)上提供完整的堆栈支持.

我只是注意到Qualcomm刚刚发布了自己的BLAS类库Snapdragon Math Library,它可以在Qualcomm定制的ARM架构上运行.通过链接到它的顶级LAPACK,可以在Android上以高性能实现这些线性代数运算(SVD,QR,LU,最小二乘,反向等).

最近,随着深度学习的快速发展,许多神经网络包如NNPACK变得流行.在引擎盖下,它们是线性代数库,具有神经网络中不同层的基元的低级高性能实现.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有