【问题标题】:Structure in Texture memory on CUDACUDA 上纹理内存中的结构
【发布时间】:2013-09-16 15:01:51
【问题描述】:

我有一个包含两个元素结构的数组,我将其发送到全局内存中的 CUDA,然后从全局内存中读取值。

当我阅读一些书籍和帖子时,并且我只是从结构中读取值,我认为如果可以将我的数组存储在纹理内存中,我会很有趣。我在内核外使用了以下代码:

texture<node, cudaTextureType1D, cudaReadModeElementType> textureNode;

以及 main() 中的以下几行

gpuErrchk(cudaMemcpy(tree_d, tree, n * sizeof(node), cudaMemcpyHostToDevice)); 
gpuErrchk(cudaBindTexture( (size_t)0,textureNode, tree_d, n*sizeof(node) ));

在我的内核中,我使用了以下内容:

        printf("Here %d\n",tex1Dfetch(textureNode, 0 ));

但我确实有一个编译错误,通过在第一行中使用“node”但是如果我用 int 替换它,它会编译但我的意思是使用类似的东西访问我的结构数组中的元素:

tree[i].left; 

我尝试了多种方法,但无法使其发挥作用,所以我想知道这是否可能。

谢谢

【问题讨论】:

    标签: c cuda nvidia


    【解决方案1】:

    纹理仅支持 CUDA 内置类型。无法将用户结构绑定到纹理。

    如果你有一个结构恰好与 CUDA 内置向量类型具有相同的大小和对齐方式,则可能会假装它是内置类型并绑定它,但这只是一种无聊的推测.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 2012-01-08
      • 2012-09-02
      • 2016-03-03
      • 2012-07-13
      • 2011-07-26
      • 2011-03-24
      相关资源
      最近更新 更多