【发布时间】:2010-12-05 12:56:37
【问题描述】:
CUDA 有一个在仿真模式下编译代码的选项,他们提供的 .rules 文件支持该选项。
我有使用 DllImport 调用本机 dll 的 C# .NET 3.5 SP1 代码, native dll 是通过 VS2008 使用 nvcc 编译的,其功能是在 CUDA 之间传输内存并调用 CUDA 内核。
当 CUDA 内核正确时,一切运行正常,但是当出现 bug 时,我只能单步执行代码,直到内核的标题并查看它们接收的参数。 (我在启动项目的调试选项中启用了调试本机代码。)
我尝试使用仿真模式进行编译,但是在调用 CUDA memcopy 主机-->设备时出现 CUDA 错误“混合设备执行”。 我尝试使用等效的非 CUDA 版本切换 alloc+dealloc+memcopy, 但是在调用内核时会发生同样的错误。
我在尝试使用调试仿真模式时做错了什么?
附:我在 Vista x64 SP1 + VS2008 上试过这个,在 x86 和 x64 上都编译了相同的解决方案,既不能在仿真模式下工作,也不能在非仿真模式下工作。
【问题讨论】:
标签: .net visual-studio debugging cuda emulation