gpt4 book ai didi

c++ - 向量化短浮点转换?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:11:31 24 4
gpt4 key购买 nike

我想了解为什么 Visual Studio 2012 (x64) 不想将从 shortfloat 的转换向量化。有人有理由或解决办法吗?

//unsigned short* __restrict A,B,C,D    
for (int j = 0; j < H*W;j++)
{
float Gs = D[j]-B[j];
float Gc = A[j]-C[j];
in[j]=atan2f(Gs,Gc);
}

info C5002: loop not vectorized due to reason '1101'

决议

使用 shorts 而不是向量化的运行时间约为 800ms

转换为所有整数和自动矢量化的运行时间约为 140ms (!!!)

最佳答案

来自 this page ,看来您的“循环包含不可向量化的转换操作(可能是隐式的)”。您是否尝试过先转换为与 float 宽度相同的类型(例如 int)?

更具体的原因,参见here .显然,在 SSE 中没有直接的方法将由短 vector 组成的 SSE 寄存器转换为浮点 vector ,但是有一条指令可以将 32 位整数转换为 float 。

关于c++ - 向量化短浮点转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15562578/

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