我attemping實現在CUDA的2D陣列如下:cudaMalloc失敗用於2D陣列,錯誤代碼11
u_int32_t **device_fb = 0;
u_int32_t **host_fb = 0;
cudaMalloc((void **)&device_fb, (block_size*grid_size)*sizeof(u_int32_t*));
for(int i=0; i<(block_size*grid_size); i++)
{
cudaMalloc((void **)&host_fb[i], numOpsPerCore*sizeof(u_int32_t));
}
cudaMemcpy(device_fb, host_fb, (block_size*grid_size)*sizeof(u_int32_t*), cudaMemcpyHostToDevice);
在測試,host_fb
是NULL。另外,當我抓取cudaMalloc((void **)&host_fb[i], numOpsPerCore*sizeof(u_int32_t));
第一次迭代的錯誤代碼時,我得到了cudaErrorInvalidValue
。我究竟做錯了什麼?謝謝!
我試過你的代碼,但我認爲我仍然需要'host_fb'上的循環,否則當以後嘗試訪問'host_fb [0]'時會出現總線錯誤。我添加了循環(以及一些更改),它似乎已經工作,但我不確定它是否正確。 – Pygmalion
巴士錯誤是什麼意思?你什麼時候得到它?是不是cudaErrorInvalidValue(錯誤代碼11)你之前得到了什麼? –
以前錯誤是在cudaMalloc(錯誤代碼11)。現在,當我嘗試在cuda-gdb中運行它時,它得到一個總線錯誤,並說它無法訪問'host_fb [0] [0]'處的內存。 – Pygmalion