1. A method of selecting a preemption technique for a computation unit included in a processor to execute a second task before the computation unit finishes executing a first task, the method comprising: receiving a preemption request; predicting a cost of preemption techniques based on a progress of the first task until receipt of the preemption request; and selecting one of the preemption techniques based on the predicted cost.