Dask-独占资源访问?

Dask-独占资源访问?,dask,Dask,某些资源(如GPU或某些数据存储)的最佳利用方式是独占,即一次使用一个客户机 Dask支持按名称(别名)选择一个子集,因此我可以将GPU工作限制为GPU工作 在这种情况下,如何锁定资源?也就是说,一个给定的辅助进程一次只能运行一个任务,即使两个独立的客户端提交了工作。现在处理这个问题的最好方法是为每个GPU创建一个单独的辅助进程,每个辅助进程都有一个线程 user@host1$ dask-worker scheduler:8786 user@host1$ dask-worker schedule

某些资源(如GPU或某些数据存储)的最佳利用方式是独占,即一次使用一个客户机

Dask支持按名称(别名)选择一个子集,因此我可以将GPU工作限制为GPU工作


在这种情况下,如何锁定资源?也就是说,一个给定的辅助进程一次只能运行一个任务,即使两个独立的客户端提交了工作。

现在处理这个问题的最好方法是为每个GPU创建一个单独的辅助进程,每个辅助进程都有一个线程

user@host1$ dask-worker scheduler:8786
user@host1$ dask-worker scheduler:8786 --nthreads 1 --name gpu-1

user@host2$ dask-worker scheduler:8786
user@host2$ dask-worker scheduler:8786 --nthreads 1 --name gpu-2

user@host3$ dask-worker scheduler:8786
user@host3$ 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)
(有关向某些计算机提交任务的更多方法,请参阅

这在以下几个方面不太理想:

  • 我们将不必要地跨进程边界移动数据,以到达拥有特殊GPU的进程。跟踪最终应解决此问题的进程
  • 您必须自己维护gpu工作人员的列表。跟踪应该解决此问题的人员

  • 现在处理这个问题的最好方法是为每个GPU创建一个单独的工作线程

    user@host1$ dask-worker scheduler:8786
    user@host1$ dask-worker scheduler:8786 --nthreads 1 --name gpu-1
    
    user@host2$ dask-worker scheduler:8786
    user@host2$ dask-worker scheduler:8786 --nthreads 1 --name gpu-2
    
    user@host3$ dask-worker scheduler:8786
    user@host3$ 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)
    
    (有关向某些计算机提交任务的更多方法,请参阅

    这在以下几个方面不太理想:

  • 我们将不必要地跨进程边界移动数据,以到达拥有特殊GPU的进程。跟踪最终应解决此问题的进程
  • 您必须自己维护gpu工作人员的列表。跟踪应该解决此问题的人员