При использовании каркаса лучей есть возможность выбрать количество процессоров, необходимых для этой задачи, как объяснено здесь .
Ex:
@ray.remote(num_cpus=4)
def f():
return 1
Однако неясно, будет ли фактическое выделение ЦП:
- Функция будет выделена
4
ЦП (например, с использованием привязки к ЦП, как в команде taskset
linux или аргументе cpuset
docker)
- Или планировщик будет использовать этот
num_cpus
только для внутреннего использования в качестве метаданных планирования. Для бывшего, чтобы решить, может ли он начать новую задачу, требующую 16 процессоров, где осталось только 10. Задача по-прежнему будет иметь доступ ко всем процессорам и может «использовать» больше процессорного времени, чем запрошено в num_cpus
Вариант 2 представляется более вероятным, но это не указано в документации.
И, кроме того, кажется, что для графических процессоров существует своего рода вариант 1, из-за которого намерения планировщика неясны:
Рэй автоматически установит переменную окружения
CUDA_VISIBLE_DEVICES для этого процесса.
Процесс настроен на использование определенного графического процессора (но может обойти его, сбросив CUDA_VISIBLE_DEVICES
)
Итак, как используется num_cpus
в луче?