'Return a view: ary, where ary.size <= self.size.
Allows easy sharing of temporary memory'

def share(self, shape, dtype=None, name=None):

    size = np.prod(shape)
    if (size > self.size):
        raise ValueError('total    size    of    new    array    must    <=    size    of    parent')
    if (not self.is_contiguous):
        raise TypeError('sharing    of    non-contigous    arrays    is    not    yet    supported')
    if (dtype is None):
        dtype = self.dtype
    else:
        dtype = np.dtype(dtype)
    new_base = (self if (self.base is None) else self.base)
    return self.__class__(backend=self.backend, shape=shape, dtype=dtype, allocator=self.allocator, base=new_base, gpudata=self.gpudata, strides=_contiguous_strides(shape), name=name, rounding=self.rounding)
