gpt4 book ai didi

python - numpy 矩阵 mult 在 HPC 上并行化时不起作用

转载 作者:行者123 更新时间:2023-12-03 16:58:15 25 4
gpt4 key购买 nike

我有两个大小为 (2500, 208) 和 (208, 2500) 的密集矩阵。我想计算他们的产品。当它是单个进程时,它运行良好且快速,但当它处于多处理块中时,进程会在那里停留数小时。我做更大尺寸的稀疏矩阵乘法,但我没有问题。我的代码如下所示:

with Pool(processes=agents) as pool:
result = pool.starmap(run_func, args)
def run_func(args):
#Do stuff. Including large sparse matrices multiplication.
C = np.matmul(A,B) # or A.dot(B) or even using BLASS library directly dgemm(1, A, B)
#Never go after the line above!

注意当函数 run_func在单个进程中执行,然后它工作正常。当我在本地机器上进行多处理时,它工作正常。当我在 HPC 上进行多处理时,它卡住了。我这样分配我的资源: srun -v --nodes=1 --time 7-0:0 --cpus-per-task=2 --nodes=1 --mem-per-cpu=20G python3 -u run.py 2其中最后一个参数是 agents的数量在上面的代码中。这是 HPC 上支持的 LAPACK 库详细信息(从 numpy 获得):
    libraries = ['mkl_rt', 'pthread']
library_dirs = ['**/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['**/include']
blas_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['**lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['**/include']
lapack_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['**/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['**/include']
lapack_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['**/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['**/include']
与我的本地机器相比,HPC 上的所有 python 包和 python 版本都是相同的。关于发生了什么的任何线索?

最佳答案

作为一种解决方法,我尝试了多线程而不是多处理,现在问题已解决。我不确定多处理背后的问题是什么。

关于python - numpy 矩阵 mult 在 HPC 上并行化时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65346545/

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