1. A system for dynamically binding and unbinding of graphics processing unit GPU applications, the system comprising: a memory management for tracking memory of a GPU used by an application; and a source-to-source compiler for identifying nested structures allocated on the GPU so that the virtual memory management can track these nested structures, and identifying all instances where nested structures on the GPU are modified inside kernels.