【问题标题】:compiling CUDA code to binary inside C++ file in VS 2010在 VS 2010 中将 CUDA 代码编译为 C++ 文件中的二进制文件
【发布时间】:2013-11-28 04:02:12
【问题描述】:

我正在为一个 3d 应用程序制作一个插件,这个插件使用那个应用程序 SDK

在正常情况下“个人测试项目”,我将 .cu 文件分开并将其项目类型设置为 CUDA C/C++ ,并将 .cpp 文件设置为项目类型 C/C++ 编译器

这里我想要.cpp文件中的整个代码并编译它没有问题,

我也想制作代码(二进制),以便我可以隐藏 ptx(或内核)

【问题讨论】:

  • 您需要.cu 扩展来使编译器驱动程序nvcc 拦截CUDA 代码。当你通过 Visual Studio 编译时,你会在 Debug 或 Release 目录中得到一个可执行文件。

标签: c++ visual-studio-2010 cuda


【解决方案1】:

尚不清楚为什么要将 CUDA 代码放在 .cpp 文件中。如果原因是因为你使用的 SDK 的某些要求,而你不想使用nvcc,那是行不通的。

如果您只是想让 .cpp 文件包含设备代码并通过 nvcc 而不是直接进入主机编译器,您可以在 nvcc 编译命令上使用 -x cu 选项:

nvcc -x cu t264.cpp -o t264

上述命令将生成与您执行此操作相同的可执行文件:

nvcc t264.cu -o t264

(假设t264.cut264.cpp 是相同的文件。)

如果要去掉ptx,可以这样编译:

nvcc  -gencode arch=compute_10,code=sm_10 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 ....

这将告诉 nvcc 创建一个 fatbinary,其中包含 sm_10、sm_20 或 sm_30 设备的可执行二进制文件,但不包含 PTX。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 2022-08-20
    相关资源
    最近更新 更多