2012-02-13 8 views
5

Estoy escribiendo un código científico en c que requiere numerosos productos tensores y operaciones de tensores de orden superior, como p. contracción, producto de kronecker, etc. Estoy planeando implementar esto yo mismo usando algoritmos eficientes como en la literatura y empleando una buena biblioteca BLAS. Hice algunos buscando y realmente no he encontrado nada para c (mucho para C++, python, etc.). ¿Me estoy perdiendo algo o esto realmente no se ha implementado bien en c?Biblioteca de multiplicación de tensiones

Gracias.

Respuesta

2

Quizás podría investigar tensor extensions al GSL - Biblioteca Científica GNU.

+0

No es exactamente lo que estoy buscando, pero es el mejor que he encontrado. Gracias. – Mosby

+0

He estado trabajando en una clase Array genérica que se puede usar para operaciones de tensor. Puede encontrarlo [aquí] (https://code.google.com/p/cpp-array/). – aaragon

+0

@Mosby Tengo curiosidad por saber por qué aceptaste una respuesta que no era exactamente lo que estás buscando. Desalienta las respuestas futuras si acepta una respuesta. – Jeff

3

Hay muchos usos diferentes de los tensores en la informática científica, por lo que esta pregunta es difícil de responder sin más detalles.

Hay una respuesta relacionada en SciComp que menciona Eigen, Armadillo, deal.II, libtensor y libdynd.

Si está interesado en contraer grandes tensores en paralelo, mire el Cyclops Tensor Framework (CTF), que es el back-end para múltiples códigos de química cuántica. Si desea hacer una gran cantidad de contracciones pequeñas, es posible que CTF no lo ayude.

Otras bibliotecas de tensores de código abierto incluyen libtensor y TiledArray, que también se utilizan en química cuántica.

El proyecto MADNESS tiene a tensor class que podría satisfacer sus necesidades si las dimensiones pequeñas son de su interés.

itensor es otra biblioteca de tensores, que tiene como objetivo admitir cálculos DMRG.

FTensor es una biblioteca de tensores de C++ orientada a la relatividad general.

Debido a que las operaciones de tensores son importantes para el aprendizaje automático, compañías como Facebook y Google han lanzado bibliotecas de tensores como THPP y TensorFlow, respectivamente.

Existe un proyecto muy antiguo llamado POOMA que podría ser support small tensors para satisfacer sus necesidades, pero este proyecto ya no está activo y no debería esperar soporte alguno.

Cuando falla todo lo demás, consulte Wikipedia o Google (aproximadamente la mitad de la información aquí se identificó al buscar "biblioteca de tensores" en Google, aunque tengo familiaridad histórica con la mayor parte).