当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何从已编译的CUDA中删除所有PTX以防止知识产权泄漏》经验,为你挑选了1个好方法。

CUDA PTX类似于汇编,因此揭示了源代码.我已经阅读了在线CUDA编译器文档中的CUDA编程指南的3.1节和3.2.7节.我对-arch与-code编译器选项有基本的了解.

如果我理解正确,指定-arch compute_XX会生成PTX.而代码sm_XX 同时生成 PTX和cubin.

想要Cubin,这样在得到的图像中没有PTX.我怎样才能做到这一点?

最好通过Visual Studio设置,虽然我只在Visual Studio项目设置中找到-gencode选项.



1> tera..:

PTX与装配不太相似.PTX是程序的中间表示,可以编译为Nvidia GPU随时间使用的不同的,不兼容的指令集架构(ISA).通常,用于Nvidia GPU的新ISA附带更新版本的PTX,可以代表ISA的新功能.

-arch-code选项nvcc 略微不同的方式工作,以你的描述.它们不是(互斥的)替代品,而是决定不同的方面.
-arch控制哪个PTX版本用作中间表示.因此,它与compute_XXPTX版本结合使用.
-code控制嵌入到结果二进制文件中的代码 - 如果在-code sm_XX表单中使用指定的ISA的机器代码,或者如果-code compute_XX指定则由GPU驱动程序进行即时编译.
作为一种特殊的快捷方式, 指定-arch sm_XX将指定的ISA PTX代码的编译代码嵌入到二进制文件中 - 这可能是您要引用的情况.
最后,该-gencode选项允许您指定多个-arch/ -code对,结果二进制包含每个对的单独代码.

您可以使用nvprune从二进制文件中删除除所需ISA代码之外的所有代码.

如果不确定,您可以随时使用cuobjdump来检查特定二进制文件中的内容.

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

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有