gpt4 book ai didi

c - 使用没有内在函数的 gcc/clang 向量化残差平方和

转载 作者:太空宇宙 更新时间:2023-11-04 00:25:03 25 4
gpt4 key购买 nike

我试图说服 gcc (4.8.1) 或 clang (3.4) 对以下内容进行矢量化ivy 桥处理器上的代码:

#include "stdlib.h"
#include "math.h"

float sumsqr(float *v, float mean, size_t n) {
float ret = 0;
for(size_t i = 0; i < n; i++) {
ret += pow((v[i] - mean), 2);
}
return ret;
}

编译失败

$ gcc -std=c99 -O3 -march=native -mtune=native -ffast-math -S foo.c

有没有办法在不使用内部函数或修改 gcc 调用的情况下修改代码以获得矢量化代码?

最佳答案

pow 函数非常通用,编译器可能看不到它的作用(记住它可以计算类似 pow(1.8, -3.19) 的东西. 因此,仅使用内置操作而不进行函数调用可能会有所帮助:

for(size_t i = 0; i < n; i++)
{
float const x = v[i] - mean;
ret += x * x;
}

关于c - 使用没有内在函数的 gcc/clang 向量化残差平方和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22037044/

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