礦機cudaerror
Ⅰ 如何解決CUDA error的問題
cuda中有cudaError_t這個類別,可以記錄cuda錯誤。所有的cuda庫函數,幾乎都返回一個cudaError_t。
《GPU高性能編程》中使用HANDLE_ERROR宏函數,處理每個函數返回的cudaerror
static void HandleError( cudaError_t err,const char *file,int line ) {
if (err != cudaSuccess) {
printf( "%s in %s at line %d\n", cudaGetErrorString( err ), file, line );
exit( EXIT_FAILURE );
}
}
Ⅱ cuda error out of memory 怎麼解決
今天剛把伺服器搭建起來 結果程序就跑不起來 當時差點把自己嚇尿了
錯誤類型:CUDA_ERROE_OUT_OF_MEMORY
E tensorflow/stream_executor/cuda/cuda_driver.cc:924] failed to alloc 17179869184 bytes on host: CUDA_ERROR_OUT_OF_MEMORY
W ./tensorflow/core/common_runtime/gpu/pool_allocator.h:195] could not allocate pinned host memory of size: 17179869184
Killed
其實很容易理解 大致意思就是 伺服器的GPU大小為M
tensorflow只能申請N(N<M)
也就是tensorflow告訴你 不能申請到GPU的全部資源 然後就不幹了
解決方法:
找到代碼中Session
在session定義前 增加
config = tf.ConfigProto(allow_soft_placement=True)
#最多佔gpu資源的70%
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.7)
#開始不會給tensorflow全部gpu資源 而是按需增加
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)
這樣就沒問題了
其實tensorflow 算是一個比較貪心的工具了
就算用device_id指定gpu 也會佔用別的GPU的顯存資源 必須在執行程序前
執行 export CUDA_VISIBLE_DEVICES=n(n為可見的伺服器編號)
再去執行Python 代碼.py 才不會佔用別的GPU資源
最近剛開始搞tensorflow 之前都是caffe
這周連續3天被實驗室的人 舉報 佔用過多伺服器資源 真是心累 只要用上面的方法
也就是執行代碼前 執行 export CUDA_VISIBLE_DEVICES=n
只讓1個或者個別GPU可見 其他GPU看不見 就行了
Ⅲ 請教cuda error
如果用的是Windows中的Visual Studio的Nsight插件,可以在kernel中設置斷點,然後選擇Nsight插件中的Start CUDA Debugging來看出錯的語句。
如果是Mac或Linux,請考慮使用CUDA-GDB。
另,在每次調用完kernel後寫一句話可以檢查基本的kernel調用錯誤,例如
//
#definegetLastCudaError(msg)__getLastCudaError(msg,__FILE__,__LINE__)
inlinevoid__getLastCudaError(constchar*errorMessage,constchar*file,constintline)
{
cudaError_terr=cudaGetLastError();
if(cudaSuccess!=err)
{
fprintf(stderr,"%s(%i):getLastCudaError()CUDAerror:%s:(%d)%s. ",
file,line,errorMessage,(int)err,cudaGetErrorString(err));
DEVICE_RESET
exit(EXIT_FAILURE);
}
}
#endif
kernel<<<1,1>>>();
getLastCudaError("ErrorinCalling'kernel'");
Ⅳ 運行Python項目時出現「 cuda runtime error (30) : unknown error 」要怎麼解決
R6034出錯可能是你安裝過像Spyware Doctor這類的反間諜軟體,安裝這樣的軟體後會在C:\windows\system32\目錄下出現一個名為msvcr80.dll的文件,當卸載這個軟體時msvcr80.dll會留在目錄里。可以試試把C:\windows\system32\目錄下的msvcr80.dll刪除,如果裝有360安全衛士這類軟體,刪除時可能會出現一個提示,一定要選允許,不然無法刪除。然後點擊桌面左下角的開始菜單,點擊運行,輸入cmd,然後輸入for %1 in (%windir%\system32\*.dll) do regsvr32 /s %1,如果怕輸錯,可復制,然後點擊輸入cmd後彈出窗口的左上角C:\,點擊編輯-粘貼,回車後靜待刷屏運行,完畢後再等一會兒直到硬碟指示燈不再閃爍為止,然後重新啟動
Ⅳ 安裝CUDA6.5發現找不到C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing這個文件夾,請問在哪
你好,
沒有NVIDA GPU Computing這個文件夾,ProgramData裡面放的是CUDA Sample。如果你想自己配置CUDA的話,你需要到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5下面,裡面的include, lib和bin文件夾是你要用到的。其次,你要確認你的系統環境變數的Path中是否加入了你的C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\bin目錄,不然你自己配置的CUDA程序是沒有辦法直接運行的。
謝謝
Ⅵ cuda中的錯誤MSB3721怎麼解決
我是用的《cuda by example》這本書的案例 編譯也遇到這個問題 改了下頭文件"book.h"就通過了 。對了 你看下cuda的cu文件屬性是不是CUDA C/c++
Ⅶ cuda中kernel掛掉了,怎麼查錯
如果用的是Windows中的Visual Studio的Nsight插件,可以在kernel中設置斷點,然後選擇Nsight插件中的Start CUDA Debugging來看出錯的語句。
如果是Mac或Linux,請考慮使用CUDA-GDB。
另,在每次調用完kernel後寫一句話可以檢查基本的kernel調用錯誤,例如
//
#definegetLastCudaError(msg)__getLastCudaError(msg,__FILE__,__LINE__)
inlinevoid__getLastCudaError(constchar*errorMessage,constchar*file,constintline)
{
cudaError_terr=cudaGetLastError();
if(cudaSuccess!=err)
{
fprintf(stderr,"%s(%i):getLastCudaError()CUDAerror:%s:(%d)%s. ",
file,line,errorMessage,(int)err,cudaGetErrorString(err));
DEVICE_RESET
exit(EXIT_FAILURE);
}
}
#endif
kernel<<<1,1>>>();
getLastCudaError("ErrorinCalling'kernel'");
Ⅷ cudaerrorlaunchtimeout問題怎麼解決
這個錯誤是因為你的運行庫不全這游戲運行需要的運行庫很多比如vc2005+等東西下一個游戲運行庫的整合包這東西很常見游俠啊3dm或其他一些網站都有都裝上一本就不會缺東西而導致運行錯誤了