我在JupyterLab有一个项目,涉及使用SciPy最小化目标,它执行了大量的矩阵乘法。我使用%%time
来计时,它同时打印CPU和墙壁时间,这通常是相似的,但最近(iidoe.com)。两周前)我注意到在不同的优化参数设置中,墙时间大约是CPU时间的一半。特定小区的定时结果如下CPU times: total: 6min 4s Wall time: 3min 18s
但这种2倍的加速在多次运行中是一致的(以及更长的运行,例如1.5小时的CPU时间和约45分钟的停机时间,所以这不是由于随机的运行时间波动造成的)。我在代码中没有使用(甚至没有导入)multiprocessing
,也不知道Jupyter中有任何内置的多处理功能。如果我显式地使用多处理,我的代码应该得到2倍的加速,因为我的笔记本电脑有一个额外的核心,它可以使用,但我不知道这是如何自动发生的。我的问题是一般性的:JupyterLab和/或NumPy是否内置了某种多处理功能,例如默认的可用内核数量?
有关版本详细信息,运行!jupyter --version
将给出
Selected Jupyter core packages...
IPython : 8.12.0
ipykernel : 6.19.2
ipywidgets : not installed
jupyter_client : 8.1.0
jupyter_core : 5.3.0
jupyter_server : 1.23.4
jupyterlab : 3.5.3
nbclient : 0.5.13
nbconvert : 6.5.4
nbformat : 5.7.0
notebook : 6.5.4
qtconsole : not installed
traitlets : 5.7.1
我也使用NumPy版本1.23.5
和SciPy 1.10.0
。
1条答案
按热度按时间wixjitnu1#
结果正如上面的评论者所说,某些BLAS操作默认是多线程的,比如
np.dot
(参见here和here)。