2012-02-13 80 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上搜索「張量庫」來識別的)。