And*_*rea 7 c c++ cuda deep-copy
使用CUDA编程我在尝试将一些数据从主机复制到gpu时遇到了问题.
我有3个嵌套结构,如下所示:
typedef struct {
char data[128];
short length;
} Cell;
typedef struct {
Cell* elements;
int height;
int width;
} Matrix;
typedef struct {
Matrix* tables;
int count;
} Container;
Run Code Online (Sandbox Code Playgroud)
所以Container"包括"一些Matrix元素,而这些Cell元素又包含一些元素.
假设我以这种方式动态分配主机内存:
Container c;
c.tables = malloc(20 * sizeof(Matrix));
for(int i = 0;i<20;i++){
Matrix m;
m.elements = malloc(100 * sizeof(Cell));
c.tables[i] = m;
}
Run Code Online (Sandbox Code Playgroud)
也就是说,每个100个单元的20个矩阵的容器.
谢谢你的时间.
安德里亚
简短的回答是“只是不要”。我这么说有四个原因:
考虑使用线性内存和索引。它可以在主机和 GPU 之间移植,并且分配和复制开销约为基于指针的替代方案的 1%。
如果你真的想这样做,请发表评论,我将尝试挖掘一些旧的代码示例,这些示例展示了 GPU 上的完全愚蠢的嵌套指针。