-1

簡単な例を通して、CUDA でテクスチャを使用する方法を学んでいます。次の例を試しましたが、うまくいきません。値 0 を示しています。

#include "cuPrintf.cu"
texture<int,1,cudaReadModeElementType> ref;
__global__ void kernel(int *a)  
{  
    int b=tex1D(ref,0);  
    cuPrintf("value is %d",b);  

}  

int main()  
{  
    int *a;  
    cudaMalloc((void**)&a,32000*sizeof(int));  
    cudaMemset(a,1,32000*sizeof(int));  
    cudaChannelFormatDesc bit = cudaCreateChannelDesc<int>();  
    cudaBindTexture(0,ref,a,bit,32000*sizeof(int)); 
    kernel<<<1,1>>>(a);  
}
4

1 に答える 1

3

cudaMalloc関数を使用してメモリを割り当てました。で割り当てられたメモリにテクスチャをバインドすると、カーネル内cudaMallocの関数を使用してアクセスされます。tex1Dfetch()を使用tex1Dするとゼロが返されます。

cudaMallocPitchしかし、テクスチャをまたはによって割り当てられたメモリにバインドすると、カーネル内のまたは関数cudaArrayを使用してアクセスされます。tex1Dtex2D

于 2012-09-23T07:16:17.463 に答える