Код: Выделить всё
template T *gpu_allocate() {
T *data;
cudaMallocManaged(&data, sizeof(T));
return data;
}
struct Circle {
double radius;
Circle(double _radius) : radius(_radius) {}
};
struct Quad {
double x, y;
Quad(double _x, double _y) : x(_x), y(_y) {}
};
int main() {
auto circle = gpu_allocate();
*circle = Circle(0.3);
auto quad = gpu_allocate();
*quad = Quad(0.3, 0.2);
return 0;
}
< /code>
После выделения данных я обычно должен инициализировать этот недавно созданный объект с помощью конструктора. Существует ли способ объединить этот конструктор (с различными типами и числами параметров) в функцию распределения, чтобы я мог иметь: < /p>
template T *gpu_allocate(Parameters parameters) {
T *data;
cudaMallocManaged(&data, sizeof(T));
*data = T(parameters);
return data;
}
auto circle = gpu_allocate(0.3);
auto quad = gpu_allocate(0.1, 0.2);
Подробнее здесь: https://stackoverflow.com/questions/797 ... e-function