Луч `num_cpus` используется для фактического распределения процессоров? - PullRequest
3 голосов
/ 10 июля 2019

При использовании каркаса лучей есть возможность выбрать количество процессоров, необходимых для этой задачи, как объяснено здесь .

Ex:

@ray.remote(num_cpus=4)
def f():
    return 1

Однако неясно, будет ли фактическое выделение ЦП:

  1. Функция будет выделена 4 ЦП (например, с использованием привязки к ЦП, как в команде taskset linux или аргументе cpuset docker)
  2. Или планировщик будет использовать этот num_cpus только для внутреннего использования в качестве метаданных планирования. Для бывшего, чтобы решить, может ли он начать новую задачу, требующую 16 процессоров, где осталось только 10. Задача по-прежнему будет иметь доступ ко всем процессорам и может «использовать» больше процессорного времени, чем запрошено в num_cpus

Вариант 2 представляется более вероятным, но это не указано в документации. И, кроме того, кажется, что для графических процессоров существует своего рода вариант 1, из-за которого намерения планировщика неясны:

Рэй автоматически установит переменную окружения CUDA_VISIBLE_DEVICES для этого процесса.

Процесс настроен на использование определенного графического процессора (но может обойти его, сбросив CUDA_VISIBLE_DEVICES)

Итак, как используется num_cpus в луче?

1 Ответ

3 голосов
/ 13 июля 2019

Хороший вопрос - для процессоров распределение используется только в качестве метаданных (вариант 2).Для графических процессоров распределение используется как метаданные, а также обеспечивает изоляцию.Документы будут обновлены очень скоро (и обновят ответ позже).

...