我試圖在設備內存上使用推力::排序。但它在運行時崩潰。 我也嘗試禁用調試信息生成。Thrust :: sort崩潰無效參數
下面是一個小例子:
cudaSetDevice(0);
int u[10];
int* v;
cudaMalloc(&v, 10 * sizeof(int));
for (int i = 0; i < 10 ; i++)
u[i] = 10-i;
cudaMemcpy(u, v, 10 * sizeof(int), cudaMemcpyHostToDevice);
try{
thrust::sort(thrust::device_ptr<int>(v), thrust::device_ptr<int>(v+10));
}
catch (thrust::system_error &e)
printf("Error: %s \n",e.what());
cudaMemcpy(v, u, 10 * sizeof(int), cudaMemcpyDeviceToHost);
for (int i = 0; i < 10; i++)
printf("%d\n", u[i]);
e.what()提供了以下消息:
CUDA error 11 [c:\program files\nvidia gpu computing toolkit\cuda\v7.5\include\thrust\system\cuda\detail\cub\device\disp atch/device_radix_sort_dispatch.cuh, 687]: invalid argument CUDA error 11 [c:\program files\nvidia gpu computing toolkit\cuda\v7.5\include\thrust\system\cuda\detail\cub\device\disp atch/device_radix_sort_dispatch.cuh, 875]: invalid argument Error: after cub_::DeviceRadixSort::SortKeys(1): invalid argument
我使用的GeForce 940M和VS13在CUDA助理項目生成。 nvcc Build-line是:
"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" --use-local-env --cl-version 2013 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include" --keep-dir Debug -maxrregcount=0 --machine 32 --compile -cudart static -g -DWIN32 -D_DEBUG -D_CONSOLE -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MDd " -o Debug\kernel.cu.obj "C:\Users\ndrei\Documents\Visual Studio\2013\Projects\Thrust_Test\Thrust_Test\kernel.cu"
請幫幫我!
嗨羅伯特。謝謝您的回答。但排序仍然拋出一個異常。獲取此消息: >錯誤:無效參數 致命錯誤:cudaMemcpy 2失敗(C:/ Users/ndrei/Documents/Visual Studio/2013/Projects/Thrust_Test/Thr ust_Test/kernel.cu:37上的無效參數) *** FAILED - ABORTING –
您是否正在運行我準備提供的代碼?看起來沒有,因爲我提供的代碼中的'cudaCheckErrors'行號是36,而你的錯誤發生在行37上。我編譯並運行了我指出的代碼,它似乎工作正常。 –
這段代碼對我來說也沒有錯誤 – talonmies