2014-03-27 70 views
5

上上代i7處理器與標誌使用GCC 4.8.1:這個編譯器消息(矢量化,GCC)是什麼意思?

-O3 -ftree-vectorizer-verbose=5 -fomit-frame-pointer -DNDEBUG -fno-operator-names -msse2 -mfpmath=sse -march=native -funsafe-math-optimizations -ffast-math 

(例如,所有的「哼!)

我得到:

.cpp:31:note: not vectorized: relevant stmt not supported: D.56044_367 = __builtin_logf (D.55726_232); 

爲線:

for(i=0;i<N5;i++) d3[i]=std::log(d2[i]); 

這個'錯誤'信息是什麼意思? (d3和d2是花車的向量)。矢量化日誌功能是無望的嗎?

回答

4

vectorize意味着將多個數據項打包到一個寄存器中並使用vector(又名packed)指令並行操作它們。許多浮點操作都有vector表單,LOG不是其中之一。下面是單精度包裝形式向量指令的列表,從http://docs.oracle.com/cd/E19253-01/817-5477/epmoa/index.html

  • ADDPS附加壓縮單精度浮點值
  • DIVPS鴻溝壓縮單精度浮點值
  • MAXPS返回最大壓縮單精度浮點值
  • MINPS返回最小壓縮單精度值錫永浮點值
  • 次MULPS乘法壓縮單精度浮點值壓縮單精度浮點的
  • RCPPS計算倒數值平方根的打包的
  • RSQRTPS計算倒數單精度浮點值
  • SQRTPS計算打包單精度浮點值的平方根
  • 個SUBPS減壓縮單精度浮點值
+0

快速的問題:你會知道,如果國際刑事法院將能夠向量化日誌()? – user189035

+0

可能不是,但是這裏有一些開源代碼可以幫助你:http://code.google.com/p/fastapprox/ – amdn

+1

非常感謝,陛下(希望我可以更多)! – user189035

1

這意味着編譯器沒有SIMD(SSE)指令來評估日誌。

SIMD指令允許評估幾個操作的價格可以這麼說。 日誌及其親屬通常沒有匹配的硬件指令。

相關問題