Dask:许多小工人与大工人

Dask: many small workers vs a big worker

我试图从 dask-jobqueue documentation 中理解这个简单的例子:

from dask_jobqueue import PBSCluster

cluster = PBSCluster(cores=36,
                    memory"100GB",
                    project='P48500028',
                    queue='premium',
                    walltime='02:00:00')

cluster.start_workers(100)  # Start 100 jobs that match the description above

from dask.distributed import Client
client = Client(cluster)    # Connect to that cluster

我认为这意味着将有 100 个作业,每个作业使用 36 个内核。

假设我可以在一个集群上使用 48 个内核。

我应该使用 1 个 48 个核心的工作器还是 48 个每个 1 个核心的工作器?

如果您的计算主要释放 GIL,那么您可能希望每个进程有多个线程。如果您主要使用 Numpy、Pandas、Scikit-Learn、Numba/Cython 对数字数据进行编程,那么这是正确的。我可能会做一些事情,比如六个进程,每个进程有八个核心。

如果您的计算主要是纯 Python 代码,例如您处理文本数据,或使用 Python for 循环大量迭代 dicts/list/etc,那么您需要更少的线程过程,也许两个。