簡體   English   中英

向量化short到float轉換?

[英]Vectorize short to float conversion?

我試圖理解為什么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

運行時轉換為所有int並自動向量化約為140ms (!!!)

此頁面上 ,您的“循環包含不可向量化的轉換操作(可能是隱式的)”。 您是否嘗試過先將其轉換為與float寬度相同的類型(例如int )?

出於更具體的原因,請參見此處 顯然,SSE中沒有直接方法將包含短褲向量的SSE寄存器轉換為浮點向量,但是有一條指令可將32位整數轉換為浮點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM