Updates: -usage of structs for variable handling -capsulated the functions and cuda kernels more for easier unit testing -added more unit test cases for the existing tests -better handling of cuda kernel error checks -using cmake compiler flags for debug and timer functions