簡體   English   中英

我應該在哪里插入“ os.environ [“ MKL_NUM_THREADS”] =“ 1”?

[英]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=1OMP_NUM_THREADS=1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM