c/c++语言开发共享如何使用CUDA执行struct的深度复制?

使用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; 

所以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; } 

也就是说,每个100个单元的20个矩阵的容器。

谢谢你的时间。

安德里亚

    简短的回答是“只是不要”。 我说这有四个原因:

    请考虑使用线性内存和索引。 它在主机和GPU之间是可移植的,并且分配和复制开销约为基于指针的备选方案的1%。

    如果你真的想这样做,请留下评论,我会尝试挖掘一些旧的代码示例,这些示例显示了GPU上完整的愚蠢嵌套指针。

    需要了解更多c/c++开发分享如何使用CUDA执行struct的深度复制?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享如何使用CUDA执行struct的深度复制?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979936.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐