将树复制到GPU内存

lin*_*lin 1 c c++ cuda

我有一个节点树,我想复制到GPU memroy.Node看起来像这样:

struct Node
{
    char *NodeName;
    int NumberOfChildren;
    Node *Children;
    Node *Parent; 
}
Run Code Online (Sandbox Code Playgroud)

每个节点都有一个动态数量的子节点但只有一个父节点.如何将此树复制到CUDA全局内存?我应该通过树BFS并分配/复制数据到GPU吗?或者我可以使用单个cuda内存复制指令吗?

PAn*_*ine 5

我不确定您的数据来源,但是,您可以使用平坦的内存空间并使用索引偏移量作为访问内存的索引.

节点将定义为:

struct Node
{
    unsigned int name;
    unsigned int number_of_children;
    unsigned int parent;
    unsigned int children;
}
Run Code Online (Sandbox Code Playgroud)

你可以使用一块大内存来构建你的树.(保留插入项目的最后一个位置的内存计数器).

你这样做也是为了添加字符串.

这样你将有一个连续的内存块,它将是一个简单的内存副本.访问简单演员的项目将起作用.

是否意味着重写树和字符串代码,但会保持一致.如果你不知道你的内存有多大,你可以这样做就是页面并将引用更改为一对int将使分配内存更容易.

彼得.

PS:嵌入式工程师不是CUDA程序员,但遇到过类似的问题,无需进行解析就可以跨处理器移动树.