张量乘法库

时间:2012-02-13 18:35:09

标签: c

我正在用c编写一个科学代码,它需要许多张量积和高阶张量运算,例如:收缩,kronecker产品等我计划使用有效的算法自己实现这一点,如文献和使用一个良好的BLAS库。我做了一些看,并没有真正找到任何c(大量的c ++,python等)。我是否遗漏了某些内容,或者说这在c中实施得不是很好?

感谢。

3 个答案:

答案 0 :(得分:3)

在科学计算中有许多不同的张量用法,所以如果没有更多细节,这个问题很难回答。

SciComp上有一个相关的答案提到了Eigen,Armadillo,deal.II,libtensor和libdynd。

如果您有兴趣并行收缩大张量,请查看Cyclops Tensor Framework(CTF),它是多量子化学代码的后端。如果你想做大量的小收缩,CTF可能不会帮助你。

其他开源张量库包括libtensorTiledArray,它们也用于量子化学。

MADNESS项目a tensor class可能会满足您的需求,如果感兴趣的是小尺寸。

itensor是另一个张量库,旨在支持DMRG计算。

FTensor是面向广义相对论的C ++张量库。

由于张量操作对于机器学习很重要,Facebook和Google等公司分别发布了THPPTensorFlow等张量库。

有一个名为POOMA的非常古老的项目可能会support small tensors满足您的需求,但此项目已不再有效,您应该不会得到任何支持。

当其他所有方法都失败时,请参阅Wikipedia或Google(此处约有一半的信息是通过搜索"张量库"在Google上识别出来的,尽管我对大部分内容都有历史熟悉程度)

答案 1 :(得分:2)

也许您可以调查tensor extensionsGSL - GNU科学图书馆。

答案 2 :(得分:0)

你也可以使用元素 http://libelemental.org/about/

即使它是用C ++编写的,它也有一个C接口: “C ++ 11 API是迄今为止最完整的,但很大一部分库也暴露给C和Python接口。”

另外,请在github页面上的开发分支上使用最新版本: https://github.com/elemental/Elemental/

我遇到了一些使用最新版本解决的兼容性问题!