CUDA に割り当てられた配列からデータにアクセスしようとしています。最初のステップは、私が定義した構造体を割り当てることでした。割り当てられた構造体を、構造体から値を変更するカーネル関数に渡した後。最後に、構造体と配列をホスト変数に渡すので、それらを読み取ります。しかし、実際には、割り当てられたベクトルを読み取るのに問題があります。
#include <stdio.h>
#include <stdlib.h>
typedef struct x{
float *y;
float v;
}x_t;
__global__ void initTeste(x_t *param){
param->v = 10;
param->y[0] = 10;
param->y[1] = 10;
}
int main(void) {
x_t *hvar;
x_t hvarBackup;
float *temp = (float*)malloc(10*sizeof(float));
cudaError_t result;
cudaMalloc(&hvar , sizeof(x_t) );
cudaMalloc(&hvarBackup.y, 10*sizeof(float) );
cudaMemcpy(hvar, &hvarBackup, sizeof(x_t), cudaMemcpyHostToDevice);
initTeste<<<1,1>>>(hvar);
cudaMemcpy(&hvarBackup, hvar, sizeof(x_t), cudaMemcpyDeviceToHost);
cudaMemcpy(temp, &hvar->y, 10*sizeof(float), cudaMemcpyDeviceToHost);
printf("%f",(hvarBackup.v)); //here ok
printf("%f",(temp[0])); //here's the problem
return 0;
}