I have a normal c++ class foo with a variable that is set via constructor, the variable is a pointer used in cuda memory allocation, in constructor the variable is accesible, but in getter the variable gives memory access error:
#include <cuda_runtime_api.h>
#include "cuda.h"
#include "cuda_runtime.h"
class foo{
private:
float *my_arr;
public:
foo(float *arr):my_arr(arr){
cudaDeviceSynchronize();
float a = my_arr[0]; --> This works
};
__global__ float* foo::getMyArr(){
float a = my_arr[0]; --> This fails
return *my_arr;
}
}
void main(){
int N = 1000;
float *arr;
cudaMallocManaged(&arr, N*sizeof(float));
foo myfoo(arr);
float* value = myfoo.getMyArr();
}
I’m using cuda 10.0, Ubuntu 18.04, does anybody knows how to have reference to cuda variables in c++ classes? or what kind of mistake I have?