回答问题

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

前任:

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

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

  1. 该函数将被分配4CPUs(例如使用 CPU 亲和性,如tasksetlinux 命令或cpusetdocker 参数)

2.或者调度器将只在内部使用这个num_cpus,作为调度元数据。让 ex 决定他是否可以开始一个需要 16 个 cpu 的新任务,其中只剩下 10 个。该任务仍然可以访问所有 CPU,并且可以“使用”比num_cpus中请求的更多 CPU 时间

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

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

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

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

Answers

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

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐