def test_local_gpualloc_empty(): i = theano.tensor.iscalar() ii = theano.tensor.iscalar() # Test with vector # Should not be moved as the only client is the output a = tensor.AllocEmpty('float32')(i) f = theano.function([i], a, mode=mode_with_gpu) topo = f.maker.fgraph.toposort() assert len(topo) == 1 assert isinstance(topo[0].op, theano.tensor.AllocEmpty) # This return not initilized data, so we can only check the shape assert f(3).shape == (3, ) # Test with vector # Should be moved a = tensor.AllocEmpty('float32')(i) f = theano.function([i], a.cumsum(), mode=mode_with_gpu) topo = f.maker.fgraph.toposort() assert len(topo) == 3 assert isinstance(topo[0].op, GpuAllocEmpty) # This return not initilized data, so we can only check the shape assert f(3).shape == (3, ) # Test with matrix a = tensor.AllocEmpty('float32')(i, ii) f = theano.function([i, ii], a.cumsum(axis=0), mode=mode_with_gpu) topo = f.maker.fgraph.toposort() assert len(topo) == 3 assert isinstance(topo[0].op, GpuAllocEmpty) # This return not initilized data, so we can only check the shape assert f(3, 4).shape == (3, 4)
def test_gpuallocempty(): f_gpu = theano.function([], tensor.AllocEmpty('float32')(2,3), mode=mode_with_gpu) l_gpu = f_gpu.maker.fgraph.toposort() assert numpy.any([isinstance(x.op, basic_ops.GpuAllocEmpty) for x in l_gpu]) f_cpu = theano.function([], tensor.AllocEmpty('int32')(2,3)) l_cpu = f_cpu.maker.fgraph.toposort() assert not numpy.any([isinstance(x.op, basic_ops.GpuAllocEmpty) for x in l_cpu])
def test_local_gpualloc_empty(): i = theano.tensor.iscalar() ii = theano.tensor.iscalar() # Test with vector a = tensor.AllocEmpty('float32')(i) f = theano.function([i], a, mode=mode_with_gpu) topo = f.maker.fgraph.toposort() assert len(topo) == 2 assert isinstance(topo[0].op, GpuAllocEmpty) # This return not initilized data, so we can only check the shape assert f(3).shape == (3, ) # Test with matrix a = tensor.AllocEmpty('float32')(i, ii) f = theano.function([i, ii], a, mode=mode_with_gpu) topo = f.maker.fgraph.toposort() assert len(topo) == 2 assert isinstance(topo[0].op, GpuAllocEmpty) # This return not initilized data, so we can only check the shape assert f(3, 4).shape == (3, 4)
def expand_empty(tensor_var, size): """ Transforms the shape of a tensor from (d1, d2 ... ) to ( d1+size, d2, ..) by adding uninitialized memory at the end of the tensor. """ if size == 0: return tensor_var shapes = [tensor_var.shape[x] for x in xrange(tensor_var.ndim)] new_shape = [size + shapes[0]] + shapes[1:] empty = tensor.AllocEmpty(tensor_var.dtype)(*new_shape) return tensor.set_subtensor(empty[:shapes[0]], tensor_var)
def local_gpua_gemmbatch(node, context_name): a, b = node.inputs c = tensor.AllocEmpty(a.dtype)(a.shape[0], a.shape[1], b.shape[2]) return gpugemmbatch_no_inplace(c, 1.0, a, b, 0.0)