我需要在Fortran的某些大型数组上执行一些张量积和收缩。有时它们是向量或矩阵,有时涉及的一些对象是3阵列或4阵列。
当然,使用一些嵌套循环编写实现此功能的子程序非常容易,而这正是我所做的。但是对于非常大的数组,我必须多次调用这个子例程及其所有循环,我只是想知道在Fortran中是否有一些优化函数或子例程可以从中受益。
答案 0 :(得分:3)
上次我看(大约一年前)我在Fortran找不到高性能的通用张量产品库。我认为其中一个原因可能是Fortran调整数组大小的繁琐方法,这在处理张量时是一个不变的要求。
如果您只需要乘法,那么您可以使用自己的代码。但是,如果您需要高性能或更一般的操作,我强烈建议您编写一个C接口并使用其中一个优秀的C ++库,这些库可能已针对您的应用类型进行了优化:
机器学习: https://github.com/tensorflow/tensorflow
这些仅是示例。有关更完整的列表,请参阅: Tensor multiplication library