c/c++语言开发共享如何将struct数组传递给GPU?

我有这个结构:

struct Node { int *ptr; int k; }*d_ptr; 

我如何声明一个Node数组并将其传递给GPU? 问题是我必须先为ptr分配内存然后再分配节点!

我有这个到现在为止:

 int N=100; int NumbOfNodes=5; cudaMalloc((void **) &d_NodeArr, sizeof(Node)*NumbOfNodes); for(int i=0;i<NumbOfNodes;i++) cudaMalloc((void **) d_NodeArr[i].Degree, sizeof(int)*N); 

如果我在这样的单个数组中分配所有内容会更快:

 int N=100; int NumbOfNodes=5; int SIZE=(100*5)+5;//the +5 is for the k cudaMalloc((void **) &d_ptr,sizeof(int)*SIZE); 

    首先在主机上构造结构。 也就是说,创建结构然后为int数组执行cudaMalloc。 随后将struct本身从主机复制到设备。

    这可以帮助您: http : //forums.nvidia.com/index.php?showtopic = 196084

      以上就是c/c++开发分享如何将struct数组传递给GPU?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

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

      ctvol管理联系方式QQ:251552304

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

      (0)
      上一篇 2021年1月3日
      下一篇 2021年1月3日

      精彩推荐