亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 tensorflow 1.14.0 中有效地使用 OpenMP 并行性

如何在 tensorflow 1.14.0 中有效地使用 OpenMP 并行性

catspeake 2022-06-14 10:11:55
我目前正在嘗試找到一種有效的方法,使用tensorflow. 根據我發現的信息,有兩種主要方法可以做到這一點。第一個是使用兩個 tensorflow 變量 intra_op_parallelism_threads 和 inter_op_parallelism_threads,然后使用此配置創建會話。第二個是使用OpenMP. 設置環境變量OMP_NUM_THREADS允許操作為進程生成的線程數量。當我發現通過 conda 和通過 pip 安裝 tensorflow 提供了兩種不同的環境時,我的問題就出現了。在conda install修改OpenMP環境變量時似乎改變了進程并行化的方式,而在“pip 環境”中似乎唯一改變它的是我之前提到的 inter/intra 配置變量。由于基準測試的原因,這導致在嘗試比較兩個安裝時遇到一些困難。如果我OMP_NUM_THREADS在 48 核處理器上設置為 1 和 inter/intra 為 16,conda install我只能得到大約 200% 的 CPU 使用率,因為大多數線程在任何給定時間都是空閑的。omp_threads = 1mkl_threads = 1os.environ["OMP_NUM_THREADS"] = str(omp_threads)os.environ["MKL_NUM_THREADS"] = str(mkl_threads)config = tf.ConfigProto()config.intra_op_parallelism_threads = 16config.inter_op_parallelism_threads = 16session = tf.Session(config=config)K.set_session(session)我希望這段代碼會產生 32 個線程,其中大部分線程在任何給定時間都在使用,而實際上它會產生 32 個線程并且一次只使用 4-5 個線程。在使用 tensorflow 之前,有沒有人遇到過類似的情況?為什么通過 conda 和通過 pip 安裝似乎會給出兩種不同的環境?通過使用前面討論的兩種方法的某種組合,是否有任何方法可以在兩次安裝上獲得可比的性能?最后,是否有更好的方法將 python 限制為特定數量的核心?
查看完整描述

2 回答

?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

回答你的第一個和最后一個問題。

是的,我在使用通過 pip 安裝的 TensorFlow 時遇到了類似的情況。您可以通過在 Linux 上使用線程關聯、numatcl 或任務集將 python 限制為特定數量的內核。

查看以下鏈接提供的詳細信息,TensorFlow 將始終生成多個線程,其中大多數默認情況下會處于休眠狀態。


查看完整回答
反對 回復 2022-06-14
?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

我認為這里的重點是 conda 使用 MKL 安裝 Tensorflow,但 pip 沒有。

OpenMP 控件僅在 MKL 中有效,在 pip install 中,OpenMP 環境變量不起作用,僅將 TFSessionConfig 設置為 intra/inter 可能會影響多線程


查看完整回答
反對 回復 2022-06-14
  • 2 回答
  • 0 關注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號