Contents
關於課程
現在每台智慧手機和電腦都以有多個處理器為豪,也因此利用平行運算( parallel programming )盡可能發揮設備功能的想法越來越甚囂塵上。 在本課程中,你將學習平行運算的基礎知識,從任務平行到資料平行。 尤其是,你會看到函數式程式設計 ( functional programming ) 中有多少熟悉的想法完美地符合資料平行範例。 我們將由本質開始介紹如何有效地平行處理熟悉的集合運算,然後建構平行集合,即 Scala 標準庫中提供的一個生產就緒的資料平行集合庫 (data parallel collections library)。 在整個過程中,我們將通過幾個動手實例來應用這些概念,這些實例分析真實世界的資料,例如像 k-means clustering 的流行演算法。
學習成果。 在完成本課程時,你將能夠:
- 了解為什麼要做任務和資料平行運算
- 以函數風格表達常用演算法並以平行運算解決
- 有能力做平行運算程式碼的微基準( microbenchmark )
- 編寫有效使用平行集合達成高效能的程式
建議背景
- 你應該至少有一年程式設計經驗。 理想上熟練 Java 或 C#,但使用其他語言如 C / C ++、Python、Javascript 或 Ruby 的經驗也足夠了解本課程。
- 你應該熟悉如何使用命令行。
- 本課程假設你已修過 Functional Program Design in Scala 後選修。
到官方網站了解本課程與上課
製作方
École Polytechnique Fédérale de Lausanne
洛桑聯邦理工學院 (EPFL) 是一個位於瑞士洛桑的研究機構和大學,專精自然科學和工程學。它是瑞士聯邦兩大兩大技術學院之一,它有三個主要使命:國際最高等級的教育、研究和技術轉讓。
EPFL 被廣泛認為是世界一流的大學。在2017/2018 QS 世界大學排名位列世界上所有領域排名第12,而 名 Times 高等教育世界大學排名 EPFL被列為世界上第11個最好的工程與技術學院。
EPFL位於瑞士的法語區 ; 瑞士德語區的姐妹機構是蘇黎世的瑞士聯邦理工學院(ETH Zurich)。與幾個專業研究機構相關聯,這兩所大學組成了瑞士聯邦技術研究所(ETH Domain),該研究所直接隸屬聯邦經濟事務,教育和研究部。關聯其研究和教學活動,EPFL 運作一個核反應堆CROCUS,一個Tokamak Fusion反應器,一個 Blue Gene / Q超級計算機和 P3 bio-hazard 設施。 (源自維基百科)



第 1 週 Parallel Programming
說明採用平行運算的好處,並介紹用 JVM 和 Scala 建構平行運算程式的基本構造。 用範例如陣列規範 ( array norm) 和蒙地卡羅 ( Monte Carlo ) 計算等例子說明了這些概念。 我們展示如何估算平行運算的工作和深度以及如何對實現進行基準 ( benchmark ) 測試。
第 2 週 Basic Task Parallel Algorithms
我們通過展示平行合併排序( parallel merge sort )來繼續之前的平行演算法的範例。 然後我們解釋如何可以平行計算諸如地圖 ( map )、縮減 ( reduce )和掃描 ( scan ) 等運作。 我們將關聯性( associativity )作為使平行執行縮減和掃描的關鍵條件。
第 3 週 Data-Parallelism
我們展示了資料平行運算如何支持在 Scala 中開發優雅的資料平行程式碼。 我們概述平行集合層次結構,包括分離器 ( splitters ) 和組合器 ( combiners ) 的特性,他們由循序案例 ( sequential case ) 補充迭代 ( iterators ) 和建構 ( builders )。
第 4 週 Data Structures for Parallel Computing
我們可以看到平行運算資料結構的內部結構,這有助於我們理解平行集合下發生的情況。