gpt4 book ai didi

optimization - 优化零乘法

转载 作者:行者123 更新时间:2023-12-03 16:25:08 25 4
gpt4 key购买 nike

我在一些 Fortran 代码中有以下行:

acc = acc + DRSite_t(u, k, s) * Exp(-(max(0.0_dp, t1 - real(s, dp)) / TAT(ds, k)))

其中 DRSite_tTAT 都是数组而不是函数。

显然,如果 DRSite_t 值为零,则不需要计算乘法运算符右侧的复杂计算。

现代编译器是否有可能接受并优化,或者我应该将它包装在 if block 中?

或者这是我应该吸它看看的情况?如果这有什么不同,我正在使用 gfortran,但听听不同的编译器是否会以不同的方式处理事情会很有趣。

最佳答案

您的意思是,如果首先计算 DRSite_t(u, k, s),检查它是否等于 0,然后可能会跳过表达式的其他部分?

我很确定编译器不会那样做。在太多情况下,这会导致很多减速而不是加速。分支真的很昂贵。

我什至认为,如果您手动执行此操作,它会更慢,除非 0 经常出现。但是编译器没有理由假设 0 经常出现。

关于optimization - 优化零乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42001626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com