As opposed to the Davidson implementation where each task is parallelized with OpenMP, here each OpenMP thread handles independently a task computed on a single core. Hence, there are multiple ZeroMQ clients per node, typically one per core, requesting tasks to the task server and sending the results back to the collector thread (see Fig. ). Here, all the OpenMP threads are completely independent during the whole selection, and this explains the pleasing scaling properties of our implementation, as shown in Sec. VI C. As in the Davidson distributed scheme, when the helper programs are run with MPI all the common data are communicated once from the ZeroMQ server to the rank-zero MPI process.