7

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

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

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

4

2 回答 2

3

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 上,您可能希望首先使用其可执行安装程序安装 PyZMQ 。您可以检查提供的示例并使用各种参数来轻松了解导致性能下降或提高的原因。我鼓励你将它与它的替代品进行比较,例如用于类似工作的Celery或用于协程框架的Gevent 。如果您喜欢冒险,请不要羞于测试内置的协程功能Python 并将它们插入各种网络堆栈。

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

于 2012-08-31T02:13:09.723 回答
1

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

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

一些 Python 链接:
各种 Python 库
Ipython
Python 和并行计算演示

于 2012-08-31T02:00:54.937 回答