首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【DGL系列】编译dgl源码时指定多个sm架构

【DGL系列】编译dgl源码时指定多个sm架构

原创
作者头像
小锋学长生活大爆炸
发布2025-10-23 22:02:34
发布2025-10-23 22:02:34
850
举报
文章被收录于专栏:图神经网络图神经网络

默认情况只安装 最大 SM 架构

DGL 的 cmake/modules/CUDA.cmake 里写死了一个选择逻辑:

  • 如果不显式指定 CUDA_ARCH_BIN,它会 默认取检测到的最高架构(这里就是 86);
  • 低版本(75)直接丢掉,不生成内核。

输出类似于: -- Running GPU architecture autodetection -- Found GPU arch 8.6 8.6 8.6 8.6 8.6 8.6 7.5 7.5 -- CUDA_NVCC_FLAGS: -Xcompiler;-fopenmp,-Wall,-fPIC,,-O0,-g3,-ggdb,-DUSE_LIBXSMM,-DDGL_CPU_LLC_SIZE=40000000,-D__BLAS=0,-DUSE_EPOLL,-DIDXTYPEWIDTH=64,-DREALTYPEWIDTH=32;--expt-relaxed-constexpr;-gencode;arch=compute_86,code=sm_86;-gencode;arch=compute_86,code=compute_86;--expt-extended-lambda;-Wno-deprecated-declarations;-std=c++17

因此,如果要让 多个SM架构(如75 和 86) 同时编进去,必须使用特定的参数

代码语言:javascript
复制
cmake -DUSE_CUDA=ON \
  -DCUDA_ARCH_NAME=Manual \
  -DCUDA_ARCH_BIN="75;86" \
  -DCUDA_ARCH_PTX="75;86" \

输出类似于: <没有autodetection> -- CMAKE_CXX_FLAGS: -fopenmp -Wall -fPIC -O0 -g3 -ggdb -DUSE_LIBXSMM -DDGL_CPU_LLC_SIZE=40000000 -D__BLAS=0 -DUSE_EPOLL -DIDXTYPEWIDTH=64 -DREALTYPEWIDTH=32 -- CUDA_NVCC_FLAGS: -Xcompiler;-fopenmp,-Wall,-fPIC,,-O0,-g3,-ggdb,-DUSE_LIBXSMM,-DDGL_CPU_LLC_SIZE=40000000,-D__BLAS=0,-DUSE_EPOLL,-DIDXTYPEWIDTH=64,-DREALTYPEWIDTH=32;--expt-relaxed-constexpr;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_86,code=sm_86;-gencode;arch=compute_75,code=compute_75;-gencode;arch=compute_86,code=compute_86;--expt-extended-lambda;-Wno-deprecated-declarations;-std=c++17

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档