我在嘗試從CUDA站點http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#kernels中測試示例代碼。從示例代碼實現CUDA VecAdd
我只是想補充兩個數組A和大小爲4的B,並將其存儲在陣列C.這是我到目前爲止有:
#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;
}
我期待C數組(最後排的輸出)爲2,4,6,8,但它似乎並沒有被添加:
1 2 3 4
1 2 3 4
0 0 0 0
我在想什麼?
這仍然包含不正確的內核調用 – talonmies
@talonmies謝謝sr。我糾正了錯誤,謝謝指出。 – dreamcrash