3

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

错误表明附加了配置文件的事实使我认为问题可能是由于我之前在两台机器上完成的 Visual Studio附件处理cuda-memcheck无法正常工作。相反,正在工作的机器cuda-memcheck是新安装的。但是,我检查了NSIGHT_CUDA_DEBUGGER用于此类附件的环境变量是否设置为0. 还。我找不到任何仍然可以附加到调试器的明显进程。

任何人都可以提出解决问题的任何提示吗?

4

3 回答 3

6

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

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

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

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

我不确定他们在做什么(很可能,他们建立了一些分析所需的“钩子”)。在任何情况下:删除这些环境变量(或通过执行将它们设置为空

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->将此监视器用于 CUDA 附加”是由用户设置为 true 时。

为了修复 cuda-memcheck 的初始化问题,我只是在 Nsight 监视器中关闭了“CUDA->Use this monitor for CUDA attach”设置。这删除了 ​​CUDA_INJECTION32_PATH 和 CUDA_INJECTION64_PATH 环境变量。此后,我打开了一个新的命令提示符会话以重新加载新的环境变量并测试 cuda-memcheck 是否正常工作。

于 2015-05-19T19:05:23.447 回答
3

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

我今天无法访问cuda-memcheck正常工作的 Tesla 系统来检查COMPUTE_PROFILE. 一旦我有这样的信息,我会更新这个答案。

编辑

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

于 2013-10-12T20:19:59.143 回答
2

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

export CUDA_MEMCHECK_PATCH_MODULE=1
于 2021-02-05T03:05:16.343 回答