Browse Source

Explain why StarPU eats one CPU core for each GPU

Samuel Thibault 8 years ago
parent
commit
34c335fc2f
1 changed files with 15 additions and 0 deletions
  1. 15 0
      doc/doxygen/chapters/390_faq.doxy

+ 15 - 0
doc/doxygen/chapters/390_faq.doxy

@@ -226,6 +226,21 @@ starpu_resume();
 starpu_shutdown();
 \endcode
 
+\section GPUEatingCores When running with CUDA or OpenCL devices, I am seeing less CPU cores
+
+Yes, this is on purpose.
+
+Since GPU devices are way faster than CPUs, StarPU needs to react quickly when
+a task is finished, to feed the GPU with another task (StarPU actually submits
+a couple of tasks in advance so as to pipeline this, but filling the pipeline
+still has to be happening often enough), and thus it has to dedicate threads for
+this, and this is a very CPU-consuming duty. StarPU thus dedicates one CPU core
+for driving each GPU.
+
+Such dedication is also useful when a codelet is hybrid, i.e. while kernels are
+running on the GPU, the codelet can run some computation, which thus be run by
+the CPU core instead of driving the GPU.
+
 \section CUDADrivers StarPU does not see my CUDA device
 
 First make sure that CUDA is properly running outside StarPU: build and