【问题标题】:Where to begin with Distributed Computing / Parallel Processing? (Python / C) [closed]从哪里开始使用分布式计算/并行处理? (Python / C)[关闭]
【发布时间】:2012-08-31 01:38:06
【问题描述】:

我目前正在研究计算机科学研究生的主题,我发现了一个相对较大的兴趣领域,即分布式计算,我想了解更多信息。 StackOverflow 上还有一些其他问题 [1,2,3] 解决了类似的问题,但不一定是我要问的问题,特别是与我正在寻找的语言有关。

我在网上搜索了很多论文、文章甚至课程,例如罗格斯大学的this 课程,描述了分布式计算背后的理论和机制。不幸的是,我发现的这些论文和课程中的大多数都相当有限地在代码中描述了分布式计算的实际概念。我正在寻找可以向我介绍分布式计算的编程部分的网站。 (最好使用 C 或 Python。)

作为旁注,我想提一下,这甚至可能更具体地针对并行计算如何融入分布式计算领域。 (我还没有上过任何一门课程!)

【问题讨论】:

  • 仅供参考,您可以使用 Python 和 C/C++!您可以使用 python 进行高级管理,使用 Cython 包装或生成的 C/C++ 来提高速度。这样你就两全其美了!
  • IEEE频谱中有一篇优秀的文章:The Trouble With Multicore。尤其是它描述的how to parallelize the computation of PI 的示例,我发现对于如何思考问题以便能够并行化它们非常有帮助。

标签: python c parallel-processing distributed-computing


【解决方案1】:

Disclamer:我是 SCOOP 的开发者。

这真的取决于你的个性。如果您更喜欢在继续前进之前获得理论信息,您应该先阅读一些书籍或了解技术。涵盖该主题大部分内容的书籍清单将是:

  • 多核和集群系统的并行编程,作者:Thomas Rauber 和 Gudula Rünger(Springer-Verlag)。
  • 并行编程原理 Calvin Lin 和 Lawrence Snyder (Addison-Wesley)
  • Timothy G. Mattson 等人的并行编程模式。 (艾迪生-韦斯利)

您可能想了解的基于数据的技术是 MPI 标准(适用于多台计算机)和 OpenMP(适用于单台计算机),以及 Python 中内置的相当不错的多处理模块。

如果您喜欢先动手,您应该从基于任务的框架开始,它提供了简单且用户友好的用法。在创建SCOOP 时,这两个都是最大的焦点。你可以试试pip -U scoop。在 Windows 上,您可能希望首先使用他们的executable installers 安装 PyZMQ。您可以检查提供的示例并使用各种参数来轻松了解导致性能下降或增加的原因。我鼓励你将它与它的替代品进行比较,例如类似工作的 Celery 或协同程序框架的 Gevent。如果您喜欢冒险,请不要羞于测试 Python 的 builtin coroutines functionnalities 并将它们插入各种网络堆栈。

使用基于任务的框架将减轻您的理论分析负担,例如负载平衡实现细节、序列化等,这些都是非常重要的,并且可能需要很长时间才能调试和开始工作。它提供了对分布式系统的所有期望级别的理解。开源软件的好处:检查代码以了解底层机械细节。

【讨论】:

  • 非常有帮助。我一定会检查这些文本!
【解决方案2】:

我在单台机器上使用 python 的内置包有很好的经验。我的朋友在一台 128 核的机器上使用 ipython 取得了巨大的成功。

现在有不同类型的分布式计算,如集群、云或互联网上的任何机器,如 fold@home(包括 PS3!)不要忘记 GPU!

一些 Python 链接:
Various Python libraries
Ipython
Python and Parallel Computing presentation

【讨论】:

  • 演示文稿显示了很多我正在寻找的相关信息。您不会碰巧知道任何其他类似但与 IPython 无关的材料,对吗?
  • @AlexWilliams,我什么都不知道。
猜你喜欢
  • 2011-02-18
  • 2013-02-07
  • 1970-01-01
  • 2010-12-25
  • 2015-01-08
  • 2010-09-30
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
相关资源
最近更新 更多