我试图理解为什么 Visual Studio 2012 (x64) 不想矢量化从 ashort
到 a的转换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
(!!!)