Add GpuSubtensor.
Fix the DeepCopyOp code so that it doesn't use generic names.
Enable the caching to GpuSubtensor.
Enable fusion of GpuElemwise ops.
Allow subclasses of _tensor_py_operators to wrap the results in their own type.
Clean up unneeded stuff in _operators and use the new wrapping facility.
Mirror tensor and move the subtensor op in its own file.
Move the test for DeepCopyOp to a new test_type.py file since its code is defined in type.py.
Use x.zeros_like().
Rewrite GpuElemwise to be more like the tensor version and much cleaner.
Enable support for inplace Elemwise (and optimizations to use it).
Rename optimization to gpua_ to avoid conflicts with the cuda module.
Add tests for GpuElemwise (inplace and non-inplace).
New algortihm for the perform that avoids one of the reshapes.
Add GpuDimShuffle (both the C and python versions).
Make sure to hide the c_code for GpuElemwise.
Update to the new signature for new_GpuArray().
Add optimisations for GpuDimShuffle and SpecifyShape.
Make sure to properly hide the tensro C implementations.
Make local_dimshuffle_lift work with subclasses for DimShuffle.