启动后cudaDeviceSynchronize返回错误代码4

时间:2016-01-26 19:49:55

标签: cuda

我使用CUDA编写了一个简单的矩阵乘法代码,当我运行输入大小为A(10000*10000)*B(10000*10000)的代码时,收到此消息:

cudaDeviceSynchronize returned error code 4 after launching

在添加这些说明以测量运行时间后,我收到“未指定的启动失败”错误。

cudaEventRecord(start);
// here is my kernel call
cudaEventRecord(stop);
cudaEventSynchronize(stop); 

这是我的内核电话:

mulKernel<<<1, dataSet.threadSize>>>(dev_c, dev_a, dev_b, dataSet.n, dataSet.m, dataSet.p, dataSet.threadSize);

这是我的内核代码:

    int i = threadIdx.x;
    int j, k, sum;
    //if(n<=threadSize)
    for(; i < n; i+=threadSize){
        for(j = 0; j < p; j++){
            sum = 0;
            for(k = 0; k < m; k++){
                sum += A[i * m + k] * B[k * p + j];
            }
            C[i *p + j] = sum;
        }
    }

如何解决此错误?

1 个答案:

答案 0 :(得分:1)

您正在启动1个大小为dataSet.threadSize的区块。这将超过块中的最大线程数(我认为Kepler GPU为1024)。阅读更多关于如何选择网格和块尺寸的here