在 Fortran 90 中预计算数学表达式

计算科学 优化 正则
2021-12-10 17:41:36

是否有一些标志可以让 Fortran 编译器在编译之前预先计算数学表达式?我必须编写包含许多小型 4x4 矩阵乘法的表达式。问题是,这些小型 4x4 矩阵的大多数元素都是零,因此就性能而言,最好手动实际执行乘法并写下结果表达式,这样可以消除不必要的乘以 0。这样做是错误的很容易,我认为像 -O3 这样的编译器优化会解决这个问题,但他们没有。我读到了像 symPy 和 matlab 这样的工具,它们可以让你编写表达式、操作和简化它们并为 Fortran 或 C 生成代码,但是如果有一些编译器标志会更好。

1个回答

我不相信 Fortran 中有为此的编译器标志,但是有用于稀疏矩阵的 Fortran 库可以为您提供一些优化。这篇StackOverflow 帖子讨论了与它们一起使用的 BLAS 库,尽管用户似乎遇到了一些困难。