[英]where should I insert `os.environ[“MKL_NUM_THREADS”] = “1”`?
根據本文檔 ,我必須插入os.environ["MKL_NUM_THREADS"] = "1"
以防止numpy
使用多個內核。 但是我應該在哪里插入呢? 在numpy
之前還是在每個演員的構造中? 應該在Learner
嗎?
例如,如果我有以下三個文件,應在哪里插入?
""" learner.py """
import numpy as np
import ray
@ray.remote
class Learner:
def __init__(self):
# do something
""" worker.py """
import numpy as np
import ray
@ray.remote
class Worker:
def __init__(self):
# do something
""" main.py """
# program starts from here
import numpy as np
import ray
from learner import Learner
from worker import Worker
ray.init()
learner = Learner.remote()
worker = Worker.remote()
# do something...
如何檢查它是否按預期工作? 下面是一個快照top
從我真正的項目,在這里我插os.environ["MKL_NUM_THREADS"] = "1"
之初main.py
。 它行得通嗎?
您可以通過在top
查看並確保所有工作進程CPU利用率均未超過100%來檢查其是否正常運行。
您需要在調用ray.init()
之前進行設置,以便在派生工作進程時,環境變量會傳播到它們。
您可以通過使用MKL_NUM_THREADS=1 python script.py
啟動Python腳本來實現相同的MKL_NUM_THREADS=1 python script.py
。
請注意,當numpy
使用MKL時,此環境變量是有意義的,但是根據BLAS實現,您可能需要設置環境變量,例如OPENBLAS_NUM_THREADS=1
或OMP_NUM_THREADS=1
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.