numpy JupyterLab中计时代码的意外行为

u4dcyp6a  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(100)

我在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

wixjitnu

wixjitnu1#

结果正如上面的评论者所说,某些BLAS操作默认是多线程的,比如np.dot(参见herehere)。

相关问题