1. A computer-implemented method for graphics processing unit (GPU) resource sharing among a plurality of distributed applications in a distributed computing environment comprising a plurality of computing nodes, each of the plurality of computing nodes comprising a GPU, the method comprising: receiving a first request from a first distributed application of the plurality of distributed applications for first requested GPU resources among the plurality of computing nodes, the GPU resources comprising a processor and a memory; receiving a second request from a second distributed application of the plurality of distributed applications for second requested GPU resources among the plurality of computing nodes; receiving a response from each of the plurality of computing nodes indicating an availability of GPU resources for each of the plurality of computing nodes; and responsive to determining that at least one of the first request and the second request can be fulfilled by at least one of the plurality of computing nodes, allocating a first set of GPU slices for the first application and allocating a second set of GPU slices for the second application, wherein allocating the first set of GPU slices for the first application and allocating the second set of GPU slices for the second slice is performed according to a fairness policy, wherein the fairness policy establishes that an allocated percent of the memory is less than or equal to an allocated percent of the processor.