cmake - CMake Cuda 架构标志
问题描述
有没有区别
CMAKE_CUDA_ARCHITECTURES="75"
和
CMAKE_CUDA_FLAGS="--generate-code=arch=compute_75,code=[compute_75,sm_75]"
?
我在“调试”模式下编译了一个代码,第一个版本出现分段错误,而另一个版本正常。
解决方案
这是两个 CMake 变量。第二个简单地附加到 CUDA 编译器行,通常是 nvcc。(我实际上不确定你的第二行是否有效...... gencode 语法总是让我对所有的逗号和等号感到困惑。)
我在“调试”模式下编译了一个代码,第一个版本出现分段错误,而另一个版本正常。
这就是为什么您需要跟踪实际执行的内容。所以 - 假设您使用 GNU make、runmake VERBOSE=yes
和 grep 构建实际编译行的输出。或者,如果它是 ninja 或某些 Windows 构建机制,请遵循 - 启用第一个选项,然后启用第二个选项。这样你就会知道你是否有相同的程序。
另一个值得一提的区别是CMAKE_CUDA_ARCHITECTURES仅与 CMake 3.18 一起使用,因此在今天(2021 年 5 月)大多数已安装的系统上,它不可用:-(
对于早期的 CMake 版本,您可以编写如下内容:
cuda_select_nvcc_arch_flags(ARCH_FLAGS 7.5)
list(APPEND CUDA_NVCC_FLAGS ${ARCH_FLAGS})
而不是你的第二行。
有关此旧机制的详细讨论,请参阅FindCUDA 模块文档。
推荐阅读
- google-api - DV360 API - 列出“Youtube 和合作伙伴”订单项?
- ios - iOS:在 Mapbox v10 中评估表达式
- excel - 基于引用单元格 excel/vba 中的列和行的动态范围
- django - 如何在异步函数中使用 django 信号?
- python - 当数字不同时,在折线图的顶部按比例绘制折线图
- check-mk - check_mk 自定义脚本
- npm - 原子中的 npm ERR
- macos - 在 PAW 中使用 href 响应作为变量
- node.js - MONGOOSE, "$" 运算符没有按预期工作 // elemMatch
- css - Safari 中的 SVG 填充动画