Patent ID: 8373710

Claim:
A method of performing a calculation in a computing system comprising a plurality of graphics processing units (GPUs) and one or more, central processing units (CPUs), the method comprising: registering a requested calculation to be performed on data from a data store, the registering comprising: receiving an algorithm for performing the requested calculation; identifying characteristics of the plurality of GPUs in the computing system; determining a set of calculation operations sufficient to perform the requested calculation and capable of execution by the computing system, wherein the set of calculation operations comprises: a set of coordination operations capable of execution by the one or more CPUs; and a first set of atomic operations capable of execution by the plurality of GPUs; for each GPU in the plurality of GPUs: allocating a second set of atomic operations to the GPU based on the characteristics of the GPU, wherein the second set of atomic operations comprises a distinct subset of the first set of atomic operations; performing the requested calculation using the plurality of GPUs to generate one or more calculation results, wherein performing the requested calculation comprises: causing each GPU in the plurality of GPUs to execute the second set of atomic operations allocated to the GPU in a substantially concurrent manner; and executing the coordination operations using the one or more CPUs, wherein executing the coordination operations comprises: receiving sub-results from execution of the first set of atomic operations by the plurality of GPUs; and calculating the one or more calculation results of the requested calculation based on the received sub-results; and returning the one or more calculation results of the requested calculation.