如何在Python中使用共享内存乘法3个矩阵?

2024-10-02 20:43:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在多处理方法中使用共享内存乘以3个矩阵(比如E=AxBxC)。我可以用两个矩阵来做,但是当我想对第三个矩阵重复同样的过程时,我被卡住了,不知道如何处理共享数组。 我知道我必须使用多处理阵列,但不知道如何管理它。 下面是我在代码中使用数组的方式:

mp_arr_one = multiprocessing.Array(ctypes.c_int, 3*3)

然后在我的函数中:

arr = numpy.frombuffer(mp_arr_one.get_obj(), dtype=ctypes.c_int)
res = arr.reshape((3,3))

第一部分(D=AxB)一切都很好,但是当我想计算E=DxC时,代码出错了,结果完全不正确。你知道吗

提前谢谢。你知道吗


Tags: 方法代码过程方式矩阵mp数组ctypes
1条回答
网友
1楼 · 发布于 2024-10-02 20:43:15

只需将numpy与支持多线程的优化BLAS(例如OpenBLAS、BLAS ATLAS、MKL)结合使用即可。你知道吗

矩阵乘法将被并行化,因为它包含大量依赖于体系结构的优化,这种方法将比用multiprocessing.Array显式管理Python中的共享内存更快。顺便说一句,如果速度是一个问题,即使是在单线程执行中,也没有办法解决,那么应该使用带有numpy的优化BLAS实现。你知道吗

相关问题 更多 >