1. A method of selecting a preemption technique among different predetermined preemption techniques for a computation unit included in a processor in response to a preemption request to execute a second task before the computation unit finishes executing a first task, the method comprising: receiving, by a selector, the preemption request, the preemption request including a preemption latency limiting condition or a throughput overhead limiting condition; determining, by the selector, that all computation units of a plurality of computation units have been searched for preemption availability; in response to determining that all computation units of the plurality of computation units are not available for preemption, selecting, by the selector, one or more computation units for preemption; predicting, by a predictor, respective costs of each of the different predetermined preemption techniques based on a determined progress of the first task until receipt of the preemption request, wherein a cost of each different predetermined preemption technique is calculated based on a preemption latency or throughput overhead associated with a respective preemption technique of the different predetermined preemption techniques, and the different predefined preemption techniques include at least two of context switching, draining, and flushing; transmitting, by the predictor, calculated costs of each of the different predetermined preemption techniques to the selector; selecting, by the selector, one of the preemption techniques among the different predetermined preemption techniques based on the predicted costs of executing each of the different predetermined preemption techniques at a point in time of receipt of the preemption request; notifying, by the selector, a scheduler of the selected one or more computation units and the selected preemption technique; and assigning, by the scheduler, the second task to the selected one or more computation units according to the selected preemption technique.