Próbuję przetestować przykładowy kod z witryny CUDA http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#kernels.Implementacja CUDA VecAdd z kodu przykładowego
ja po prostu chcesz dodać dwóch macierzy A i B o rozmiarze 4 i przechowywać je w tablicy C. Oto co mam do tej pory:
#include <stdio.h>
#include "util.h"
void print_array(int* array, int size) {
int i;
for (i = 0; i < size; i++) {
printf("%d ", array[i]);
}
printf("\n");
}
__global__ void VecAdd(int* A, int* B, int* C) {
int i = threadIdx.x;
C[i] = A[i] + B[i];
}
int main(int argc , char **argv) {
int N = 4;
int i;
int *A = (int *) malloc(N * sizeof(int));
int *B = (int *) malloc(N * sizeof(int));
int *C = (int *) malloc(N * sizeof(int));
for (i = 0; i < N; i++) {
A[i] = i + 1;
B[i] = i + 1;
}
print_array(A, N);
print_array(B, N);
VecAdd<<<1, N>>>(A, B, C);
print_array(C, N);
return 0;
}
Czekam macierz C (ostatnia wiersz wyjścia) na 2, 4, 6, 8, ale nie wydaje się, aby dodać:
1 2 3 4
1 2 3 4
0 0 0 0
Czego mi brakuje?
To nadal zawiera nieprawidłowe wywołanie jądra – talonmies
@talonmies Thanks sr. Poprawiam erro, dzięki za wskazanie tego. – dreamcrash