1. A system for dynamically binding and unbinding of general purpose graphics processing unit (GP/GPU) applications, the system comprising: a memory management for tracking memory of a GPU used by an application unrelated to graphics processing tasks of the GPU; and a source-to-source compiler for identifying nested structures allocated on the GPU so that a virtual memory management tracks the nested structures, and identifies all instances where nested structures on the GPU are modified inside kernels a process for intercepting a GPU call from the application to spawn a proxy process to coordinate GPU usage on behalf of the application and when the application performs a kernel call, the proxy process inspects the parameters of the call and an address translation table and uses information of the parameters and the address translation table to perform GPU memory allocations and data transfers for restarting the application on another GPU.