Dear Mailing-Listeners!

Executing the following code (adapted from test_driver.py):

-------------------
import pycuda.driver as drv
import pycuda.gpuarray as ga
from pycuda.compiler import SourceModule 

print "pycuda.VERSION "+str(pycuda.VERSION)
print "Compute Capapility
"+str(drv.Context.get_device().compute_capability())

for tp in [numpy.float32, numpy.float64]:
    from pycuda.tools import dtype_to_ctype
    
    tp_cstr = dtype_to_ctype(tp)
    mod = SourceModule("""
    #include <pycuda-helpers.hpp>
    
    texture<fp_tex_%(tp)s, 2>my_tex;
    
    __global__ void copy_texture(%(tp)s *dest)
    {

dest[threadIdx.xthreadIdx.y*8]=fp_tex2D(my_tex,threadIdx.y,threadIdx.x);
    }
    """ % {"tp": tp_cstr})
    
    copy_texture = mod.get_function("copy_texture")
    my_tex = mod.get_texref("my_tex")
    
    shape = (8,2,)
    a = numpy.random.randn(*shape).astype(tp)
    
    a_gpu = ga.to_gpu(a)
    a_gpu.bind_to_texref_ext(my_tex, allow_double_hack=True)
    blck=shape+(1,)
    
    dest = numpy.zeros(shape, dtype=tp)
    g_dest=drv.to_device(dest)
    copy_texture.prepare("P",blck,texrefs=[my_tex])
    time=copy_texture.prepared_timed_call((1,1),g_dest)
    dest=drv.from_device(g_dest, dest.shape, dest.dtype, order='C')
    print a
    print dest

---------

returns:


pycuda.VERSION (0, 94, 2)
Compute Capapility (1, 3)
[[-0.92633218  0.20489018]
 [ 1.14500916  0.23236905]
 [ 0.43516356  0.4719891 ]
 [-0.8008799   0.81867486]
 [-0.20814744 -0.55152911]
 [ 0.81224    -1.37392473]
 [ 1.99982738  0.11174646]
 [ 0.11471771 -1.01642931]]
[[-0.92633218 -0.92633218]
 [-0.92633218 -0.92633218]
 [-0.92633218 -0.92633218]
 [-0.92633218 -0.92633218]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]]
[[ -6.39043527e-01  -1.95960158e-01]
 [  1.69915072e+00   1.16279297e+00]
 [ -4.03001846e-01  -1.23898467e+00]
 [  3.62089701e-01   1.84103824e-01]
 [  5.73958324e-01  -3.26678644e-04]
 [ -2.28391102e-01   1.59704601e+00]
 [  1.43664545e+00  -1.15527274e-01]
 [  4.74887599e-01   7.09184358e-01]]
[[-0.63904353 -0.63904353]
 [-0.63904353 -0.63904353]
 [-0.63904353 -0.63904353]
 [-0.63904353 -0.63904353]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]]

which is not what I expected, i.e. getting the same array back. The 1D
test from test_driver.py works but for 2D I probably did something
wrong. However, I have no clue what and would appreciate your help very
much.

Best wishes,

Markus


_______________________________________________
PyCUDA mailing list
PyCUDA@tiker.net
http://lists.tiker.net/listinfo/pycuda

Reply via email to