C++ cuda中矢量加法的故障分割

C++ cuda中矢量加法的故障分割,c++,cuda,C++,Cuda,我在玩cuda的玩具程序 我声明一个浮点数组,将其传输到gpu,并将一个数字传输到该浮点数组的每个元素,然后将其传输回主机系统并打印该数组。然而,这是行不通的,这是给我的分割错误 以下是代码 #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(

我在玩cuda的玩具程序

我声明一个浮点数组,将其传输到gpu,并将一个数字传输到该浮点数组的每个元素,然后将其传输回主机系统并打印该数组。然而,这是行不通的,这是给我的分割错误

以下是代码

#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];

}
#包括
使用名称空间std;
__全局无效内核(浮点*a,浮点*C){
对于(inti=0;i<3;i++)C[i]=a[i]+i;
}
int main(){
浮动*A=新浮动[3];
对于(int i=0;i<3;i++){
A[i]=i;
}
浮动*d;
浮点数*C;
cudaMalloc(&C,sizeof(浮动)*3);
库达马洛克公司(d&d),规模(浮动)*3;
cudaMemcpy(&d,A,sizeof(浮动)*3,cudaMemcpyHostToDevice);
克恩(d,C);
cudaMemcpy(&A,C,sizeof(float)*3,cudaMemcpyDeviceToHost);
不能将此更改为:

cudaMemcpy(&d, A, sizeof(float)*3, cudaMemcpyHostToDevice);
cudaMemcpy(&A, C, sizeof(float)*3, cudaMemcpyDeviceToHost);
为此:

cudaMemcpy(d, A, sizeof(float)*3, cudaMemcpyHostToDevice);
cudaMemcpy(A, C, sizeof(float)*3, cudaMemcpyDeviceToHost);
另外,最好通过
CUDA
调用来存储返回代码,它们会让您更好地了解出了什么问题