¿Cómo puedo sumar dos matrices 2d (inclinadas) usando bucles anidados para?

Soy nuevo en Cuda. Quiero sumar dos conjuntos 2d en un tercer conjunto. Yo uso el siguiente código:

cudaMallocPitch((void**)&device_a, &pitch, 2*sizeof(int),2);
cudaMallocPitch((void**)&device_b, &pitch, 2*sizeof(int),2);
cudaMallocPitch((void**)&device_c, &pitch, 2*sizeof(int),2);

ahora mi problema es que no quiero usar estas matrices como matrices 2-D planas, todo en mi código de kernel que quiero di es usar dos para bucle y poner el resultado en la tercera matriz como

__global__ void add(int *dev_a ,int *dev_b,int* dec_c)
{
    for i=0;i<2;i++)
    { 
      for j=0;j<2;j++)
      {
        dev_c[i][j]=dev_a[i][j]+dev_b[i][j];
      }
    }
}

¿Cómo puedo hacer esto en CUDA? por favor dígame cómo usar la matriz 2-d de esta manera?

¿Cuál debería ser la llamada del kernel para usar 2d-array? Si es posible, explique utilizando ejemplos de código.

Respuestas a la pregunta(2)

Su respuesta a la pregunta