为了账号安全,请及时绑定邮箱和手机立即绑定

如何确保每个工作线程只使用一个 CPU?

如何确保每个工作线程只使用一个 CPU?

宝慕林4294392 2022-09-27 16:21:41
我正在使用 ray 实现 SEED,因此,我定义了一个类,如下所示Workerimport numpy as npimport gymclass Worker:    def __init__(self, worker_id, env_name, n):        import os        os.environ['OPENBLAS_NUM_THREADS'] = '1'        self._id = worker_id        self._n_envs = n        self._envs = [gym.make(env_name)             for _ in range(self._n_envs)]    def reset_env(self, env_id):        return self._envs[env_id].reset()    def env_step(self, env_id, action):        return self._envs[env_id].step(action)除此之外,还有一个循环,在必要时调用方法以与环境交互。LeanerWorker如本文档所示,我想确保每个工作线程只使用一个 CPU 资源。以下是我的一些尝试:创建时,我设置:workernum_cpus=1worker=ray.remote(num_cpus=1)(Worker).remote(...)我检查了我的numpy配置,它给了我以下信息np.__config__.show()blas_mkl_info:不可用blis_info: 不可用openblas_info:库 = [“开放刀片”、“开放刀片”] library_dirs = [/usr/本地/库“ ] 语言 = c define_macros = [(”HAVE_CBLAS“,无)]blas_opt_info:库 = [“开放”,“开放刀片”] library_dirs = [/usr/本地/lib“] 语言 = c define_macros = [(”HAVE_CBLAS“,无)]lapack_mkl_info:不可用openblas_lapack_info:库 = [“开放刀片”、“开放刀片”] library_dirs = [/usr/本地/库] 语言 = c define_macros = [(“HAVE_CBLAS”,无)]lapack_opt_info:库 = [“开放”,“开放刀片”] library_dirs = [“/usr/本地/库”] 语言 = c define_macros = [(“HAVE_CBLAS”,无)]我注意到麻痹正在使用OpenBLAS,所以我在类中设置了上面的代码按照这个指令。os.environ['OPENBLAS_NUM_THREADS'] = '1'Worker两者都完成后,我打开了顶部,但仍然注意到每个Worker都使用CPU,与以前完全相同。我也尝试过在主python脚本的开头设置或使用,但没有任何帮助。我现在该怎么办?130%-180%os.environ['OPENBLAS_NUM_THREADS'] = '1'export OPENBLAS_NUM_THREADS=1
查看完整描述

1 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

您可以将核心固定在每个工作线程上。例如,您可以使用类似 psutil 的东西。进程().cpu_affinity([i])在每个工作线程上固定一个索引 i 内核。


此外,在固定 CPU 之前,请确保知道此 API 已将哪些 CPU 分配给了工作线程。https://github.com/ray-project/ray/blob/203c077895ac422b80e31f062d33eadb89e66768/python/ray/worker.py#L457


例:


ray.init(num_cpus=4)

@ray.remote(num_cpus=1) 

def f(): 

   import numpy 

   resources = ray.ray.get_resource_ids() 

   cpus = [v[0] for v in resources['CPU']]

   psutil.Process().cpu_affinity(cpus)   


查看完整回答
反对 回复 2022-09-27
  • 1 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号