我正在尝试使用 CUDA 创建神经网络:
我的内核看起来像:
__global__ void feedForward(float *input, float *output, float **weight) {
//Here the threadId uniquely identifies weight in a neuron
int weightIndex = threadIdx.x;
//Here the blockId uniquely identifies a neuron
int neuronIndex = blockIdx.x;
if(neuronIndex<NO_OF_NEURONS && weightIndex<NO_OF_WEIGHTS)
output[neuronIndex] += weight[neuronIndex][weightIndex]
* input[weightIndex];
}
将输出复制回主机时,出现错误
在第 xx 行出现错误未指定的启动失败
在第 xx 行:
CUDA_CHECK_RETURN(cudaMemcpy(h_output, d_Output, output_size, cudaMemcpyDeviceToHost));
我在这里做错了吗?
是因为我如何同时使用块索引和线程索引来引用权重矩阵。还是问题出在其他地方?
我将权重矩阵分配如下:
cudaMallocPitch((void**)&d_Weight, &pitch_W,input_size,NO_OF_NEURONS);
我的内核调用是:
feedForward<<<NO_OF_NEURONS,NO_OF_WEIGHTS>>>(d_Input,d_Output,d_Weight);
之后我打电话: cudaThreadSynchronize();
我是使用 CUDA 编程的新手。任何帮助,将不胜感激。
谢谢