我做了一些表演实验。我想在ICC中启用/禁用自动矢量化。
我添加了-no-vec选项,但是否可以进行一些调试打印,如:
printf("%s", VEC_ENABLED ? "vectorized" : "not vectorized");是否有嵌入的ICC宏来执行此操作?
UPD:VEC_ENABLED只是一个例子,而不是真正的宏。在文档中没有这样的宏。
make文件的简单解决方法是:
# by default vectorization enabled
#OPTFLAGS= -DVEC_ENABLED=1
# vectorization disabled
OPTFLAGS= -no-vec -DVEC_ENABLED=0
CFLAGS=... $(OPTFLAGS)但仍然在寻找更好的方法。
UPD2:Anoop Madhusoodhanan Prabha -为了禁用自动和显式矢量化,必须使用两个标志:-no-vec -no-simd。
发布于 2017-09-06 18:29:18
我们目前没有公开任何宏,它反映了基于所传递的编译器选项的自动矢量化的状态。需要记住的一件重要的事情是,-no-vec只会禁用自动矢量化。如果您碰巧在您的程序中使用#实用化omp (OpenMP SIMD),那么这些循环的矢量化仍然会发生。若要完全禁用向量化(包括自动向量化和显式向量化),请使用编译器选项-no-vec -no-simd.
https://stackoverflow.com/questions/46068125
复制相似问题