Simcuda: A C++ Based Cuda Simulation Framework