2013-10-11 23 views
2

我一直使用cuda-memcheck Windows下7內部MEMCHECK錯誤: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。也。我無法發現任何仍然可以附加到調試器的外觀過程。

任何人都可以提出任何提示來解決問題嗎?

非常感謝您的幫助。

+2

1.您能否檢查Nsight顯示器的附加功能是否被禁用?您可以通過右鍵單擊Nsight Monitor托盤圖標,點擊屬性並轉到CUDA部分並禁用「將此監視器用於CUDA附加」。 2.你還可以檢查環境變量CUDA_INJECTION32_PATH和CUDA_INJECTION64_PATH是否存在,如果存在,刪除它們並重試? – Vyas

+0

@Vyas非常感謝您的建議。我忘了提及在寫這篇文章時我已經完成了測試#1,但沒有成功。另外,關於測試#2,我刪除了環境變量'CUDA_INJECTION32_PATH'和'CUDA_INJECTION64_PATH',但問題仍然存在。 – JackOLantern

+1

您以前是否在守護進程模式下使用命令行分析器(nvprof)?你能確保任務管理器不顯示任何在後臺運行的名爲'nvprof'的進程嗎?你還可以嘗試以下方法:從命令行運行'nvprof --profile-all-processes',然後點擊'ctrl + c'來終止nvprof。此時,重試使用cuda-memcheck運行應用程序。 – Vyas

回答

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最初工作在系統上沒有定義。

3

我遇到了類似的CUDA 6.5和7.0。錯誤信息稍微更一般(這可能是由於不同的版本 - 我不確定)。它說

Internal Memcheck Error: Memcheck failed initialization as some other tools is currently attached. Please make sure that nvprof and Nsight Visual Studio Edition are not being run simultaneously

(當然,還有此時未運行任何其他工具)。

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 

我不知道他們在做什麼(最有可能的是,他們建立了分析所需的一些「鉤子」)。在任何情況下:刪除這些環境變量(或把它們設置爲通過在其中cuda-memcheck應該啓動命令提示符下執行

set CUDA_INJECTION32_PATH= 
set CUDA_INJECTION64_PATH= 

空)造成cuda-memcheck正常工作了。

UPDATE

我得到了同樣的錯誤在我的Windows 2008 R2和Windows 7的機器搭配GeForce GTX 780分的GPU。雖然上面介紹的過程對我很有幫助,但我發現CUDA_INJECTION32_PATH和CUDA_INJECTION64_PATH環境變量是由Nsight Monitor在設置「CUDA->使用此監視器進行CUDA附加」時由用戶設置爲true時添加和設置的。

爲了解決cuda-memcheck的初始化問題,我只是在Nsight監視器中關閉了設置「CUDA->使用此監視器進行CUDA連接」。這刪除了CUDA_INJECTION32_PATH和CUDA_INJECTION64_PATH環境變量。此後,我打開了一個新的命令提示符會議重新加載新的環境變量,並測試cuda-memcheck正常工作。

+0

感謝@nurabha的更新。當我遇到這種情況時,我明確關閉了NSight監視器,甚至重新啓動整個系統,但環境變量仍然存在。我不認爲他們可能會被聯合國設置一些複選框而設置爲聯合國。(我還沒有嘗試過,但假設它真的有效,這可能是一個更簡單的方法來解決這個問題) – Marco13

+0

(順便說一句:我只是注意到,這可能與'CUDA_INJECTIONxx_PATH'變量相關的提示已經給出@Vyas在他對這個問題的第一個評論中提到,他也提到了「更新」的可能解決方案。不知道爲什麼這對原始提問者不起作用,但希望任何遇到這個問題的人現在都能夠解決這個問題) – Marco13

+0

謝謝。 '設置CUDA_INJECTION64_PATH ='對於x64進程就足夠了。 – masterxilo

相關問題