1. A graphics processing unit controller configured to be communicatively coupled to at least one graphics processing unit of a plurality of graphics processing units and at least one virtual machine, the graphics processing unit controller comprising: a processor configured to: store information regarding available shared resources of the graphics processing units; receive a request for execution of a compute kernel, wherein the compute kernel is scheduled to access one or more of the available shared resources; determine, for one or more of the graphics processing units, an interference measure indicating a likelihood of a conflict of the shared resources between the compute kernel and at least one compute kernel already being executed by a respective graphics processing unit, the interference measure being based on patterns of usage of the shared resources by the compute kernel and the at least one compute kernel already being executed by the respective graphics processing unit; generate a likelihood of interference list ordering the graphics processing units based on the interference measure between the compute kernel and the at least one compute kernel already being executed by the respective graphics processing unit, wherein the likelihood interference list is ordered from lowest risk of interference to highest risk of interference; determine whether the compute kernel can execute on the respective graphics processing unit, in response to the receipt of the request for the execution of the compute kernel and in sequence of the likelihood interference list, wherein the determining whether the compute kernel can execute on the respective graphics processing unit is based on a comparison between the available resources of the respective graphics unit and required resources for the execution of the compute kernel; allocate at least part of the respective graphics processing unit for the execution of the compute kernel if the respective graphics processing unit is determined to execute the compute kernel; and execute the compute kernel on the respective graphics processing unit, wherein the compute kernel accesses the available shared resources of the respective graphics processing unit.