gpt4 book ai didi

python - 是否有可能知道哪些 SciPy/NumPy 函数在多核上运行?

转载 作者:太空狗 更新时间:2023-10-30 03:06:51 26 4
gpt4 key购买 nike

我试图明确地弄清楚 SciPy/NumPy 中的哪些函数在多个处理器上运行。我可以,例如在 SciPy 引用手册中读到 SciPy 使用它,但我更感兴趣的是究竟哪些函数运行并行计算,因为并非所有函数都这样做。理想情况当然是在您键入 help(SciPy.foo) 时包含它,但情况似乎并非如此。

任何帮助将不胜感激。

最好的,

马蒂亚斯

最佳答案

我认为这个问题最好针对您使用的 BLAS/LAPACK 库而不是 SciPy/NumPy。

一些 BLAS/LAPACK 库,例如 MKL ,在其他实现可能不会使用的地方原生使用多核。

scipy.linalg.solve为例,其源代码如下(为清楚起见省略了一些错误处理代码):

def solve(a, b, sym_pos=0, lower=0, overwrite_a=0, overwrite_b=0,
debug = 0):
if sym_pos:
posv, = get_lapack_funcs(('posv',),(a1,b1))
c,x,info = posv(a1,b1,
lower = lower,
overwrite_a=overwrite_a,
overwrite_b=overwrite_b)
else:
gesv, = get_lapack_funcs(('gesv',),(a1,b1))
lu,piv,x,info = gesv(a1,b1,
overwrite_a=overwrite_a,
overwrite_b=overwrite_b)

if info==0:
return x
if info>0:
raise LinAlgError, "singular matrix"
raise ValueError,\
'illegal value in %-th argument of internal gesv|posv'%(-info)

如您所见,它只是两个 LAPACK 函数系列(以 DPOSVDGESV 为例)的薄包装器。

在 SciPy 级别没有并行性,但您可以在系统上使用多个内核观察该函数。唯一可能的解释是您的 LAPACK 库能够使用多个内核,无需 NumPy/SciPy 做任何事情来实现这一点

关于python - 是否有可能知道哪些 SciPy/NumPy 函数在多核上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6941459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com