Я новичок в кодировании GPU.Я пытаюсь запустить простой код на YouTube, но он не может работать.Когда я пытаюсь запустить его, он останавливается на строке, когда я определяю значение массива a a [i] = i;с сообщением:
Необработанное исключение в 0x00007FF63DF51284 в first_sample.exe: 0xC0000005: Место чтения нарушения доступа 0xFFFFFFFFFFFFFFFF.
#include <stdio.h>
#define SIZE 1024
__global__ void VectorAdd(int *a, int *b, int *c, int n)
{
int i = threadIdx.x;
if (i < n)
c[i] = a[i] + b[i];
}
int main()
{
int *a, *b, *c;
cudaMallocManaged(&a, 1024 * sizeof(int));
cudaMallocManaged(&b, SIZE * sizeof(int));
cudaMallocManaged(&c, SIZE * sizeof(int));
//for (int i = 0; i < SIZE; ++i)
for (int i = 0; i < SIZE; ++i)
{
a[i] = i;
b[i] = i;
c[i] = 0;
}
VectorAdd <<< 1, SIZE>>> (a, b, c, SIZE);
cudaDeviceSynchronize();
for (int i = 0; i < 10; ++i)
printf("c[%d] = %d\n", i, c[i]);
cudaFree(a);
cudaFree(b);
cudaFree(c);
return 0;
}