射线`num_cpus`是否用于实际分配CPU?

时间:2019-07-10 12:12:43

标签: python ray

使用ray框架时,可以选择一个选项来选择此任务所需的CPU数量,如here所述。

例如:

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

但是,目前尚不清楚是否会分配实际的CPU:

  1. 将为该功能分配4个CPU(例如,使用CPU亲和力,例如taskset linux命令或cpuset docker参数)
  2. 否则,调度程序将仅在内部使用此num_cpus作为调度元数据。前任要决定他是否可以开始需要16个CPU的新任务,而剩下的只有10个CPU。该任务仍然可以访问所有CPU,并且可以“使用”比num_cpus
  3. 中请求的时间更多的CPU时间

选项2似乎更可能出现,但这未在文档中说明。 此外,GPU似乎有一种选择1,这使得调度程序的意图不清楚:

  

Ray将自动设置环境变量   该过程为CUDA_VISIBLE_DEVICES。

该进程配置为使用某个GPU(但可以通过重置CUDA_VISIBLE_DEVICES来绕过它)

那么,num_cpus在ray中如何使用?

1 个答案:

答案 0 :(得分:3)

好问题-对于CPU,该分配仅用作元数据(选项2)。对于GPU,分配既用作元数据,又提供隔离。该文档将很快更新(之后将更新答案)。