Я возился с игрушечной программой для cuda.Ошибка сегментации с добавлением вектора в cuda
Я объявляю передачу массива с плавающей точкой, которая соответствует gpu и числу, каждому элементу этого массива float и передает его обратно в хост-систему и печатает массив. Однако это не работает, и это дает мне ошибку сегментации.
Вот код
#include <iostream>
using namespace std;
__global__ void kern(float *a, float *C){
for (int i = 0; i < 3; i++) C[i] = a[i] + i;
}
int main(){
float *A = new float[3];
for(int i = 0; i < 3; i++){
A[i] = i;
}
float * d;
float * C;
cudaMalloc(&C, sizeof(float)*3);
cudaMalloc(&d, sizeof(float)*3);
cudaMemcpy(&d, A, sizeof(float)*3, cudaMemcpyHostToDevice);
kern<<<1, 1>>>(d, C);
cudaMemcpy(&A, C, sizeof(float)*3, cudaMemcpyDeviceToHost);
cout << A[2];
}
Кроме того, я не знаком с таНос большинство из моего опыта была с СРР и, следовательно, я более комфортно с новым типом данных []; есть ли эквивалент для Куды?