1. A computer system for performing a data manipulation function, the computer system comprising: an operating system comprising a software library, the software library having an algorithm configured to perform the data manipulation function; a specialized hardware device configured to perform the data manipulation function; and a processor configured to: receive a request from an application to perform the data manipulation function; based on determining that the specialized hardware device configured to perform the data manipulation function is available, determine if executing the request on the specialized hardware device is viable by determining if an overhead associated with sending the request to the specialized hardware device outweighs a cost of executing the request by executing the specialized hardware device algorithm configured to perform the data manipulation function stored in the software library, wherein determining if executing the request on the specialized hardware device is viable further comprises determining if a size of data associated with the request is larger than an adjustable threshold size for deciding between using the algorithm configured to perform the data manipulation function and the specialized hardware device, and wherein the adjustable threshold size is set by the algorithm configured to perform the data manipulation function and is used for determining if executing the request on the specialized hardware device is viable rather than using a threshold provided by the specialized hardware device; based on determining that executing the request on the specialized hardware device is viable, execute the request on the specialized hardware device; and based on determining that executing the request on the specialized hardware device is not viable, execute the request by executing the algorithm configured to perform the data manipulation function stored in the software library.