网站上做旅游卖家要学什么条件,买链接官网,网站静态模板下载,湛江网站设计公司一、问题提出
假如使用nvcc对cuda代码进行编译时#xff0c;如果代码中使用了Eigen库#xff08;头文件#xff09;#xff0c;编译时可能会显示很多warning information#xff0c;如下图红框中所示#xff1a; 这些warning信息虽然不会影响代码的实际运行#xff0c;…一、问题提出
假如使用nvcc对cuda代码进行编译时如果代码中使用了Eigen库头文件编译时可能会显示很多warning information如下图红框中所示 这些warning信息虽然不会影响代码的实际运行但会令编译提示很乱不便于按照编译器给出的信息进行debug。 本文将介绍如何在cuda代码中去除eigen库相关的、我们并不关心的warning信息。
二、解决方法
0. 基本思路
其实按照上图中的提示黄框 Remark: The warnings can be suppressed with -diag-suppress warning-number 可以看出只要给nvcc编译器添加参数-diag-suppress warning-number即可消除这些warning信息。 其中
-diag-suppress 是nvcc编译器的一个flag参数用于Suppress specified diagnostic message(s) generated by the CUDA frontend compiler (note: does not affect diagnostics generated by the host compiler/preprocessor)。warning-number是warning信息的编号例如上图中warning信息的编号就是20012和20014上图中绿框中的编号注意是20012和20014不是20012-D和20014-D。
下面给出三种方法都可以达到我们的目的。
方法一在cmake代码中
在cmake 文件中添加如下语句
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-diag-suppress20012,20014)或者
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -diag-suppress20012,20014)方法二、在执行cmake时
我们也可以在build目录下执行cmake ..生成make文件时通过以下命令设置nvcc的flag
# 在build目录下
cmake -DCMAKE_CUDA_FLAGS-diag-suppress20012,20014 ..方法三、在CUDA代码中
其实eigen库官方也知道这个问题的存在也提供了相应的头文件用于disable stupid warnings我们也可以在包含eigen库头文件前的代码中手动加入以下代码用于消除eiegn的warning信息。 但我在使用下面代码时只能消除20012号信息对20014不管用不知道为什么 : ( ...
#pragma nv_diag_suppress 20012
#pragma nv_diag_suppress 20014
#include eigen/Eigen/Core
#include eigen3/Eigen/Dense
...三、参考
NVIDIA CUDA Compiler Driver NVCC-4.2.8.14. --diag-suppressDisable NVCC warnings due to Eigen library codepassing flags to nvcc via CMakehttps://gitlab.com/libeigen/eigen/-/blob/master/Eigen/src/Core/util/DisableStupidWarnings.h#L76-96