gpt4 book ai didi

cuda - 确定 nvcc 需要哪些 gencode (compute_, arch_) 值 - 在 CMake 中

转载 作者:行者123 更新时间:2023-12-04 17:08:16 27 4
gpt4 key购买 nike

我使用 CMake 作为我的代码的构建系统,其中涉及 CUDA。我正在考虑自动化决定哪个任务 compute_XXarch_XX我需要传递给我的 nvcc 以便为我当前机器上的 GPU 进行编译。

  • 有没有办法做到这一点:
  • 使用 NVIDIA GPU 部署套件?
  • 没有 NVIDIA GPU 部署套件?
  • CMake的FindCUDA帮助您确定这些开关的值?
  • 最佳答案

    我的策略是编译和运行一个 bash 脚本来探测卡并返回 cmake 的 gencode。灵感来自University of Chicago's SLURM .要处理错误或多个 gpu 或其他情况,请根据需要进行修改。

    在您的项目文件夹中创建一个文件 cudaComputeVersion.bash 并确保它可以从 shell 执行。在这个文件中放入:

    #!/bin/bash

    # create a 'here document' that is code we compile and use to probe the card
    cat << EOF > /tmp/cudaComputeVersion.cu
    #include <stdio.h>
    int main()
    {
    cudaDeviceProp prop;
    cudaGetDeviceProperties(&prop,0);
    int v = prop.major * 10 + prop.minor;
    printf("-gencode arch=compute_%d,code=sm_%d\n",v,v);
    }
    EOF

    # probe the card and cleanup
    /usr/local/cuda/bin/nvcc /tmp/cudaComputeVersion.cu -o /tmp/cudaComputeVersion
    /tmp/cudaComputeVersion
    rm /tmp/cudaComputeVersion.cu
    rm /tmp/cudaComputeVersion

    在你的 CMakeLists.txt 中输入:
    # at cmake-build-time, probe the card and set a cmake variable
    execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/cudaComputeVersion.bash OUTPUT_VARIABLE GENCODE)
    # at project-compile-time, include the gencode into the compile options
    set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS}; "${GENCODE}")

    # this makes CMake all chatty and allows you to see that GENCODE was set correctly
    set(CMAKE_VERBOSE_MAKEFILE TRUE)

    干杯

    关于cuda - 确定 nvcc 需要哪些 gencode (compute_, arch_) 值 - 在 CMake 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35485087/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com