gpt4 book ai didi

cuda - PTX 和 CUBIN w.r.t. 有什么区别? NVCC 编译器?

转载 作者:行者123 更新时间:2023-12-04 00:29:05 29 4
gpt4 key购买 nike

我安装了 CUDA 4.0,以及具有 Compute Capability 2.0(GTX 460 卡)的设备。
“cubin”和“ptx”文件有什么区别?
我认为 cubin 是 gpu 的 native 代码,因此这是特定于微体系结构的,而 ptx 是通过 JIT 编译在 Fermi 设备(例如 Geforce GTX 460)上运行的中间语言。当我编译 .cu源文件,我可以在 ptx 或 cubin 目标之间进行选择。如果我想要cubin文件,我选择code=sm_20 .但是如果我想要一个 ptx 文件,我会使用 code=compute_20 .
正确吗?

最佳答案

您已将选择编译阶段的选项( -ptx-cubin )与控制目标设备的选项( -code )混在一起,因此您应该重新访问文档。

NVCC 是 NVIDIA 编译器驱动程序。 -ptx-cubin options 用于选择编译的特定阶段,默认情况下,没有任何阶段特定的选项 nvcc 将尝试从输入生成可执行文件。大多数人使用 -c选项使 nvcc 生成一个目标文件,该文件稍后将被默认平台链接器链接到可执行文件中,-ptx-cubin选项仅在您使用驱动程序 API 时才真正有用。有关中间阶段的更多信息,请查看安装 CUDA Toolkit 时安装的 nvcc 手册。 .

  • -ptx 的输出是纯文本 PTX 文件。 PTX 是 NVIDIA GPU 的中间汇编语言,尚未完全优化,稍后将组装到特定于设备的代码中(例如,不同的设备具有不同的寄存器数量,因此完全优化 PTX 是错误的)。
  • -cubin 的输出是一个胖二进制文件,它可能包含一个或多个特定于设备的二进制图像以及(可选)PTX。
  • -code您所指的论点完全有不同的目的。我鼓励您查看包含几个示例的 nvcc 文档,通常我建议使用 -gencode选项,因为它允许更多控制并允许您在一个二进制文件中定位多个设备。举个简单的例子:
  • -gencode arch=compute_xx,code=\'compute_xx,sm_yy,sm_zz\'导致 nvcc 以计算能力为 xx(即 arch= 位)的所有设备为目标,并将 PTX(code=compute_xx)以及 sm_yy 和 sm_zz 的设备特定二进制文件嵌入到最终的胖二进制文件中。
  • 关于cuda - PTX 和 CUBIN w.r.t. 有什么区别? NVCC 编译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7696230/

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