gpt4 book ai didi

c++ - 如何优化和提高这个涉及浮点运算的特定代码的效率?

转载 作者:行者123 更新时间:2023-11-28 07:48:53 25 4
gpt4 key购买 nike

我们知道浮点运算具有高延迟并且需要很多时钟周期来执行,这可能会导致流水线停滞!优化以下代码的不同方法是什么。

int main()

{

float fsum[50],a=10.45;

int isum[100],b=20;

for(int i=0;i<100;i++)
{

if(i<50)
{
fsum[i] = a*a;
}
isum[i] = b*b

}
return 0;
}

最佳答案

如果出于某种原因,您的编译器不能被信任展示基本的优化能力,并且它生成的代码运行时的性能低于您基于机器限制的预期(您正在测量性能,并且您知道这些限制,对吧?),然后你就可以开始手动优化了:

提升循环外的循环不变计算:

int main()
{
float fsum[50],a=10.45;
float aa = a * a;
int isum[100],b=20;
int bb = b * b;

for(int i=0;i<100;i++)
{
if(i<50) {
fsum[i] = aa;
}
isum[i] = bb;
}

return 0;
}

拆分循环,并设置边界以匹配封闭条件

int main()
{
float fsum[50],a=10.45;
float aa = a * a;
int isum[100],b=20;
int bb = b * b;

for(int i=0; i < 50; i++)
{
fsum[i] = aa;
}

for(int i=0;i<100;i++)
{
isum[i] = bb;
}

return 0;
}

现在,如果编译器无法设法展开向量化 一两个单级简单循环,那么这些就是您的问题。去看看他们。

关于c++ - 如何优化和提高这个涉及浮点运算的特定代码的效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14272245/

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