Enabling preemptive multiprogramming on GPUs | Synapse