2014-01-26 47 views
0

我無法運行包裝CUDA代碼的python腳本。它告訴我更新我的CUDA SDK,但我認爲問題在於cuda文件正在讀取而不是同名的cuda文件。有人知道怎麼修這個東西嗎?CUDA錯誤:MapSMtoCores未定義SM 3.5未定義

的錯誤信息是:

MapSMtoCores undefined SM 3.5 is undefined (please update to the latest SDK)! 
1.1...src/cudaconv2/filter_acts.cu(1179) : getLastCudaError() CUDA error : 
filterActs: kernel execution failed : (9) invalid configuration argument. 

我敢肯定,我使用CUDA-5雖然。要進行檢查,根據this,我需要

$ cd $(SDK) 
$ make 
$ ./C/bin/linux/release/deviceQuery 

我沒有root訪問權限,所以我不得不

$ mkdir ~/CUDA_SDK 
$ cp -r /usr/local/cuda/gpu_sdk ~/CUDA_SDK 
$ cd ~/CUDA_SDK 
$ make 

然而,這導致:

  • 許多警告表格

../../common/inc/helper_cuda.h:246:12: warning: command line option ‘-Wimplicit’ is valid for C/ObjC but not for C++

../../common/inc/helper_cuda.h:246:12: warning: enumeration value ‘FOO’ not handled in switch

  • 形式

../../common/inc/helper_cuda.h:252:14: error: ‘FOO’ was not declared in this scope

的許多錯誤,我與find -name看看helper_cuda.h。它有兩個版本: ./C/common/inc/helper_cuda.h,包含錯誤中提及的所有變量的cuda C文件頭, ./CUDALibraries/common/inc/helper_cuda.h,包含錯誤中提及的變量的cuda C++文件頭。

我也看了一下grep "is undefined (please update to the latest SDK)!" -r ~/CUDA_SDK其中的文件可能會輸出錯誤(在頂部提到),開始所有這些,而且令人驚訝的是,helper_cuda.h是其中的一個。

如果我可以讀取C++ helper_cuda.h而不是C helper_cuda.h,我估計我贏了。我應該使用環境變量嗎?

+0

cuda代碼封裝在python腳本中,取自[這裏](https://github.com/dnouri/noccn)和[here](https://github.com/dnouri/cuda-convnet)。另外,讓我知道你是否想要整個生成文件 –

+0

在你的機器中是否有計算能力3.5的設備? SDK可能已經被設置爲僅支持可用的。 –

+0

你有什麼'nvcc'版本?我猜它已經老了,你需要將它更新到5.0或更高版本。 – ahmad

回答

2

有兩個不同的問題。第一個問題是,成功構建的CUDA應用程序在運行時失敗,第二個問題是由於構建環境無效,構建CUDA應用程序失敗。

該消息,

MapSMtoCores undefined SM 3.5 is undefined (please update to the latest SDK)!

時,輸出使用該CUDA樣品框架(helper_cuda.h)的應用程序(通常是CUDA樣品中的一個)的計算能力3.5和該應用的設備上運行是使用尚未更新以涵蓋該計算能力的樣本框架版本構建的。

如果安裝了CUDA 5,那麼應用程序似乎可能是使用較早版本的SDK構建的。

第二個消息,

..src/cudaconv2/filter_acts.cu(1179) : getLastCudaError() CUDA error : filterActs: kernel execution failed : (9) invalid configuration argument.

可能是由應用程序引起了不具有檢測到的第一誤差,然後用試圖發起與由印刷在第一誤差函數返回無效值的內核正在進行。

其他錯誤是構建錯誤。這些是由於將CUDA SDK複製到您的主文件夾並嘗試從那裏構建而不更新CUDA環境變量所致。

在原生位置之外構建CUDA示例可能需要很多工作,並且不應該有必要讓「過濾器行爲」應用程序正常工作。要在具有計算能力3.5設備的計算機上運行「過濾器行爲」,您需要使用CUDA 5.0或更新版本重新構建它,或者將其修改爲不再依賴CUDA示例框架(這樣會更好)。

因此,您應該首先確定您是否有實際的CUDA 5構建環境。如果你沒有這個權限,那麼具有root權限的人應該修復它。有了一個可行的構建環境,您應該能夠重建應用程序。