A method comprising: receiving, with a graphics processing unit, GPU, an indication of a first set of shader cores of a shader processor of the GPU that are reserved for executing instructions of a graphics application; receiving, with the GPU, an indication of a second, different set of shader cores of the same shader processor of the same GPU that are reserved for executing instructions of a non-graphics application; receiving, with the GPU, the instructions of the graphics application; receiving, with the GPU, the instructions of the non-graphics application; determining, with a first workload distribution unit of the GPU, which ones of the first set of shader cores execute which ones of the instructions of the graphics application; determining, with a second, different workload distribution unit of the GPU, which ones of the second set of shader cores execute which ones of the instructions of the non-graphics application; executing, with the GPU, all of the instructions of the graphics application with the first set of shader cores, and no other shader cores, based on the determination of which ones of the first set of shader cores execute which ones of the instructions of the graphics application; and at a substantially same time as executing the instructions of the graphics application, executing, with the GPU, all of the instructions of the non-graphics application with the second set of shader cores, and no other shader cores, based on the determination of which ones of the second set of shader cores execute which ones of the instructions of the non-graphics application and without inter-leaving the execution of the non-graphics application and the execution of the graphics application. receiving, with a graphics processing unit, GPU, an indication of a first set of shader cores of a shader processor of the GPU that are reserved for executing instructions of a graphics application; receiving, with the GPU, an indication of a second, different set of shader cores of the same shader processor of the same GPU that are reserved for executing instructions of a non-graphics application; receiving, with the GPU, the instructions of the graphics application; receiving, with the GPU, the instructions of the non-graphics application; determining, with a first workload distribution unit of the GPU, which ones of the first set of shader cores execute which ones of the instructions of the graphics application; determining, with a second, different workload distribution unit of the GPU, which ones of the second set of shader cores execute which ones of the instructions of the non-graphics application; executing, with the GPU, all of the instructions of the graphics application with the first set of shader cores, and no other shader cores, based on the determination of which ones of the first set of shader cores execute which ones of the instructions of the graphics application; and at a substantially same time as executing the instructions of the graphics application, executing, with the GPU, all of the instructions of the non-graphics application with the second set of shader cores, and no other shader cores, based on the determination of which ones of the second set of shader cores execute which ones of the instructions of the non-graphics application and without inter-leaving the execution of the non-graphics application and the execution of the graphics application.