Dask: много маленьких рабочих против большого рабочего - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь понять этот простой пример из документации dask-jobqueue :

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 ядру в каждом?

1 Ответ

0 голосов
/ 08 октября 2018

Если ваши вычисления в основном выпускают GIL, то вам, вероятно, понадобится несколько потоков на процесс.Это верно, если вы в основном программируете числовые данные Numpy, Pandas, Scikit-Learn, Numba / Cython.Я мог бы сделать что-то вроде шести процессов с восемью ядрами в каждом.

Если ваши вычисления в основном представляют собой чистый код Python, например, вы обрабатываете текстовые данные или интенсивно итерируете с Python для циклов по dicts / list / etc, тогда вы 'Вам понадобится меньше потоков на процесс, может быть, два.

...