在Fortran中执行张量积的有效方法

时间:2016-10-18 09:49:49

标签: arrays fortran

我需要在Fortran的某些大型数组上执行一些张量积和收缩。有时它们是向量或矩阵,有时涉及的一些对象是3阵列或4阵列。

当然,使用一些嵌套循环编写实现此功能的子程序非常容易,而这正是我所做的。但是对于非常大的数组,我必须多次调用这个子例程及其所有循环,我只是想知道在Fortran中是否有一些优化函数或子例程可以从中受益。

1 个答案:

答案 0 :(得分:3)

上次我看(大约一年前)我在Fortran找不到高性能的通用张量产品库。我认为其中一个原因可能是Fortran调整数组大小的繁琐方法,这在处理张量时是一个不变的要求。

如果您只需要乘法,那么您可以使用自己的代码。但是,如果您需要高性能或更一般的操作,我强烈建议您编写一个C接口并使用其中一个优秀的C ++库,这些库可能已针对您的应用类型进行了优化:

物理: http://itensor.org/

机器学习: https://github.com/tensorflow/tensorflow

这些仅是示例。有关更完整的列表,请参阅: Tensor multiplication library