агрегация данных на CUDA

есть код который умножает каждое значение вертикально стояшего вектора на соответсвуюший елемент в каждой колонке матрицы.

На самом деле мне надо вернуть не результируюшую матрицу, а вектор горизонтальный, содержаший суммы значений каждого столбца уже перемноженной матрицы.

Можно это сделать в данном коде?

  1.  __global__ void AggMtx2Vec( const float* pVVector, const float* pMatrix, float* pHVector, const int height, const int width )
  2.  {
  3.     __shared__ float temp[BLOCK_SIZE][BLOCK_SIZE];
  4.  
  5.     int xIndex = blockIdx.x * blockDim.x + threadIdx.x;
  6.     int yIndex = blockIdx.y * blockDim.y + threadIdx.y;
  7.     int index  = yIndex * width + xIndex;
  8.  
  9.     if ((xIndex < width) && (yIndex < height))
  10.     {
  11.         temp[threadIdx.x][threadIdx.y] = pMatrix[ index ] * pVVector[yIndex];
  12.     }
  13.     __syncthreads();
  14.  
  15.     if ((xIndex < height) && (yIndex < width))
  16.     {
  17.         pHVector[ index ] = temp[threadIdx.x][threadIdx.y];
  18.     }
  19.  }

Forums: