2012-02-13 77 views
5

我正在写一个需要大量张量积和c阶高阶张量运算的科学代码,例如,收缩,kronecker产品等。我正计划使用文献中的高效算法自己实现这一点,并使用一个好的BLAS库。我做了一些查找,并没有真正找到任何c(大量的c + +,python等)。我是否错过了某些东西,或者在c中没有很好的实现?张量乘法库

谢谢。

回答

2

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

+0

不是我在找的东西,而是我找到的最好的东西。谢谢。 – Mosby 2012-02-14 16:56:40

+0

我一直在研究可用于张量操作的通用Array类。你可以在这里找到它(https://code.google.com/p/cpp-array/)。 – aaragon 2014-08-15 08:17:01

+0

@Mosby我很好奇你为什么接受一个不太符合你要求的答案。如果你接受答案,它会阻止未来的回应。 – Jeff 2015-12-15 14:36:27

3

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

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

如果您有兴趣并行收缩大张量,请查看Cyclops Tensor Framework(CTF),它是多个量子化学代码的后端。如果你想做大量的小型宫缩,周大福可能不会帮助你。其他开放张量库包括libtensorTiledArray,它们也用于量子化学。

MADNESS项目有a tensor class,可能会满足您的需求,如果小尺寸的利益。

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

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

因为张量操作对于机器学习很重要,所以像Facebook和Google这样的公司已经分别发布张量库,如THPPTensorFlow

有一个很旧的项目叫POOMA可能support small tensors满足您的需求,但这个项目不再活跃,你应该不会支持任何。

当所有其他问题都失败时,请参阅Wikipedia或谷歌(尽管我对其中的大部分内容都有历史的熟悉,但这里约有一半信息是通过在Google上搜索“张量库”来识别的)。