【发布时间】:2013-03-22 04:08:08
【问题描述】:
我试图理解为什么 Visual Studio 2012 (x64) 不想将转换从 short 向量化到 float。有人有理由或解决办法吗?
//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);
}
信息 C5002:由于原因“1101”,循环未矢量化
分辨率
使用短裤而不是矢量化的运行时间大约是800ms
运行时转换为所有整数和自动矢量化大约是140ms (!!!)
【问题讨论】:
-
一种方法是使用SSE4.1转换
short->int。然后使用int->float转换内在函数。
标签: c++ visual-studio-2012 vectorization