CMake如何验证循环是否已自动矢量化 支持向量化的所有C++编译器允许发出一些报告(*)来验证循环是否被矢量化,每个都有自己的编译标志和矢量化报告格式。
我可以启用相应的标志并直观地检查报告,以检查我希望自动向量化的循环是否确实自动向量化了 我想在我的CMake构建中加入一个步骤,自动检查这个步骤,如果没有自动矢量化,构建就会失败 我如何使用CMake实现这一点? 有没有人已经以某种方式解决了这个问题 提前谢谢 (*) MSVC 海湾合作委员会 叮当声 我想在我的CMake构建中加入一个步骤,自动检查这个步骤,如果没有自动矢量化,构建就会失败 我如何在CMake中做到这一点 分步骤申请:CMake如何验证循环是否已自动矢量化 支持向量化的所有C++编译器允许发出一些报告(*)来验证循环是否被矢量化,每个都有自己的编译标志和矢量化报告格式。,c++,cmake,auto-vectorization,C++,Cmake,Auto Vectorization,我可以启用相应的标志并直观地检查报告,以检查我希望自动向量化的循环是否确实自动向量化了 我想在我的CMake构建中加入一个步骤,自动检查这个步骤,如果没有自动矢量化,构建就会失败 我如何使用CMake实现这一点? 有没有人已经以某种方式解决了这个问题 提前谢谢 (*) MSVC 海湾合作委员会 叮当声 我想在我的CMake构建中加入一个步骤,自动检查这个步骤,如果没有自动矢量化,构建就会失败 我如何在CMake中做到这一点 分步骤申请: 创建一个可以检测程序是否“自动矢量化”的算法。 您可以使
- 您可以使用由编译器生成的带有特殊选项的输出,为什么不呢
- 您还可以分解代码,找到“循环”,并检查一些指令或语法
add_可执行文件(final_exe sources.c.)
添加_execuctable(检查_if_vectoried sources.c..)#如果已编译,请选择您自己的语言
添加自定义目标(检查最终执行是否矢量化
注释“检查最终_exe是否已矢量化”
命令$$
美元$
)
您还可以使用add_test
添加检查,并使其像测试一样运行
有现成的吗
没有。?上一次cmake中的东西是什么时候开箱即用的?也许您需要添加一些自定义命令。这很公平。我将完成这个问题。我如何将编译(包含矢量化报告)的输出通过管道传输到自定义命令?编写一个程序,获取程序的输出并将其传递给自定义程序。通常,这是shell的工作,您可以执行
sh-c'command1 | command2
,因此如果可用命令sh-c'$@“| command2'-$$$
,请使用shell。由于set-opipefail
的缺陷,我会在一个程序和另一个程序之间使用一个临时文件。
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>
)