Parallel C++: Efficient and Scalable High-Performance Parallel Programming Using Hpx
Diehl, Patrick, Brandt, Steven R., Kaiser, Hartmut
相關主題
商品描述
This textbook focuses on practical parallel C++ programming at the graduate student level. In particular, it shows the APIs and related language features in the C++ 17 and C++ 20 standards, covering both single node and distributed systems. It shows that with the parallel features in the C++ 17 and C++ 20 standards, learning meta-languages like OpenMP is no longer necessary. Using the C++ standard library for parallelism and concurrency (HPX), the same language features can be extended to distributed codes, providing a higher-level C++ interface to distributed programming than the Message Passing Interface (MPI).
The book starts with the single-threaded implementation of the fractal sets, e.g. Julia set, and Mandelbrot set, using the C++ Standard Library (SL)'s container and algorithms. This code base is used for parallel implementation using low-level threads, asynchronous programming, parallel algorithms, and coroutines. The asynchronous programming examples are then extended to distributed programming using the C++ standard library for parallelism and concurrency (HPX). Octo-Tiger, an astrophysics code for stellar merger, is used as a showcase for a portable, efficient, and scalable high-performance application using HPX.
The book's core audience is advanced undergraduate and graduate students who want to learn the basics of parallel and distributed C++ programming but are not computer science majors. Basic C++ knowledge, like functions, classes, loops, and conditional statements, is assumed as a requirement, while C++ advanced topics, like generic programming, lambda functions, smart pointers, and move semantics, are briefly summarized in the appendix.
商品描述(中文翻譯)
本教科書專注於研究生層級的實用平行 C++ 程式設計。特別是,它展示了 C++ 17 和 C++ 20 標準中的 API 及相關語言特性,涵蓋單節點和分散式系統。它顯示,隨著 C++ 17 和 C++ 20 標準中的平行特性,學習像 OpenMP 這樣的元語言已不再必要。使用 C++ 標準庫進行平行性和併發性(HPX),相同的語言特性可以擴展到分散式程式碼,提供比訊息傳遞介面(MPI)更高層次的 C++ 分散式程式設計介面。
本書從使用 C++ 標準庫(SL)的容器和演算法實現的單執行緒分形集開始,例如 Julia 集和 Mandelbrot 集。這個程式碼基礎用於使用低階執行緒、非同步程式設計、平行演算法和協程的平行實現。然後,非同步程式設計範例擴展到使用 C++ 標準庫進行平行性和併發性的分散式程式設計(HPX)。Octo-Tiger,一個用於恆星合併的天體物理程式,作為使用 HPX 的可攜式、高效能和可擴展的高效應用程式的展示。
本書的核心讀者是希望學習平行和分散式 C++ 程式設計基礎的高年級本科生和研究生,但並非計算機科學專業。假設具備基本的 C++ 知識,如函數、類別、迴圈和條件語句,而 C++ 的進階主題,如泛型程式設計、lambda 函數、智能指標和移動語義,則在附錄中簡要總結。
作者簡介
Patrick Diehl is a faculty member at the Department of Physics & Astronomy at Louisiana State University (LSU) and a senior research scientist at LSU's Center for Computation and Technology (CCT). His research interests are computational fracture mechanics, scientific computing, and high-performance computing. Next to research, he is devoted to teaching C++ and parallel programming to students and the community.
Steven R. Brandt is the Assistant Director for Computational Science at the Center for Computation and Technology at LSU. His research interests include parallel programming, parallel languages and tools, science gateways, and high performance computing (HPC). He has served as PI on several grants supporting the Einstein Toolkit, a widely used open source project for studying numerical relativity.
Hartmut Kaiser is a faculty member at the CS and EE departments at Louisiana State University (LSU) and a senior research scientist at LSU's Center for Computation and Technology (CCT). He is probably best known for his involvement in open source software projects, such as being the author of several C++ libraries he has contributed to Boost, which are in use by thousands of developers worldwide. His current research is focused on leading the STEAR group at CCT working on the practical design and implementation of future execution models and programming methods.
作者簡介(中文翻譯)
Patrick Diehl 是路易斯安那州立大學 (LSU) 物理與天文學系的教職員,並且是 LSU 計算與技術中心 (CCT) 的高級研究科學家。他的研究興趣包括計算斷裂力學、科學計算和高效能計算。除了研究,他還致力於教授 C++ 和平行程式設計給學生和社區。
Steven R. Brandt 是 LSU 計算與技術中心的計算科學助理主任。他的研究興趣包括平行程式設計、平行語言和工具、科學網關以及高效能計算 (HPC)。他曾擔任多個支持愛因斯坦工具包的計畫負責人,該工具包是一個廣泛使用的開源專案,用於研究數值相對論。
Hartmut Kaiser 是路易斯安那州立大學 (LSU) 計算機科學與電子工程系的教職員,並且是 LSU 計算與技術中心 (CCT) 的高級研究科學家。他可能最為人知的是他參與開源軟體專案,例如他是多個 C++ 函式庫的作者,這些函式庫已經被全球數千名開發者使用。他目前的研究專注於領導 CCT 的 STEAR 團隊,致力於未來執行模型和程式設計方法的實際設計與實施。