【发布时间】:2016-05-09 01:09:21
【问题描述】:
我需要在我的内核中使用多态性。这样做的唯一方法是在设备上创建这些对象(使虚拟方法表在设备上可用)。这是正在创建的对象
class Production {
Vertex * boundVertex;
}
class Vertex {
Vertex * leftChild;
Vertex * rightChild;
}
然后在我做的主机上:
Production* dProd;
cudaMalloc(&dProd, sizeof(Production *));
createProduction<<<1,1>>>(dProd);
在哪里
__global__ void createProduction(Production * prod) {
prod = new Production();
prod->leftChild = new Vertex();
prod->rightChild = new Vertex();
}
问题是如何将在设备上创建的产品的左右顶点都返回到主机上?我知道在类中使用指针会使它们很难处理,但是......没有其他方法可以创建这种树结构。
【问题讨论】:
-
你的问题不清楚。您描述的方法不是已经在设备上创建了左右顶点吗?您是在问“创建后,如何将左右顶点移回主机?”我认为您对
dProd的设置有点奇怪,但这似乎并没有影响任何事情。 -
我想在主机上取消引用 leftChild 和 rightChild。它们是在设备上创建的,我需要它们在主机上。