发布
社区首页 >问答首页 >使用CMakes CHECK_CXX_COMPILER_FLAG与nvcc/cuda

使用CMakes CHECK_CXX_COMPILER_FLAG与nvcc/cuda
EN

Stack Overflow用户
提问于 2015-09-21 15:09:57
回答 2查看 1K关注 0票数 2

我正试图用由MakeFiles生成的CUDA编译一些尾数。

我想使用CHECK_CXX_COMPILER_FLAG或类似的东西来检查使用的nvcc版本是否支持给定的标志。我的例子是“

当然,我可以比较CUDA版本,但是我发现编译标志检查更安全。

是否有类似于CMake命令的CHECK_CXX_COMPILER_FLAG调用nvcc编译器而不是主机编译器?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-21 16:45:08

我不知道检查特定nvcc标志的官方方法,但您可以自己编写宏,而只需:

CheckNvccCompilerFlag.cmake

代码语言:javascript
代码运行次数:0
复制
MACRO(CHECK_NVCC_COMPILER_FLAG _FLAG _RESULT)
    EXECUTE_PROCESS(COMMAND ${CUDA_NVCC_EXECUTABLE} "${_FLAG}" ERROR_VARIABLE NVCC_OUT)
    IF("${NVCC_OUT}" MATCHES "Unknown option")
        SET(${_RESULT} 0)
    ELSE()
        SET(${_RESULT} 1)
    ENDIF()
ENDMACRO()

--演示使用:

CMakeList.txt

代码语言:javascript
代码运行次数:0
复制
PROJECT(cuda_flag_test)
FIND_PACKAGE(CUDA)
INCLUDE(CheckNvccCompilerFlag.cmake)
CHECK_NVCC_COMPILER_FLAG("--asdf" HAS_NVCC_ASDF)
IF(HAS_NVCC_ASDF)
    MESSAGE(STATUS "asdf is supported")
ENDIF()

CHECK_NVCC_COMPILER_FLAG("--relaxed-constexpr" HAS_NVCC_RELAXED_CONSTEXPR)
IF(HAS_NVCC_RELAXED_CONSTEXPR)
    MESSAGE(STATUS "relaxed-constexpr is supported")
ENDIF()

输出

代码语言:javascript
代码运行次数:0
复制
...

-- Found CUDA: /opt/cuda (found version "7.0") 
-- relaxed-constexpr is supported

...

(就我个人而言,我会依赖CUDA_VERSION。)

票数 1
EN

Stack Overflow用户

发布于 2019-02-21 15:42:49

简短的回答:是的,有。NVCC将定义一个宏:__CUDACC_RELAXED_CONSTEXPR__

代码语言:javascript
代码运行次数:0
复制
#ifdef __CUDACC_RELAXED_CONSTEXPR__

  do somthing

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

https://stackoverflow.com/questions/32698678

复制
相关文章

相似问题

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