gpt4 book ai didi

cuda - 如何从已编译的 CUDA 中删除所有 PTX 以防止知识产权泄漏

转载 作者:行者123 更新时间:2023-12-03 15:46:09 29 4
gpt4 key购买 nike

CUDA PTX 类似于汇编,因此会显示源代码。我已阅读 CUDA 编程指南的第 3.1 节和 Section 3.2.7 from the online CUDA compiler documentation .我对 -arch 与 -code 编译器选项有基本的了解。

如果我理解正确,指定 -arch compute_XX 会生成 PTX。而 -code sm_XX 使 两者 PTX和cubin。

我要只有 cubin,这样生成的图像中就没有 PTX。我怎样才能做到这一点?

最好通过 Visual Studio 设置,尽管我只能在 Visual Studio 项目设置中找到 -gencode 选项。

最佳答案

PTX 与组装不太相似。 PTX 是程序的中间表示,可以编译为 Nvidia GPU 一直在使用的不同的、不兼容的指令集架构 (ISA)。通常,用于 Nvidia GPU 的新 ISA 带有更新版本的 PTX,可以代表 ISA 的新功能。

  • -arch-code nvcc 的选项work slightly differently你所描述的。它们不是(互斥的)替代品,而是决定了不同的方面。-arch控制使用哪个 PTX 版本作为中间表示。因此,它与 compute_XX 相结合。 PTX 版本。-code控制将哪些代码嵌入到生成的二进制文件中 - 如果在 -code sm_XX 中使用了指定 ISA 的机器代码如果 -code compute_XX,GPU 驱动程序将即时编译 PTX 或 PTX被指定。
    作为一种特殊的快捷方式,仅指定 -arch sm_XX会将指定 ISA 的编译代码和 PTX 代码嵌入到二进制文件中 - 这可能是您要避免的情况。
    最后是 -gencode选项允许您指定多个 -arch/-code对,生成的二进制文件包含每个对的单独代码。
  • 您可以使用 nvprune 从二进制文件中删除除所需的 ISA 代码之外的所有代码。
  • 如果不确定,您可以随时使用 cuobjdump 检查特定二进制文件中的内容。

  • 因此,防止任何 PTX 代码出现在生成的二进制文件中的方法是将 nvcc 调用为 nvcc -arch compute_XX -code sm_XX (或将多个这样的对与 -gencode 一起使用)。

    关于cuda - 如何从已编译的 CUDA 中删除所有 PTX 以防止知识产权泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41874155/

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