去矩阵库

时间:2013-05-14 05:52:29

标签: go matrix

Go中是否有用于矩阵乘法的库?

我想在一些服务器节点上编写和部署一些可扩展的,快速的ML算法,但我担心随着Matlab的成熟甚至numpy,我用Go获得的速度和功率都会超过它“慢”语言的实现速度会快得多。

我宁愿不处理C / C ++,尽管他们是性能之王。

快速矩阵乘法和其他操作只是这项任务的必要条件,如果Go还不够成熟,那么......我需要决定我是不是要启动它,或者只是使用其他工具。

感谢

3 个答案:

答案 0 :(得分:6)

如果您想拥有原生解决方案,可以使用skelterjohn/go.matrix。据我所知,这是纯粹的go中最先进的矩阵实现。

除了其他事项外,它还包括parallel matrix multiplication here

请记住,可以使用cgo连接C / C ++库。因此,如果你有一个库但不想编写C / C ++,你可以为你需要的方法编写一些包装器,然后在go中编写其余的。例如,对BLAS/LAPACK进行了此操作。

更新:正如@Malcom指出的那样,提到的cgo包装器的开发似乎 已停滞不前。看看biogo

答案 1 :(得分:5)

有一个非常好的矩阵包,它是biogo的一部分。我在go.matrix看过gomat,截至2013年10月,我得出的结论是biogo更加成熟。 Biogo的矩阵蛋白质由BLAS支持。 Biogo使用cgo链接与FORTRAN BLAS库链接的C代码。我认为只支持Linux。

gomat不完整,开发活动停滞不前。 gomat的最后一次编辑是在一年多前。此外,gomat远不及go.matrix或biogo.matrix。

go.matrix是一个很好的包。它是一个成熟的,纯粹的矩阵库实现。它甚至支持并行矩阵运算。然而,biogo.matrix具有使用BLAS的额外好处。 BLAS几十年来一直经过战斗考验;我相信它的可靠性和性能(尽管没有对两种实现进行基准测试)。

以下是关于biogo的文档:

http://godoc.org/code.google.com/p/biogo

具体来说,相关的矩阵包是:

http://godoc.org/code.google.com/p/biogo.matrix

http://godoc.org/code.google.com/p/biogo.blas

安装时:

go get code.google.com/p/biogo/

答案 2 :(得分:0)

我知道这个问题已经很老了,但是我会留下一个答案,以防万一有人在搜寻快速go矩阵实现后来到这里。

经过一段时间的搜索和测试,我决定使用gonum中的软件包 mat ,主要是因为它与 gonum 中的其他数字软件包集成在一起对于我正在使用的安全的多方计算框架很有用。

它具有实数(float64)和复杂矩阵(乘法,点乘法,转置,求逆等)所需的大多数操作。