|
所在平台: Coursera |
课程主页: https://www.coursera.org/learn/scala-parallel-programming
课程评论:没有评论
课程名称:并行编程 课程概述:随着智能手机和计算机都配备多核处理器,利用函数式理念促进并行编程的应用日益广泛。在本课程中,您将学习并行编程的基本概念,包括任务并行性与数据并行性。我们将探讨函数式编程中的许多熟悉概念如何完美地映射到数据并行范式上。课程将从如何有效地并行化常见集合操作开始,逐步构建到具有生产就绪能力的并行集合,Scala标准库中可用的数据并行集合库。我们还将通过多个实际示例来应用这些概念,分析真实世界的数据,例如流行算法 k-means 聚类。 学习成果:完成本课程后,您将能够: - 理解任务和数据并行程序; - 以函数式风格表达常见算法并进行并行求解; - 熟练进行并行代码的微基准测试; - 编写有效利用并行集合以提升性能的程序。 推荐背景:您应至少具备一年的编程经验,最好熟悉Java或C#,但掌握C/C++、Python、JavaScript或Ruby等其他语言也足够。您还应对命令行有一定的了解。建议在学习本课程之前先修完《Scala中的函数程序设计》课程(链接:https://www.coursera.org/learn/progfun2)。 课程大纲: 1. **并行编程基础**:阐述并行编程的动机,介绍在JVM和Scala上构建并行程序的基本构造。通过数组规范和蒙特卡洛计算等示例展示这些概念。教学内容包括如何估算并行程序的工作量和深度,以及如何对实现进行基准测试。 2. **基本任务并行算法**:通过呈现并行归并排序等示例继续探讨并行算法。解释映射、归约和扫描等操作如何能并行计算,并阐释关联性是实现归约和扫描的关键条件。 3. **数据并行性**:展示数据并行操作如何在Scala中开发优雅的数据并行代码。概述并行集合层次结构,包括补充顺序情况下迭代器和构造器的分割器和组合器的特性。 4. **并行计算的数据结构**:简要介绍并行计算的数据结构的内部工作原理,帮助理解并行集合背后的机制。
Name:Parallel Programming
Description:We motivate parallel programming and introduce the basic constructs for building parallel programs on JVM and Scala. Examples such as array norm and Monte Carlo computations illustrate these concepts. We show how to estimate work and depth of parallel programs as well as how to benchmark the implementations.
Name:Basic Task Parallel Algorithms
Description:We continue with examples of parallel algorithms by presenting a parallel merge sort. We then explain how operations such as map, reduce, and scan can be computed in parallel. We present associativity as the key condition enabling parallel implementation of reduce and scan.
Name:Data-Parallelism
Description:We show how data parallel operations enable the development of elegant data-parallel code in Scala. We give an overview of the parallel collections hierarchy, including the traits of splitters and combiners that complement iterators and builders from the sequential case.
Name:Data Structures for Parallel Computing
Description:We give a glimpse of the internals of data structures for parallel computing, which helps us understand what is happening under the hood of parallel collections.
With every smartphone and computer now boasting multiple processors, the use of functional ideas to facilitate parallel programming is becoming increasingly widespread. In this course, you'll learn the fundamentals of parallel programming, from task parallelism to data parallelism. In particular, you'll see how many familiar ideas from functional programming map perfectly to to the data parallel paradigm. We'll start the nuts and bolts how to effectively parallelize familiar collections operations, and we'll build up to parallel collections, a production-ready data parallel collections library available in the Scala standard library. Throughout, we'll apply these concepts through several hands-on examples that analyze real-world data, such as popular algorithms like k-means clustering. Learning Outcomes. By the end of this course you will be able to: - reason about task and data parallel programs, - express common algorithms in a functional style and solve them in parallel, - competently microbenchmark parallel code, - write programs that effectively use parallel collections to achieve performance Recommended background: You should have at least one year programming experience. Proficiency with Java or C# is ideal, but experience with other languages such as C/C++, Python, Javascript or Ruby is also sufficient. You should have some familiarity using the command line. This course is intended to be taken after Functional Program Design in Scala: https://www.coursera.org/learn/progfun2.