我試圖理解爲什麼的Visual Studio 2012(64)不希望矢量從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'轉換內在。 – Mysticial 2013-03-22 04:21:15