关于并行化的介绍性注释,特别是问题和算法的模式


10

我正在寻找在线可用的讲义或其他资源,它们对并行编程有很好的介绍,就像计算机科学中的基础类的并行模拟一样。

我的重点是以下几点:虽然我能够谈论分而治之,贪婪算法,动态编程等,即顺序算法(和问题)的基本模式,但是我没有合适的语言对并行算法中的方法进行分类。

例如,我想获得适当的用语来表达以下事实:对以下每个问题的明显并行处理具有不同的定性行为:

  1. 将整数数组设置为全零(完美缩放)。
  2. 对整数数组求和(使用的线程越多,开销越大。)
  3. 给定一个数组,将每个条目的乘积彼此列出(如果我们将规范的double-for循环并行化,则运行时间将缩放为数字处理器的sqrt。)

共享内存环境就足够了,进程间通信对我而言并不那么重要(实际上,我对完全避免这种情况的算法很感兴趣)。此外,技术方面对我来说是微不足道的。


您能重新表达一下这句话吗:“例如,我想用一种语言解释为什么对以下问题采取的明显并行方法具有不同的定性行为”
Gopi

做完了 我希望这是更准确的。
shuhalo 2011年

Answers:


6

对于并行编程入门书籍(我不了解在线资料),我一直在使用Casanova,Legrand和Robert的Parallel Algorithms进行学习,这对于理论并行算法的入门非常有帮助。

此外,在SPAA'11中讨论了并行算法和分布式计算的学生应该知道什么以及应该教什么。该并行与分布式计算课程计划,将帮助您找到一门课程,而不是课程,而不仅仅是课程。然后,我认为查找每个特定主题的文档会更容易。


1
术语“语言”是指自然语言,而不是编程语言或类似语言。就像数学是一种语言一样,例如,范畴论或群体论据称可以为某些结构,关系和事实提供“语言”。但是还是谢谢你。
shuhalo 2011年

确实,我的坏:)。然后,对于您遇到的三个问题,我真的推荐我链接的书,这是非常理论性的。他们研究了不同种类的并行体系结构上的所有种类的并行算法和技术。然后,可能回答您三个问题的部分将成为Uniform Loops
Gopi


NSF / IEEE-TCPP课程计划为+1,但是我建议您删除OpenMP和MPI,因为它们在这里并不重要。
Jukka Suomela 2011年

实际上,在@Martin发表评论后,我忘记将其删除。谢谢。
Gopi

7

如果您不想深入研究细节,Mattson,Sanders和Massingill 所著的《并行编程模式》一书对并行化设计模式做了很好的介绍。

您将找到通用的,广泛适用的并行化解决方案,甚至是OpenMP和MPI的简要介绍。本书从介绍设计模式和并发开始。然后,作者继续说明如何利用并发性,如何构造算法以及如何在考虑同步和通信的情况下实际实现算法。

同样,这不是关于并行算法的教科书。它在展示与并行软件工程严格相关的资料方面做得非常好,既注重实践又注重理论。因此,它应该完全适合您的需求。


1

MPI_RUBY ...需要找到我最新的稳定版本。我建议将并行前缀(扫描)添加到列表中。我只是教并行前缀,并向他们展示如何使用空间填充曲线来在所有对问题上获得更好的缓存效率。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.