1. A method for executing a computer application, comprising: running a computer application from a client machine, the computer application including one or more parallel computations that are too large to be computed by the client machine; sending the one or more parallel computations to a system level acceleration server; assigning, at the system level acceleration server, each of the one or more parallel computations to one of a plurality of accelerators; computing each of the one or more parallel computations in its assigned accelerator; returning computation results from the plurality of accelerators back to the system level acceleration server; and passing each of the computation results from the system level acceleration server back to the computer application running on the client machine, wherein commands and simple responses are sent between the plurality of accelerators and the computer application running on the client machine via the system level acceleration server, while bulk data is transferred directly between the plurality of accelerators and the computer application running on the client machine, bypassing the system level acceleration server by using a file system that is shared between the plurality of accelerators and the computer application running on the client machine.