Investigate CUDA streams
To help utilize the GPU more efficiently and subsequently remove hangs (resolving #1) we want to look into incorporating CUDA streams into our GPU libraries. First looking at applying it to the beamformer library.
CUDA streams is a mechanism for task pipelining in a GPU application. The idea being that we can copy data onto the device and start it through the transpose, beamform, copy-off pipeline while starting to copy data on again for the next iteration.