【问题标题】:How can I run nvcc in cmake's try_run?如何在 cmake 的 try_run 中运行 nvcc?
【发布时间】:2013-03-26 08:53:50
【问题描述】:

我尝试通过编译和运行简单测试在cmake阶段设置nvcc的计算能力标志:

#include <cuda.h>
#include <cuda_runtime.h>
#include <stdio.h>

int main(int argc, char **argv){
    cudaDeviceProp dP;
    if(cudaSuccess != cudaGetDeviceProperties(&dP, 0)) return 0;
    printf("-arch=sm_%d%d\n", dP.major, dP.minor);
    return 0;
}

我阅读了here 怎么做,但是try_run 让我只能通过 gcc 编译目标。如果我添加cuda_compile,我也不会得到二进制文件。

如何在cmake 阶段编译.cu-file 并由execute_process 运行以设置正确的编译标志?

【问题讨论】:

    标签: cuda cmake nvcc


    【解决方案1】:

    好吧,我不知道如何正确地做,所以我做了简单的。 在我的CUDA_FOUND 部分的开头我添加:

    if(CUDA_FOUND)
        set(TEST ${CMAKE_BINARY_DIR}/test)
        set(TESTSRC ${CMAKE_CURRENT_SOURCE_DIR}/test/capability.cu)
        execute_process(COMMAND nvcc -lcuda ${TESTSRC} -o ${TEST})
        execute_process(COMMAND ${TEST} OUTPUT_VARIABLE CUDA_ARCH)
        message("Cuda architecture:  ${CUDA_ARCH}")
        list(APPEND CUDA_NVCC_FLAGS --use_fast_math ${CUDA_ARCH})
    

    这只是编译我的测试源并在填充CUDA_ARCH 变量中运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 2021-09-09
      • 2019-04-14
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      相关资源
      最近更新 更多