0
我需要在內核中使用多態。這樣做的唯一方法是在設備上創建這些對象(以在設備上提供虛擬mehod表)。這裏是正在創建CUDA - 在內核中創建對象並在主機上使用它們
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解除引用回主機上。它們是在設備上創建的,我需要它們在主機上。 – kboom