How to declare 2D matrices in CUDA dynamically

27 views Asked by At

As a part of my code , I am trying to use 2D matrices in CUDA , but it always give me segmentation fault.

double** d_matrix;
cudaMalloc((void**)&d_matrix, m * sizeof(double*));

for (int i = 0; i < m; i++)
{
    cudaMalloc((void**)&d_matrix[i], n * sizeof(double));
}

when I run this using gdb i get

  Thread 1 "qr" received signal SIGSEGV, Segmentation fault.
  0x00007ffff5be2ba0 in ?? () from 
 /usr/lib/wsl/drivers/nvdmi.inf_amd64_706343011d139b51/libcuda.so.1.1
 
  (gdb) backtrace
  #0  0x00007ffff5be2ba0 in ?? () from 
  /usr/lib/wsl/drivers/nvdmi.inf_amd64_706343011d139b51/libcuda.so.1.1
  #1  0x0000555555585f73 in cudart::driverHelper::mallocPtr(unsigned long, void**) ()
  #2  0x000055555556154b in cudart::cudaApiMalloc(void**, unsigned long) ()
  #3  0x0000555555596aec in cudaMalloc ()
  #4  0x000055555555bd04 in main () at qr.cu:58

what is the error?

0

There are 0 answers