Theano/Theano — pull request #962 by mrocklin (2012-09-26 22:58:03+00:00)
Title: Asynchronous GPU

This pull request introduces safe asynchronous GPU computation and communication. It uses [cudaEvents](http://developer.download.nvidia.com/compute/cuda/4_2/rel/toolkit/docs/online/group__CUDART__EVENT.html) for synchronization.

TODO

1. Test current implementation
2. ~~Create a local optimization to perform the split~~
3. ~~Create a PyObject to wrap `cudaEvent_t`~~
4. Add more inputs/outputs to Waits/Sends to handle garbage collection
5. ~~Register the optimization correctly~~ (should make an async tag?)
6. ~~Add destructor and reference counting to cudaEvent PyObj~~
7. ~~Remove old sync calls~~
8. ~~Replace sync communication kernel calls with async ones~~
9. ~~Schedule Async ops so that sends happen early and waits happen late.~~

This replaces https://github.com/Theano/Theano/pull/922