Initial CUDA implementation
Add basic timing back to sequential implementation