[英]What does this compiler message (vectorization, GCC) means?
在带有标志的上一代i7处理器上使用GCC 4.8.1:
-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是浮点数的向量)。 向量化对数函数是否没有希望?
向vectorize
意味着将多个数据项打包到一个寄存器中,并使用vector
(又称packed
)指令对其并行进行操作。 许多浮点运算具有vector
形式, LOG
不是其中之一。 这是来自http://docs.oracle.com/cd/E19253-01/817-5477/epmoa/index.html的单精度打包形式矢量指令列表。
这意味着编译器没有SIMD(SSE)指令来评估日志。
SIMD指令允许以一个价格来评估多个操作。 Log及其亲属通常没有匹配的硬件说明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.