我正在使用 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
如何確保每個工作線程只使用一個 CPU?
寶慕林4294392
2022-09-27 16:21:41
