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,那么您需要更少的线程过程,也许两个。
我试图从 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,那么您需要更少的线程过程,也许两个。