Как я могу сложить два 2d (разбитых) массива, используя вложенные для петли?

Я новичок в cuda. ​​Я хочу добавить два двумерных массива в третий массив. Я использую следующий код:

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);

теперь моя проблема в том, что я не хочу использовать этот массив как плоский двумерный массив. все в моем коде ядра я хочу использовать два цикла for и поместить результат в третий массив, например

__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];
      }
    }
}

Как я могу сделать это в CUDA? скажите, пожалуйста, как использовать 2-мерный массив таким образом?

Каким должен быть вызов ядра для использования 2-мерного массива? Если возможно, объясните, используя образцы кода.

9
задан einpoklum - reinstate Monica 2 December 2013 в 07:12
поделиться