2016-04-26 16 views
-2

私は行列の行の合計を計算しようとしています。なぜなら、cudaは並列処理に使用されているので、ループを必要としないからです。私は行列和演算を行っており、コードは行列の行の合計がuda

__global__ void MatAdd(int A[][N], int B[][N], int C[][N]){ 
int i = threadIdx.x; 
int j = threadIdx.y; 

C[i][j] = A[i][j] + B[i][j]; 
} 

ですが、同じ場合には行列の行の合計に変換することはできません。私は2番目のためにあなたの最初のコードサンプルは限り行列のサイズが十分(gridDim X blockdimより)小さいため、正しく見える

__global__ void rowSums(float* matrix, float* sums, int rows, int cols) 
{ 
int row = blockIdx.y * blockDim.y + threadIdx.y; 
int col = blockIdx.x * blockDim.x + threadIdx.x; 
     if (i < N && j < M) 
       sums[j] += matrix[i][j]; 

} 
+0

実際の質問がありますか? – talonmies

+0

jcudaで行列の行の合計をどのように行うべきか質問したい – user3804161

答えて

0

を次のコードを試してみました、あなたの行列は**フロートにする必要があり、あなたはそれを2回引用しているからです。 次に、rowとcol変数を使用するか、iとjの名前を変更する必要があります。