MacOS下Intel One API执行source setvars.sh时conda加载慢如何解决
问题解决方案
一、缩短终端启动时间的优化方案
方案1:改为按需加载OneAPI环境(推荐)
删掉~/.zshrc中原有的source /opt/intel/oneapi/setvars.sh相关配置,新增别名配置:
alias load_oneapi='source /opt/intel/oneapi/setvars.sh --config="/opt/intel/oneapi/config_setvars.txt" > /dev/null'
平时新终端启动不会加载OneAPI相关组件,启动时间会恢复到2-3秒的正常水平,需要使用OneAPI工具链时,执行load_oneapi手动加载环境即可。
方案2:拆分加载逻辑,仅保留必要组件
如果需要默认保留conda可用,可拆分环境加载流程,不走全量的setvars.sh:
- 先临时执行一次
source /opt/intel/oneapi/setvars.sh --config="/opt/intel/oneapi/config_setvars.txt" - 执行
conda init zsh,完成后关闭当前终端 - 打开新终端后,删掉
~/.zshrc中的source setvars.sh相关行,仅保留conda init自动生成的初始化代码块 - 若后续需要使用MKL等OneAPI其他组件,单独加载对应组件的vars脚本即可,例如:
source /opt/intel/oneapi/mkl/latest/env/vars.sh
方案3:优化配置文件减少加载项
如果一定要保留全量setvars.sh自动加载,修改config_setvars.txt,移除不必要的组件加载:
default=exclude mkl=latest # 不需要Intel Python时删除下方idp行,可大幅减少加载耗时 # idp=latest
二、补充问题解答
问题1:Python显示为conda-forge版本是否正常
该情况属于正常现象。你的.condarc配置中conda-forge渠道的排序在Intel渠道之前,conda的包优先级遵循渠道从上到下的顺序,因此会优先调用conda-forge渠道的Python版本。
如果需要默认使用Intel版Python,调整.condarc的渠道顺序,将Intel源放到conda-forge之前即可:
channels: - https://conda.anaconda.org/intel/osx-64 - conda-forge - https://conda.anaconda.org/jdblischak/osx-64 - defaults
问题2:intelpython加载慢是否和目录文件过多有关
二者存在直接关联。intelpython的vars.sh脚本运行时,会遍历安装目录下的二进制、库文件路径,更新PATH、DYLD_LIBRARY_PATH等系统环境变量,预装的第三方包越多、目录下文件总数越大,遍历耗时就越长,因此单独加载该脚本也会出现明显卡顿。
内容的提问来源于stack exchange,提问作者user1773603
相关产品推荐
相关产品推荐

