当前位置: 首页 > 知识库问答 >
问题:

在编译CUDA时既找不到.cubin也找不到.ptx文件

田远
2023-03-14

我正在使用Visual Studio2013进行CUDA(7.0)项目。该项目为64bit。我正在使用驱动程序API,需要从ptx或cubin文件加载模块。但我找不到文件。在VS I go properties->cuda C/C++->common->nvcc编译类型中,将其更改为-cubin或ptx。编译器完成ok但我找不到那个文件。我只能在output debug目录中看到kernel.cu.obj和kernel.cu.cache文件。这里会有什么错误吗?

更新:

如果我转到属性->CUDA C/C++->Common->Keep Preprocessed Files并设置“是”,那么我会看到.ptx和其他中间stuff,但据我所知,这个选项并不是获取.ptx的强制选项?也会演示CUDA SDK项目,如“MatrixMuldRv”spitr ptx(关闭该选项),我不知道区别在哪里。

下面是matrixMulDrv项目编译命令:

C:\ProgramData\nVIDIA Corporation\CUDA Sample\V7.0\0_Simple\MatrixMuldrv>“C:\ProgramFiles\nVIDIA GPU计算工具包\CUDA\V7.0\bin\nvcc.exe”-gencode=arch=compute_20,code=\“compute_20,compute_20\”--use-local-env--cl-version 2013-ccbin“C:\ProgramFiles(x86)\Microsoft Visual Studio 12.0\vc\bin\x86_amd64”-I./-I./../Common

下面是我的项目CUDA内核编译命令:

E:\Documents\Visual studio 2012\Projects\ProjectName\ProjectName>“C:\Program Files\NVIDIA GPU计算工具包\CUDA\v7.0\bin\nvcc.exe”-gencode=arch=compute_20,code=\“SM_20,compute_20\”--use-local-env--cl-version 2013-ccbin“C:\Program Files(x86)\Microsoft Visual studio 12.0\vc\bin\x86_amd64”-i“E:\Documents\Visual studio计算工具包\CUDA\V7.0/include“-i”C:\ProgramData\nVIDIA Corporation\CUDA Sample\V7.0\Common\Inc“-i”E:\Documents\Visual studio 2012\Projects\ProjectName\ProjectName\Include“-i”C:\Program Files\nVIDIA GPU计算工具包\CUDA\V7.0\Include“-i”C:\Program Files\nVIDIA GPU计算工具包\CUDA\V7.0\Include“-g”-g-keep-dir x64\debug

可以看到matrixMulDrv项目设置为compile.ptx,使用这行data/matrixmul_kernel64.ptx,而在我的项目中,我有-ox64\debug\skernel.cu.obj,但我在两个项目上有相同的CUDA编译器设置。

共有1个答案

陈季
2023-03-14

Visual Studio中的CUDA项目可以在项目级别(在这种情况下,它们在project properties...CUDA...Device中定义)和文件级别(在这种情况下,您可以右键单击文件以调出其属性并在类似位置找到它们)继承编译设置。

文件可以从全局项目设置继承其设置,也可以替换它们(如果您在文件级别选择)。

其中一些设置将确定在nvcc编译该文件时将生成何种类型的输出(因此有效地需要哪些编译开关)。普通的CUDA运行时API项目需要将其模块编译成(“混合”)html" target="_blank">对象文件(即.o),但CUDA驱动程序API项目通常需要.cubin文件或.ptx文件形式的CUDA“对象”。

有一些设置可以修改这个生成,例如,要将一个文件从典型的CUDA运行时API编译切换到典型的驱动程序API编译,您可以将“NVCC编译类型”选项从“生成混合对象文件(--compile)”更改为“生成.ptx文件(-ptx)”

如果在文件级别执行此操作,则需要对需要更改其设置的每个文件执行此操作。

 类似资料:
  • 在构建JPostal时,我发出了命令: 我得到以下错误: 问题是我已经将java编译器的正确路径添加到环境变量中。事实上,当我在中键入时,它会显示所有选项,如本SO答案中讨论的那样。例如,在命令行中键入会显示正确的版本: 我还按照本主题中的建议设置了< code>JAVA_HOME环境变量。 为什么没有检测到 Java 编译器? 更新1: 三个命令的输出查看当前本地、用户和系统的定义。 本地路径:

  • 问题内容: 我正在尝试使用Ant将Web应用程序打包到war文件中。 构建时,出现以下错误: 以下是我的build.xml 如何编译没有主类的类文件? 如何设置课程路径? 作为参考,我正在使用Eclipse。 问题答案: 除了需要在JDK的/ lib目录中的tools.jar的javac任务以外,所有您的蚂蚁工具都可以正常工作,在这种情况下,JRE是不够的。因此,来自ant的提示是:“无法找到ja

  • 我无法从命令行编译Maven项目。我使用的是Maven版本: Apache Maven 3.5.4 null 这是我的pom.xml(没有依赖项): 新的堆栈跟踪是:

  • 问题内容: 美好的一天,我在同一目录中有两个类Map和Field。我成功地编译了Field.java,但是当我编译Map.java时,我得到了: 这是两个类的代码: 对于Field.java(如有必要): 我分别编译了Field.java和Map.java:javac Field.java没有返回任何错误,但是javac Map.java返回了以上错误。 问题答案: 我仍然不清楚您的问题到底在哪里

  • 问题内容: 我正在使用64位的Debian 8(Jessie)。我安装了,现在坐在。 但是当我这样做时(就像文档所说的那样) 编译(用时我只得到) 注意:在另一台使用旧的64位Suse的机器上,该机器位于完全相同的路径上,与新的Debian相比,没有设置其他环境var,它工作得很好。使用完全相同的makefile从一台计算机迁移到另一台计算机时发生了问题。迁移(它们都已安装了)之后,我刚刚需要工作

  • 我在Eclipse中pom.xml中收到错误消息。 http://Maven.apache.org/Maven-v4_0_0.xsd“>4.0.0com.hmis chmis war 1.0-快照chmis Maven Webapp http://Maven.apache.org 这是我的pom.xml。当我运行该程序时,会出现如下错误。