def test_rebroadcast(): for dtype in ["float16", "float32"]: a = rand_gpuarray(1, dtype=dtype) g = GpuArrayType(dtype=dtype, broadcastable=(False, ))("g") f = theano.function([g], Rebroadcast((0, True))(g)) assert isinstance(f.maker.fgraph.toposort()[0].op, Rebroadcast) res = f(a) assert GpuArrayType.values_eq(res, a)
def test_deep_copy(): for dtype in ["float16", "float32"]: a = rand_gpuarray(20, dtype=dtype) g = GpuArrayType(dtype=dtype, broadcastable=(False, ))("g") f = theano.function([g], g) assert isinstance(f.maker.fgraph.toposort()[0].op, DeepCopyOp) res = f(a) assert GpuArrayType.values_eq(res, a)
def test_view(): for dtype in ["float16", "float32"]: a = rand_gpuarray(20, dtype=dtype) g = GpuArrayType(dtype=dtype, broadcastable=(False, ))("g") m = theano.compile.get_default_mode().excluding("local_view_op") f = theano.function([g], ViewOp()(g), mode=m) assert isinstance(f.maker.fgraph.toposort()[0].op, ViewOp) res = f(a) assert GpuArrayType.values_eq(res, a)
def test_transfer_cpu_gpu(): a = tt.fmatrix("a") g = GpuArrayType(dtype="float32", broadcastable=(False, False))("g") av = np.asarray(rng.rand(5, 4), dtype="float32") gv = gpuarray.array(av, context=get_context(test_ctx_name)) f = theano.function([a], GpuFromHost(test_ctx_name)(a)) fv = f(av) assert GpuArrayType.values_eq(fv, gv) f = theano.function([g], host_from_gpu(g)) fv = f(gv) assert np.all(fv == av)
def test_transfer_gpu_gpu(): g = GpuArrayType(dtype="float32", broadcastable=(False, False), context_name=test_ctx_name)() av = np.asarray(rng.rand(5, 4), dtype="float32") gv = gpuarray.array(av, context=get_context(test_ctx_name)) mode = mode_with_gpu.excluding("cut_gpua_host_transfers", "local_cut_gpua_host_gpua") f = theano.function([g], GpuToGpu(test_ctx_name)(g), mode=mode) topo = f.maker.fgraph.toposort() assert len(topo) == 1 assert isinstance(topo[0].op, GpuToGpu) fv = f(gv) assert GpuArrayType.values_eq(fv, gv)
def test_transfer_strided(): # This is just to ensure that it works in theano # libgpuarray has a much more comprehensive suit of tests to # ensure correctness a = tt.fmatrix("a") g = GpuArrayType(dtype="float32", broadcastable=(False, False))("g") av = np.asarray(rng.rand(5, 8), dtype="float32") gv = gpuarray.array(av, context=get_context(test_ctx_name)) av = av[:, ::2] gv = gv[:, ::2] f = theano.function([a], GpuFromHost(test_ctx_name)(a)) fv = f(av) assert GpuArrayType.values_eq(fv, gv) f = theano.function([g], host_from_gpu(g)) fv = f(gv) assert np.all(fv == av)