内部Memcheck错误。Memcheck初始化失败,因为已连接了profiler。

问题描述 投票:3回答:2

我一直用 cuda-memcheck 在Windows 7下。

不幸的是,在我的笔记本电脑上,我现在得到了以下错误信息。

========= 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 在其他两个系统上,a 4-GPU,NVIDIA K20c系统和一个有一块Tesla C2050卡的系统。在前者,我遇到了同样的问题,而在后者,我的问题是 cuda-memcheck 工作正常。

事实上,该错误说 资料附于 让我觉得这个问题可能是由于Visual Studio的 流程附件 我以前在两台机器上做过的 cuda-memcheck 是不工作的。该机 cuda-memcheck 的工作已被重新安装,而不是。然而,我已经检查了 NSIGHT_CUDA_DEBUGGER 这种附件所使用的环境变量被设置为 0. 另外。我无法发现任何仍然可以连接到调试器的表象进程。

谁能给点提示来解决这个问题?

visual-studio-2010 cuda
2个回答
6
投票

我在CUDA 6.5和7.0中也遇到了类似的情况。错误信息略微有些笼统(可能是由于版本不同--我不确定)。它说

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

(当然,也有 此时没有其他工具运行)。)

设置 COMPUTE_PROFILE 环境变量,以 0 没有起到任何作用。实际上,我一开始就没有设置它)。

最后,我发现这种奇怪的行为是由其他环境变量引起的。很明显,在安装过程中,toolkitprofiler还额外设置了两个环境变量。

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

我不知道它们在做什么(很可能是建立了一些剖析所需的 "钩子")。无论如何。删除这些环境变量(或者通过执行

set CUDA_INJECTION32_PATH=
set CUDA_INJECTION64_PATH=

在命令提示符下 cuda-memcheck 应运而生 cuda-memcheck 以恢复正常工作。

更新

我在使用Geforce GTX 780 GPU的Windows 2008 R2和Windows 7机器上也出现了同样的错误。虽然上面解释的过程对我有效,但我发现CUDA_INJECTION32_PATH和CUDA_INJECTION64_PATH环境变量是由Nsight Monitor添加和设置的,当其设置 "CUDA->Use this monitor for CUDA attach "被用户设置为true时。

为了解决cuda-memcheck的初始化问题,我干脆关闭了Nsight monitor中的 "CUDA->Use this monitor for CUDA attach "的设置。这样就删除了CUDA_INJECTION32_PATH和CUDA_INJECTION64_PATH环境变量。此后,我打开一个新的命令提示符会话,重新加载新的环境变量,并测试cuda-memcheck工作正常。


3
投票

当遇到以下问题时 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 原本在工作。

© www.soinside.com 2019 - 2024. All rights reserved.