python 并行计算

zy1mlcev  于 2023-03-28  发布在  Python
关注(0)|答案(5)|浏览(139)

我有一个二维表格(矩阵)我需要独立处理这个矩阵中的每一行。每一行的处理都很耗时。我想使用我们大学的并行计算资源(加拿大网格什么的)
我能有一些关于如何开始的建议吗?我以前从未使用过并行计算。
谢谢:)

zbq4xfa0

zbq4xfa01#

从这里开始:http://docs.python.org/library/multiprocessing.html
请务必阅读以下内容:http://docs.python.org/library/multiprocessing.html#examples
这可能会有所帮助:http://www.slideshare.net/pvergain/multiprocessing-with-python-presentation .
虽然它非常优秀,但它包括线程和多处理,即使多处理通常远远上级尝试多线程。
对于网格计算,多线程在很大程度上是无用的。
此外,您可能还想了解celery

mefy6pfw

mefy6pfw2#

我是一个名为scoop的新库的开发者之一。
它正是为此目的(网格或超级计算、科学计算)而构建的,我建议你给予。
在您的情况下,您需要做的就是这样的调用:

futures.map(YourFunc, matrixLine)

然后,它将分布在您的网格或您选择的任何环境中。

klh5stk1

klh5stk13#

就像评论员说的那样,在你的大学里找一个人谈谈。你的问题的答案将具体到网格上安装的软件。如果你可以访问网格,那么你很可能也可以访问一个负责回答你问题的人(他们会很乐意帮助你)-找到这个人!

ecr0jaav

ecr0jaav4#

建议您使用C++/C执行此计算。您可以使用**#include头使用OpenMP API。您<omp.h>可以使用#pragma amp parallel指令启动并行区域。由于您正在并行计算用于计算矩阵乘法的for循环,您可以使用#pragma omp parallel for { }**在并行区域内启动for循环。OpenMP将自动处理进程同步。
查看以下示例代码:https://gist.github.com/metallurgix/0dfafc03215ce89fc595
记住使用一个大的矩阵来查看速度的实际改进。一个小的矩阵实际上会表现不佳,这是因为由于分叉和加入多个线程而增加了任务开销。
如果你想使用多个处理器而不是多个线程来并行化你的代码,你也可以查看MPI。

c2e8gylq

c2e8gylq5#

根据你的描述,我想说:首先看看numpy。Numpy提供了以矢量化方式计算列和行的方法,速度接近C。根据您的问题,这可能比纯CPython的并行计算更快。
你可以使用numpy-arrays的并行计算来获得一个真正大的速度提升。可能的方法是在集群上使用multiprocessingIpython

相关问题