GPUSockets is an thin, lightweight layer that provides remote GPU acceleration to compute nodes that are not equipped with GPUs. This is achieved transparently to the user by pre-loading a library to intercept the actual GPU calls and translate them into remote calls. Our system consists of a user-space library and the server that accepts remote GPU calls, executes them and sends results back to the “client”. Early results are promising providing a unified execution layer for a GPU-less cluster to execute GPU-aware programs. We are in the process of evaluating the data transfer overheads and plan to add support for Infiniband adapters to benefit from GPUdirect techniques (for instance, see ib_gpudirect).
GPUSockets currently supports TCP/IP and the CUDA driver API. The code is available on github.