Go中是否有用于矩阵乘法的库?
我想在一些服务器节点上编写和部署一些可扩展的,快速的ML算法,但是我担心随着Matlab的成熟甚至是“numpy”的实现,我将会得到Go的速度和功能。较慢的“语言会快得多。
我宁愿不处理C / C ++,尽管他们是性能之王。
快速矩阵乘法和其他操作只是这项任务的必要条件,如果Go还不够成熟,那么......我需要决定我是否是启动它的人,或者只是使用它另一个工具。
谢谢
发布于 2019-05-27 09:08:26
如果您想拥有本机解决方案,可能需要使用skelterjohn / go.matrix。据我所知,这是纯粹的go中最先进的矩阵实现。
请记住,可以使用C / C ++库进行接口cgo
。因此,如果你有一个库但不想编写C / C ++,你可以为你需要的方法编写一些包装器,然后在go中编写其余的。例如,这是针对BLAS / LAPACK完成的。
更新:正如@Malcom指出的那样,提到的cgo包装器的开发似乎已经停滞不前。看看biogo。
发布于 2019-05-27 10:41:48
有一个非常好的矩阵包,是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/
https://stackoverflow.com/questions/-100001213
复制相似问题