2016-04-26 24 views
-2

Ich versuche Matrix Zeile Summe in der Cuda zu berechnen. da cuda für die parallele Verarbeitung verwendet wird, ist keine Schleife erforderlich. Ich habe Matrix Summenoperation durchgeführt und der Code istMatrix Zeile Summe in Cuda

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

aber im gleichen Fall nicht in der Lage es in Matrixzeilensumme zu konvertieren. Ich habe versucht, Code folgende

__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

Haben Sie eine Frage zu stellen? – talonmies

+0

Ich möchte fragen, wie Matrix Zeilensumme sollte in jcuda getan werden .. – user3804161

Antwort

0

Ihr erstes Codebeispiel sieht richtig, solange Matrixgröße klein genug ist (als blockdim x gridDim)

Für die zweiten, Ihre Matrix ein Schwimmer ** sein muss, da du es zweimal dereferenzierst. Dann müssen Sie Zeilen- und Spaltenvariablen verwenden oder sie i und j umbenennen.