1. A method comprising: receiving a plurality of accelerator tasks at a computing device, wherein each accelerator task has an associated set of accelerator parameters, and wherein each accelerator task is associated with a priority that is determined based on a weighted sum of an average wait time associated with the accelerator task and an average run time associated with the accelerator task; receiving identifiers of a plurality of accelerators at the computing device; receiving identifiers of one or more available accelerators from the plurality of accelerators at the computing device, wherein an available accelerator is an accelerator from the plurality of accelerators that is not executing an accelerator task; receiving identifiers of a plurality of datablocks at the computing device, wherein each of the plurality of datablocks identifies data located at buffers on one or more of the available accelerators; determining a ready accelerator task from the plurality of accelerator tasks by the computing device, wherein the ready accelerator task is an accelerator task from the plurality of accelerator tasks that is not waiting for a datablock of the plurality of datablocks to be updated or for data to be generated by another accelerator task; determining one or more accelerators from the identified one or more available accelerators that supports the set of accelerator parameters associated with the determined ready accelerator task by the computing device; determining datablocks of the plurality of datablocks that are associated with the ready accelerator task by the computing device; selecting one of the determined one or more accelerators that uses a least amount of data transfer for the determined datablocks that are associated with the ready accelerator task; providing the ready accelerator task to the selected one of the determined one or more accelerators by the computing device; directly copying the data identified by one or more of the determined datablocks from the buffers on the one or more of the available accelerators to a buffer on the selected one of the determined one or more accelerators by the computing device; scheduling execution of the ready accelerator task on the selected one of the determined one or more accelerators by the computing device; and receiving at least one result from the selected one of the one or more determined accelerators by an operating system of the computing device.