[有问必答] cuCtxDestroy回傳CUDA_ERROR_INVALID_VALUE

請教
在加入一段調用global函數之後,在程式最後的 cuCtxDestroy回傳值從CUDA_SUCCESS變為CUDA_ERROR_INVALID_VALUE
雖然最後得到的數值答案看似是對的,但運算速度明顯不如預期,且 cpu usage會爆增…
可能是哪兒出了問題呢?!
謝謝

一開始發現在function內做下列三行時:
cudaMalloc((void**) &b, Size);
Test<<<grid, block>>>();
cudaThreadSynchronize();
會return CUDA_ERROR_INVALID

在mark掉另外二行,只保留cudaMalloc時
cudaMalloc((void**) &b, Size);
//Test<<<grid, block>>>();
//cudaThreadSynchronize();
一樣得到 CUDA_ERROR_INVALID

然而,將runtime api cudaMalloc換置成 driver api cu垃圾广告lloc如下
cu垃圾广告lloc(&b, Size);
//Test<<<grid, block>>>();
//cudaThreadSynchronize();
時卻可得 CUDA_SUCCESS

但launch空的kernel function
cu垃圾广告lloc(&b, Size);
Test<<<grid, block>>>();
//cudaThreadSynchronize();
時又得到了 CUDA_ERROR_INVALID

且打開cudaThreadSynchronize
cu垃圾广告lloc(&b, Size);
//Test<<<grid, block>>>();
cudaThreadSynchronize();
後也從CUDA_SUCCESS變為CUDA_ERROR_INVALID

還是搞不清楚究竟問點題在何處,有請前輩們指引方向
謝謝

cu垃圾广告lloc(&b, Size);
為亂碼

實際代碼是
C U M E M A L L O C

你用一下插入代码,呵呵

kernel里面的函数执行有错误,屏蔽掉一部分,做修改~

kernel 設成空的也一樣…