Передача объекта класса в ядро

Можем ли мы передать объект в функцию ядра?

Считай, у меня есть класс

class MyClass
{
    public:
        int value;
        float rate;
        MyClass()
        {
            value = 0; rate = 0;
        }
        MyClass(int v,float r)
        {
            value = v; rate = r;
        }
};

и мое ядро принимает массив объектов MyClass

__global__ void MyKernel(MyClass * mc)
{
    //Some Calculation
}

Могу ли я передать массив? Как выделить память ?? Прямо сейчас я попытался с помощью следующего кода получил ошибку CudaMemcpy

cudaError_t cudaStatus;

MyClass darr[10] ;
cudaStatus = cudaMalloc((void**)&darr, size * sizeof(MyClass));

if (cudaStatus != cudaSuccess) {
    fprintf(stderr, "cudaMalloc failed!");
    goto label1;
}

cudaStatus = cudaMemcpy(darr, arr, size * sizeof(MyClass), cudaMemcpyHostToDevice);
//arr is a host array

Ответы на вопрос(1)

Ваш ответ на вопрос