以太坊cudaerror
『壹』 CUDA程序出錯「no instance of overloaded function「,求解決辦法
cudaMallocPitch函數原型是下面這樣的:
cudaError_t cudaMallocPitch (void ** devPtr, size_t * pitch, size_t width, size_t height)
你的pitch是不是size_t類型的,看上面好像你寫成int了,改成size_t試試。再不行的話,把後面兩個參數也用size_t類型的試試。
『貳』 CUDA程序報錯 invalid argument
cudaSafeCall() Runtime API error in file...../matrix.cu,line 20: invalid argument 非法的值,數組出界
20行用的數組出界
『叄』 請教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'");
『肆』 如何解決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中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'");
『陸』 cuda中的錯誤MSB3721怎麼解決
我是用的《cuda by example》這本書的案例 編譯也遇到這個問題 改了下頭文件"book.h"就通過了 。對了 你看下cuda的cu文件屬性是不是CUDA C/c++
GPU挖掘
硬體
演算法是內存難解的,為了使DAG適合內存,每個GPU需要1-2GB內存,如果你得到錯誤提示:Error GPU mining. GPU memory fragmentation? 說明你沒有足夠的內存。GPU挖礦軟體是基於OpenCL實現的,AMD GPU會比同一水準的NVIDIA GPU更快。ASIC和FPGA相對低效因而被阻攔。要給晶元集成平台獲取openCL,嘗試:
AMD SDK openCL
NVIDIA CUDA openCL
Ubuntu Linux設置
對於這個快速指南,你會需要Ubuntu 14.04或15.04以及fglrx圖像驅動器。你也可以使用NVidia驅動器和其他平台,但是你必須要找到自己的方式來獲得有效的OpenCL安裝,比如Genoil的ethminer分叉。
如果你在用15.04,到"軟體與更新〉額外的驅動器"設置為"從fglrx為AMD圖形加速器使用視頻驅動器"。
如果你在用14.04,到"軟體與更新〉額外的驅動器"設置為"從fglrx為AMD圖形加速器使用視頻驅動器"。很遺憾,對於一些人來說,這種方法可能不管用,因為Ubuntu 14.04.02中有個已知的程序錯誤會阻止你轉換到GPU挖礦所必須的專屬圖形驅動器。
所以,如果你遇到這個程序錯誤,先到"軟體與更新〉更新"選擇"預發行的可靠更新提議"。然後,回到"軟體與更新〉額外的驅動器"設置為"從fglrx為AMD圖形加速器使用視頻驅動器"。重啟之後,值得檢查一下現在確實正確安裝了驅動器(例如通過再到"額外驅動器")。
不管做什麼,如果你在用14.04.02,一旦安裝之後,就不要改變驅動器或者驅動器配置。例如,aticonfig –initial的使用(尤其是-f, –force選項)會"破壞"你的設置。如果你偶然改變了配置,會需要卸載驅動器,重啟,再次安裝驅動器並重啟。
『捌』 運行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:\,點擊編輯-粘貼,回車後靜待刷屏運行,完畢後再等一會兒直到硬碟指示燈不再閃爍為止,然後重新啟動
『玖』 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看不見 就行了