内部Memcheck错误:Memcheck在连接探查器时初始化失败

时间:2013-10-11 17:02:41

标签: visual-studio-2010 cuda

我一直在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-memcheck4 - GPU,NVIDIA K20c系统和具有单个Tesla C2050卡的系统。在前者我有同样的问题,后者cuda-memcheck工作正常。

错误说配置文件已附加的事实让我认为问题可能是由于Visual Studio 附件处理而我之前已经在两台计算机cuda-memcheck无法正常工作。正在处理的机器cuda-memcheck已经新安装了。但是,我已检查用于此类附件的NSIGHT_CUDA_DEBUGGER环境变量是否设置为0。也。我无法发现仍然可以附加到调试器的任何明显的进程。

有人可以建议任何提示来解决问题吗?

非常感谢您提前寻求帮助。

3 个答案:

答案 0 :(得分:4)

我遇到了类似的CUDA 6.5和7.0。错误消息稍微更一般(这可能是由于版本不同 - 我不确定)。它说

  

内部Memcheck错误:Memcheck初始化失败,因为当前附加了一些其他工具。请确保不同时运行nvprof和Nsight Visual Studio Edition

(当然, 目前没有其他工具在运行)。

COMPUTE_PROFILE环境变量设置为0没有帮助。 (实际上,首先我根本没有设置它。)

最后,我发现奇怪的行为是由其他环境变量引起的:工具包/分析器显然在安装过程中设置了两个额外的环境变量:

CUDA_INJECTION32_PATH=C:\Program Files (x86)\NVIDIA Corporation\Nsight Visual Studio Edition 4.1\Monitor\Common\Injection32\Nvda.Cuda.Injection.dll
CUDA_INJECTION64_PATH=C:\Program Files (x86)\NVIDIA Corporation\Nsight Visual Studio Edition 4.1\Monitor\Common\Injection64\Nvda.Cuda.Injection.dll

我不确定他们在做什么(最有可能的是,他们建立了一些" hook"这是分析所需的)。在任何情况下:删除这些环境变量(或通过执行

将它们设置为空
set CUDA_INJECTION32_PATH=
set CUDA_INJECTION64_PATH=

在命令提示符处cuda-memcheck应该启动)导致cuda-memcheck再次正常工作。

<强>更新

我在使用Geforce GTX 780 GPU的Windows 2008 R2和Windows 7计算机上遇到了同样的错误。虽然上面介绍的过程对我有用,但我发现CsA_INJECTION32_PATH和CUDA_INJECTION64_PATH环境变量是由Nsight Monitor在其设置时添加和设置的&#34; CUDA-&gt;使用此监视器进行CUDA附加&#34;用户是真的。

为了解决cuda-memcheck的初始化问题,我只是关闭了设置&#34; CUDA-&gt;使用此监视器进行CUDA附加&#34;在Nsight监视器中。这删除了CUDA_INJECTION32_PATH和CUDA_INJECTION64_PATH环境变量。此后,我打开了一个新的命令提示符会话来重新加载新的环境变量,并测试了cuda-memcheck是否正常工作。

答案 1 :(得分:2)

遇到cuda-memcheck问题时,系统环境变量COMPUTE_PROFILE设置为1。我只需将其设置为0即可使cuda-memcheck正常工作。顺便说一句,我要感谢@Vjas建议检查nvprof --profile-all-processes,其中抱怨CUDA_PROFILE的设置。我已经通过设置COMPUTE_PROFILE=0在我的笔记本电脑和开普勒系统上解决了这个问题。

我今天无法访问cuda-memcheck正常工作的特斯拉系统,以检查COMPUTE_PROFILE的设置。我会在收到这样的信息后立即更新这个答案。

修改

我已检查过在COMPUTE_PROFILE最初工作的系统上未定义环境变量cuda-memcheck

答案 2 :(得分:1)

我在尝试使用 Internal Memcheck Error: Initialization failed 库时遇到的错误只是 cuFFT。根据 nvidia forum,解决方案是设置 CUDA_MEMCHECK_PATCH_MODULE 环境变量。

export CUDA_MEMCHECK_PATCH_MODULE=1