我目前正在调查计算机科学研究生课程的主题,我发现了一个相对较大的兴趣领域,分布式计算,我想获得更多信息。 StackOverflow上有一些其他问题[1,2,3]可以解决类似问题,但不一定是我要提出的问题,特别是与语言相关的问题我正在寻找。
我在网上搜索过,发现了很多论文,文章甚至是课程,比如Rutgers的this课程,描述了分布式计算背后的理论和机制。不幸的是,我发现的大多数论文和课程在描述代码中的分布式计算的实际概念方面相当有限。我正在寻找可以向我介绍分布式计算的编程部分的网站。 (最好是C或Python。)
作为旁注,我想提一下,这甚至可能更具体地说明并行计算如何适应分布式计算领域。 (我还没有参加过任何一门课程!)
答案 0 :(得分:3)
Disclamer:我是SCOOP的开发者。
这真的取决于你的个性。如果您希望在开始之前获得理论信息,您应该先阅读一些书籍或先了解这些技术。涵盖该主题的很好部分的书籍清单将是:
您可能希望熟悉的基于数据的技术将是MPI标准(针对多台计算机)和OpenMP(针对单台计算机),以及内置于Python中的非常好的多处理模块。
如果您希望先弄脏手,则应从基于任务的框架开始,该框架提供简单且用户友好的用法。在创建SCOOP时,这两个都是最重要的。您可以使用pip -U scoop
进行尝试。在Windows上,您可能希望首先使用executable installers安装PyZMQ。您可以检查提供的示例并使用各种参数来了解导致性能下降或轻松增加的原因。我鼓励您将其与其替代方案进行比较,例如Celery用于类似工作,或Gevent用于协程框架。如果你觉得有冒险精神,不要害羞地测试Python的builtin coroutines functionnalities并用各种网络堆栈插入它们。
使用基于任务的框架可以减轻理论分析的负担,例如负载平衡实现细节,序列化等等,这是非常重要的,可能需要很长时间才能调试并开始工作。它提供了对分布式系统的所有理解水平。使用开源软件获得奖励:检查代码以了解引擎盖下的机械细节。
答案 1 :(得分:1)
我在一台机器上使用python的内置包有很好的经验。我的朋友在拥有128个核心的机器上使用ipython取得了巨大的成功。
现在有各种各样的分布式计算,比如集群,云或互联网上的任何机器,比如折叠@ home(包括PS3!)。不要忘记GPU!
一些Python链接:
Various Python libraries
Ipython
Python and Parallel Computing presentation