我正在尝试测试来自 CUDA 站点http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#kernels的示例代码。
我只想添加两个大小为 4 的数组 A 和 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
我错过了什么?