Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMake如何验证循环是否已自动矢量化 支持向量化的所有C++编译器允许发出一些报告(*)来验证循环是否被矢量化,每个都有自己的编译标志和矢量化报告格式。_C++_Cmake_Auto Vectorization - Fatal编程技术网

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

CMake如何验证循环是否已自动矢量化 支持向量化的所有C++编译器允许发出一些报告(*)来验证循环是否被矢量化,每个都有自己的编译标志和矢量化报告格式。,c++,cmake,auto-vectorization,C++,Cmake,Auto Vectorization,我可以启用相应的标志并直观地检查报告,以检查我希望自动向量化的循环是否确实自动向量化了 我想在我的CMake构建中加入一个步骤,自动检查这个步骤,如果没有自动矢量化,构建就会失败 我如何使用CMake实现这一点? 有没有人已经以某种方式解决了这个问题 提前谢谢 (*) MSVC 海湾合作委员会 叮当声 我想在我的CMake构建中加入一个步骤,自动检查这个步骤,如果没有自动矢量化,构建就会失败 我如何在CMake中做到这一点 分步骤申请: 创建一个可以检测程序是否“自动矢量化”的算法。 您可以使

我可以启用相应的标志并直观地检查报告,以检查我希望自动向量化的循环是否确实自动向量化了

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

我如何使用CMake实现这一点? 有没有人已经以某种方式解决了这个问题

提前谢谢

(*) MSVC

海湾合作委员会

叮当声

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

我如何在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>
    )