better control over threads
faster memory transfers and sync of compute