Problem reading values back from texture Memory


I’m trying to write a simple program that binds texture memory. And then read the values back from the texture memory

But when I try to do this the read back values are all different.

Seems like I’m making a mistake with cudaBindTexture.

Please take a look and let me know where I’m going wrong

I have attached the files also

thanks in advance

// Utilities and system includes

#include <shrUtils.h>

#include <cutil_inline.h>

#include ""

// Allocates an array with random float entries.

void randomInit_float(float* data, int size, float min, float max)


	for (int i = 0; i < size; ++i)

 	data[i] = ((max-min)*((float)rand()/RAND_MAX))+ min;


// main


main( int argc, char** argv) 


	int size_a, size_b ; 


	// host side variables

	float *h_vector_gold, *h_vector_tex;

	// device side variables 

	float *d_vector_tex ;

	int mem_size_vector;

	size_a = 8;

	size_b = 16 ;


	mem_size_vector = size_a * size_b * sizeof(float);


	// allocate host side memory

	h_vector_gold = (float*) malloc(mem_size_vector);

	h_vector_tex = (float*) malloc(mem_size_vector);


	// allocate device side memory

	cutilSafeCall(cudaMalloc((void**) &d_vector_tex, mem_size_vector));


	// set seed for rand()


	// loading gold vector with random values

	randomInit_float(h_vector_gold, size_a * size_b , 0.0, 1.0);


	cudaBindTexture( NULL, tex_A, h_vector_gold, mem_size_vector);

	dim3 grid(128/8);

	dim3 threads(8);




	cutilSafeCall( cudaMemcpy(h_vector_tex,d_vector_tex, mem_size_vector, cudaMemcpyDeviceToHost) );



	for(int i=0; i<128;i++)

		printf("\n%d\t%f\t%f", i, h_vector_gold[i], h_vector_tex[i]);



	// cleanup







	return 0;


#include <cuda_runtime.h>

#include <cuda.h>

texture<float> tex_A;

__global__ void

test_tex( float* vector)				



	// Block index

	int bx = blockIdx.x;



	// Thread index

	int tx = threadIdx.x;


	// Index processed by the block

	int index = 8 * bx + tx;

	vector[index] = tex1Dfetch(tex_A,index);



Makefile.txt (1.91 KB) (1.5 KB) (331 Bytes)