我有一个节点树,我想复制到GPU memroy.Node看起来像这样:
struct Node
{
char *NodeName;
int NumberOfChildren;
Node *Children;
Node *Parent;
}
Run Code Online (Sandbox Code Playgroud)
每个节点都有一个动态数量的子节点但只有一个父节点.如何将此树复制到CUDA全局内存?我应该通过树BFS并分配/复制数据到GPU吗?或者我可以使用单个cuda内存复制指令吗?
我不确定您的数据来源,但是,您可以使用平坦的内存空间并使用索引偏移量作为访问内存的索引.
即
节点将定义为:
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程序员,但遇到过类似的问题,无需进行解析就可以跨处理器移动树.
归档时间: |
|
查看次数: |
701 次 |
最近记录: |