2016-11-03 4 views
1

Некоторые ресурсы, такие как графические процессоры или определенные хранилища данных, лучше всего использовать исключительно, то есть один клиент за раз.Dask - эксклюзивный доступ к ресурсам?

Dask поддерживает выбор подмножества работников по имени 1 (псевдонимы), поэтому я могу ограничить работу графического процессора сотрудниками графического процессора.

В этом случае, как заблокировать ресурсы? То есть данный работник должен выполнять только одну задачу одновременно, даже когда две отдельные клиенты представляют работу.

ответ

0

Лучший способ справиться с этим сегодня является создание отдельного работника с одного потока для каждого GPU

[email protected]$ dask-worker scheduler:8786 
[email protected]$ dask-worker scheduler:8786 --nthreads 1 --name gpu-1 

[email protected]$ dask-worker scheduler:8786 
[email protected]$ dask-worker scheduler:8786 --nthreads 1 --name gpu-2 

[email protected]$ dask-worker scheduler:8786 
[email protected]$ dask-worker scheduler:8786 --nthreads 1 --name gpu-3 

и представить некоторые задачи для всего кластера и другие задачи, только тех работников GPU

>>> gpu_workers = ['gpu-1', 'gpu-2', 'gpu-3'] 

>>> client = Client('scheduler:8786') 

>>> data = client.map(load, filenames) 
>>> futures = client.map(process, data, workers=gpu_workers) 

(см data locality docs новые способы представить задачи некоторых машин

Это меньше, чем идеал несколькими способами:

  1. Мы не будем перемещать данные по границе процесса без необходимости, чтобы перейти к специальному процессу владения GPU. Трек dask/distributed #400, который должен в конечном итоге решить эту проблему.
  2. Вы должны сами сохранить список сотрудников gpu. Трек dask/distributed #505, который должен устранить этот вопрос
Смежные вопросы