Compiler construction 使用nvcc CUDA编译器时出现分段错误的可能原因有哪些?

Compiler construction 使用nvcc CUDA编译器时出现分段错误的可能原因有哪些?,compiler-construction,cuda,segmentation-fault,nvcc,Compiler Construction,Cuda,Segmentation Fault,Nvcc,我有一个CUDA类,我们称之为a,在头文件中定义。我已经编写了一个测试内核,它创建了类a的一个实例,该实例可以很好地编译并产生预期的结果 此外,我有我的主CUDA内核,它也可以很好地编译并产生预期的结果。但是,当我向主内核添加代码以实例化类A的实例时,nvcc编译器会因分段错误而失败 更新: 为了澄清,分段错误发生在编译过程中,而不是在运行内核时。我用来编译的行是: `nvcc --cubin -arch compute_20 -code sm_20 -I<My include dir&g

我有一个CUDA类,我们称之为
a
,在头文件中定义。我已经编写了一个测试内核,它创建了类
a
的一个实例,该实例可以很好地编译并产生预期的结果

此外,我有我的主CUDA内核,它也可以很好地编译并产生预期的结果。但是,当我向主内核添加代码以实例化类
A
的实例时,nvcc编译器会因分段错误而失败

更新:

为了澄清,分段错误发生在编译过程中,而不是在运行内核时。我用来编译的行是:

`nvcc --cubin -arch compute_20 -code sm_20 -I<My include dir> --keep kernel.cu`

这表明问题是由于
ptxas
程序未能从
ptx
文件生成CUDA二进制文件造成的。

这似乎是CUDA 5.0
ptxas
汇编程序中的某种真正错误。这是向NVIDIA报告的,我们可以假设它是在三年多的时间内修复的,因为问题被问到,这个答案被补充


[此答案已根据评论汇总,并作为社区wiki条目添加,以将此问题从未回答的问题列表中删除]

nvcc是“编译器驱动程序”,而不是编译器。您确定seg故障来自nvcc吗?seg故障发生在运行以下命令后:
nvcc--cubin-arch compute_20-code sm_20-I--keep kernel.cu
您使用的是哪一个CUDA版本?如果CUDA 5.0编译器(即其组件之一)出现seg故障,请通过CUDA注册的开发人员站点提交错误,附上一个独立的复制盒。要确保segfault确实位于CUDA编译器组件内,请临时将-v添加到nvcc命令行,以便您可以查看每个底层编译器组件的调用。编译器组件不应segfault,而不管输入如何,因此这是PTXAS中的内部错误。您可以在此处访问已注册的开发人员站点:。向下滚动一点,显示“CUDA注册开发者计划的成员可以报告问题和文件错误”(如果您还不是注册开发者,注册请求通常在一个工作日内处理)。因为问题在于PTXAS,所以您需要将PTX输入文件附加到bug,并注意PTXAS命令行的确切位置。
#$ ptxas  -arch=sm_20 -m64 -v  "/path/to/kernel_ptx/kernel.ptx"  -o "kernel.cubin" 
Segmentation fault
# --error 0x8b --