You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简单将多个CUDA源文件合并为单个fatbinary文件

实现方案

你可以通过单次nvcc调用直接完成多源文件到含PTX的fatbin文件的编译,无需分步生成PTX再手动打包,命令如下:

# 单架构PTX打包示例
nvcc --fatbin -gencode arch=compute_80,code=compute_80 mysource1.cu mysource2.cu mysource3.cu -o mysources.fatbin

核心参数说明

  • --fatbin:指定输出格式为fatbin,支持直接传入多个CUDA源文件作为输入,nvcc会自动完成编译合并
  • -gencode arch=compute_XX,code=compute_XX:这是保留PTX的关键配置,code=compute_XX要求nvcc将对应架构版本的PTX代码直接打包进fatbin,而非仅编译为特定硬件的二进制机器码
    如果需要兼容多代NVIDIA显卡,可以添加多组-gencode参数,同时打包不同架构的二进制码和PTX:
# 多架构兼容示例
nvcc --fatbin \
-gencode arch=compute_70,code=sm_70 \
-gencode arch=compute_75,code=sm_75 \
-gencode arch=compute_80,code=sm_80 \
-gencode arch=compute_86,code=sm_86 \
-gencode arch=compute_90,code=compute_90 \
mysource1.cu mysource2.cu -o mysources.fatbin

上述命令生成的fatbin会包含sm70、sm75、sm80、sm86架构的设备二进制码,以及sm90版本的PTX,可支持更高架构显卡的JIT编译。

验证方法

执行编译后可以用cuobjdump工具确认PTX是否正常打包:

cuobjdump --dump-ptx mysources.fatbin

你之前使用--fatbin --device-link没有找到PTX的原因是--device-link会触发设备端链接流程,默认仅生成对应架构的可执行二进制码,不会保留PTX中间产物,去掉--device-link参数并添加上述-gencode配置即可正常输出包含PTX的fatbin。

内容的提问来源于stack exchange,提问作者brenocfg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:54:02