小编dan*_*van的帖子

为什么我的CUDA内核崩溃(未指定的启动失败)具有不同的数据集大小?

我有一个内核来根据它们的位置(对角线或非对角线)计算矩阵的不同元素.在计算大小矩阵时,内核按预期工作:

  • 14 x 14(我知道这很小,并没有正确使用GPU资源,但这纯粹是为了测试目的,以确保结果是正确的)
  • 118 x 118,和
  • 300 x 300

但是,当我尝试计算大小为2383 x 2383的矩阵时,内核崩溃了.具体来说,在cudaMemcpy()行上抛出错误"Unspecified launch failure"以将结果从设备返回到主机.从研究中我知道这个错误通常出现在超出内存访问的情况下(例如在数组中),然而,我没有得到的是它适用于前三个案例但不适用于2383 x 2383例.内核代码如下所示:

__global__ void createYBus(float *R, float *X, float *B, int numberOfBuses, int numberOfBranches, int *fromBus, int *toBus, cuComplex *y)
{
    int rowIdx = blockIdx.y*blockDim.y + threadIdx.y;
    int colIdx = blockIdx.x*blockDim.x + threadIdx.x;
    int index = rowIdx*numberOfBuses + colIdx;
    if (rowIdx<numberOfBuses && colIdx<numberOfBuses)
    {
        for (int i=0; i<numberOfBranches; ++i)
        {
            if (rowIdx==fromBus[i] && colIdx==fromBus[i]) { //diagonal element
                y[index] = cuCaddf(y[index], make_cuComplex((R[i]/((R[i]*R[i])+(X[i]*X[i]))), (-(X[i]/((R[i]*R[i])+(X[i]*X[i])))+ (B[i]/2))));
            }
            if …
Run Code Online (Sandbox Code Playgroud)

cuda

1
推荐指数
1
解决办法
5824
查看次数

标签 统计

cuda ×1