我有一个包含两个元素结构的数组,我将其发送到全局内存中的 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;
我尝试了多种方法,但无法使其正常工作,所以我想知道这是否可能。
谢谢