【发布时间】:2013-10-19 20:29:24
【问题描述】:
我一直在 Windows 7 下使用cuda-memcheck。
不幸的是,在我的笔记本电脑上,我现在收到以下错误消息:
========= Internal Memcheck Error: Memcheck failed initialization as profiler is attached. Try unsetting CUDA_PROFILE or disabling the profiler.
========= Saved host backtrace up to driver entry point at error
========= Host Frame:C:\windows\system32\nvcuda.dll (cuD3D11CtxCreate + 0x103dbd) [0x11fe1d]
========= Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\cudart32_55.dll (_cudaRegisterDeviceFunction + 0x5eb2) [0xdaf2]
========= Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\cudart32_55.dll (_cudaRegisterDeviceFunction + 0x600d) [0xdc4d]
========= Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\cudart32_55.dll (_cudaRegisterDeviceFunction + 0x6576) [0xe1b6]
========= Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\cudart32_55.dll (_cudaRegisterDeviceFunction + 0x3609) [0xb249]
========= Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\cudart32_55.dll [0x3137]
========= Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\cudart32_55.dll (cudaMalloc + 0xb5) [0x152d5]
========= Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\StackOverflow.exe (main + 0x59) [0x2289]
========= Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\StackOverflow.exe (__tmainCRTStartup + 0x1bf) [0xa3ef]
========= Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\StackOverflow.exe (mainCRTStartup + 0xf) [0xa21f]
========= Host Frame:C:\windows\syswow64\KERNEL32.dll (BaseThreadInitThunk + 0x12) [0x1336a]
========= Host Frame:C:\windows\SysWOW64\ntdll.dll (RtlInitializeExceptionChain + 0x63) [0x39f72]
========= Host Frame:C:\windows\SysWOW64\ntdll.dll (RtlInitializeExceptionChain + 0x36) [0x39f45]
=========
========= ERROR SUMMARY: 1 error
我检查了CUDA_PROFILE 环境变量的存在,但它既没有定义为系统变量,也没有定义为用户变量。反正我已经设置了
Set @CUDA_PROFILE = 0
但没有效果。我正在使用 CUDA 5.5。
我也尝试在其他两个系统上使用cuda-memcheck,4-GPU、NVIDIA K20c 系统和具有单个 Tesla C2050 卡的系统。在前者我有同样的问题,在后者cuda-memcheck 工作正常。
错误说 附加了配置文件的事实让我认为问题可能是由于我之前在两台机器cuda-memcheck 不工作。相反,cuda-memcheck 正在使用的机器是全新安装的。但是,我检查了用于此类附件的NSIGHT_CUDA_DEBUGGER 环境变量设置为0。还。我找不到任何仍可附加到调试器的明显进程。
任何人都可以提出解决问题的任何提示吗?
【问题讨论】:
-
1.您能否检查 Nsight Monitor 中的附加功能是否已禁用?您可以通过右键单击 Nsight Monitor 托盘图标来执行此操作,点击属性并转到 CUDA 部分并禁用“将此监视器用于 CUDA 附加”。 2.能否也检查一下环境变量CUDA_INJECTION32_PATH和CUDA_INJECTION64_PATH是否存在,如果存在,删除后重试?
-
@Vyas 非常感谢您的建议。我忘了提到在写这篇文章时我已经完成了测试#1,但没有成功。另外,关于测试#2,我删除了环境变量
CUDA_INJECTION32_PATH和CUDA_INJECTION64_PATH,但问题仍然存在。 -
您之前是否在守护程序模式下使用过命令行分析器(nvprof)?您能否确保任务管理器不显示任何名为
nvprof的进程在后台运行?您是否还可以尝试以下操作:从命令行运行nvprof --profile-all-processes,然后点击ctrl+c以终止nvprof。此时,使用 cuda-memcheck 重试运行应用程序。 -
@Vyas 我已经解决了这个问题。我必须将
COMPUTE_PROFILE环境变量设置为0。实际上,运行nvprof --profile-all-processes让我朝着正确的方向前进,因为它返回的错误消息与cuda-memcheck不同。更详细地说,当 cuda-memcheck 抱怨CUDA_PROFILE时,nvprof抱怨COMPUTE_PROFILE,我必须将其设置为0才能启动nvprof。这也解决了cuda-memcheck问题。 -
有人能写一个答案吗?我会赞成的。