gpt4 book ai didi

c - CUDA 上纹理内存的结构

转载 作者:行者123 更新时间:2023-11-30 15:45:46 24 4
gpt4 key购买 nike

我有一个包含两个元素的结构的数组,我将其发送到全局内存中的 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; 

我已经尝试了多种方法,但一直无法使其工作,所以我想知道这是否可能。

谢谢

最佳答案

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

如果您有一个结构恰好与 CUDA 内置 vector 类型具有相同的大小和对齐方式,则可以假装它是内置类型并绑定(bind)它,但这只是闲置的猜测.

关于c - CUDA 上纹理内存的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18831235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com