首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake如何验证循环是否已自动矢量化

CMake如何验证循环是否已自动矢量化
EN

Stack Overflow用户
提问于 2021-03-10 18:09:32
回答 1查看 132关注 0票数 1

所有支持矢量化的C++编译器都允许发出一些报告(*)来验证循环是否被矢量化,每个都在矢量化报告中有自己的编译标志和格式。

我想在我的CMake构建中加入一个自动检查这一点的步骤,如果它没有自动矢量化,构建就会失败。

如何使用CMake完成此操作?

提前感谢

(*) MSVC https://docs.microsoft.com/en-us/cpp/build/reference/qvec-report-auto-vectorizer-reporting-level?view=msvc-160

gcc https://gcc.gnu.org/onlinedocs/gcc/Developer-Options.html

clang https://llvm.org/docs/Vectorizers.html#diagnostics

EN

回答 1

Stack Overflow用户

发布于 2021-03-10 18:29:23

我想在我的CMake构建中加入一个步骤,它会自动检查这一点,如果没有自动矢量化,构建就会失败。

我如何在CMake中做到这一点?

按步骤应用dynamic programming

  1. 创建了一个算法,可以检测程序是否被“自动矢量化”。你可以使用编译器产生的一些输出和特殊的选项,为什么不呢,你也可以分解代码,找到“
    • ”,检查一些指令或syntax.

然后,

  1. 编写一个实现该算法的可移植程序,最好是在某些可移植的language.
  2. Add中作为自定义目标,以进行如下所示的检查:

代码语言:javascript
复制
add_executable(final_exe sources.c...)
 
add_exececutable(check_if_vectorized sources.c...) # if compiled, choose your own language
add_custom_target(check_if_final_exe_is_vectorized
     COMMENT "Check if final_exe was vectorized"
     COMMAND $<TARGET_FILE:check_if_vectorized> $<TARGET_FILE:final_exe>
     DEPENDS $<TARGET_FILE:check_if_vectorized> $<TARGET_FILE:final_exe>
)

您还可以使用add_test添加检查,并让它像测试一样运行。

有没有开箱即用的东西?

不是的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66562539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档