2014-02-24 64 views
0
  1. 我可以通过nvcc使用cuPrintf成功编译我的代码,但无法在Visual Studio 2012环境中编译它。它说“volatile char *”不能在“cudaMemcpyToSymbol”函数中改为“const void *”。关于CUDA和cuPrintf的几个问题

  2. cuPrintf似乎不起作用,在内核代码中没有执行cuPrintf函数。

  3. 如何使nvcc导出pdb文件?

  4. 在内核函数中有没有其他方便调试的方法?我只有一台笔记本电脑。

+0

你可以张贴在MSVC使用NVCC编译行?代码也可以 –

+0

你可以把编译标志放到更高的体系结构并尝试使用普通的printf吗? – jmpyle771

回答

1

月1日,cuPrinft被弃用(据我所知,它从来没有被释放)可以打印使用打印命令从内核中的数据,但是这是调试内核的一个非常不推荐的方式。你正在使用CUDA nvcc编译器进行编译,CUDA中没有这样的pdb文件,虽然看着'g'和'G'标志,但这些可能会显着增加你的运行时间。

3, The best way to debug kernels is using visual Nsight

+0

我需要pdb文件来调试主机代码,并使用VS编译可以生成pdb文件。我从来没有成功使用Visual Nsight,这就是为什么我找到cuPrint。不过谢谢你。 – Cccmm002

+1

cuPrintf仍然是当前(cuda 5.5)发布的工具包中示例代码的cuda示例[simple printf](http://docs.nvidia.com/cuda/cuda-samples/index.html#simpleprintf)的一部分。当cc <2.0时,cuPrintf用于该示例中。我不确定在这种情况下什么废弃的手段。这是一个示例代码。 –

+0

尝试运行nsight,这是一个非常好的调试工具,值得努力,关于cuprinf,我会推荐使用cc»20,比旧的设备和缺乏编程选项更旧的版本。 – TripleS