2013-09-16 59 views
0

我有一個數組包含兩個元素的結構,我發送到全局內存中的CUDA,並從全局內存讀取值。CUDA上的紋理內存結構

當我閱讀了一些書和帖子,並且由於我只是從結構中讀取值,我認爲如果可以將我的數組存儲在紋理內存中,我會很感興趣。我使用的內核之外下面的代碼:

texture<node, cudaTextureType1D, cudaReadModeElementType> textureNode; 

,並在主要以下行()

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)); 

,但我做的有一個編譯錯誤,通過使用第一行中的「節點」,但它編譯如果我用int替換它,但我的觀點將通過使用類似於訪問我的結構數組中的元素:

tree[i].left; 

我已經試過許多東西,但一直沒能使其工作,所以我不知道這是否可能。

感謝

回答

1

紋理只支持CUDA內建類型。不可能將用戶結構綁定到紋理。

如果您的結構恰好與CUDA內置向量類型具有相同的大小和對齊方式,則可能會假裝它是內置類型並綁定它,但這只是空閒的投機。