动态数组"error code unspecified launch failure"

dynamic array getting "error code unspecified launch failure"

本文关键字:launch failure unspecified error 数组 动态 code      更新时间:2023-10-16

我想在内核中使用c变量的动态数组,但是当我使用超过1 thea时,我总是会得到此错误"错误代码未指定的启动失败"。如果我评论此代码c [letak] = 5;我没有得到这个错误。

如何解决它?

__global__ void FillMatrix(char **sequence,int *s_length, int n, int *score)
{
 int b = threadIdx.x + blockIdx.x*blockDim.x;
 int a = threadIdx.y + blockIdx.y*blockDim.y;
 const int rows = s_length[a],cols = s_length[b];
  char *X = sequence[a];
  char *Y = sequence[b];
  const int jum = (cols + 1)*(rows + 1);
  size_t sizeArr = jum;
  int *c;
  c = (int*)malloc(sizeArr);
  memset(c,0,sizeArr);
  printf("Thread %d got C pointer: %pn", threadIdx.x, c);
  score[(a*(n)) + b] = 0;
  if(b < n){
    printf("index ke %d - %d = %d --- %d - %d n", a,b, jum, cols, rows);
    int letak,kiri,atas,miring, n_letak, n_atas, n_kiri,x=0,y=0,i;
    for(i = 0; i < jum;i++)
    {   
      if(i > (cols + 1 )  && (i % (cols+1) != 0))
      {
          y = (i/(cols + 1) - 1);
          x = (i-1) % (cols + 1);
          letak = i ;
          kiri  = letak - 1;
          atas  = (letak - cols) - 1 ;
          miring = atas - 1;
          int scoring = scoringsMatrix[X[y] - 'A'][Y[x] - 'A'];    
          n_letak = c[miring] + scoring;
          n_kiri = c[kiri] + GAP;
          n_atas = c[atas] + GAP;
          c[letak] = 5;
      }
    } 
    printf("score %d - %d = %d n", a,b,score[(a*(n)) + b]);
    free(c);
  }
 }
size_t sizeArr = jum;

是不正确的,因为您没有考虑数组元素的大小。尝试

size_t sizeArr = jum*sizeof(int);