我试图理解为什么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);
}
info C5002:由于原因'1101'
,循环未向量化
解决
使用短片而非矢量化的运行时约为800ms
运行时转换为所有整数和自动向量化约为140ms
(!!!)