Awesome
Awesome Parallel Computing Resources <img align="right" width="20%" src="parallel-computing.jpg">
A curated list of awesome parallel computing resources. Please feel free to update this page through submitting pull requests or emailing me.
Table of Contents
All the lists in this page are either in alphabetical order or chronological order.
Software
Programming Library
- CAF: An Open Source Implementation of the Actor Model in C++
- CGraph: A cross-platform DAG framework based on C++17
- Chapel: A Programming Language for Productive Parallel Computing on Large-scale Systems
- Charm++: A Parallel Programming Framework
- Cilk Plus: C/C++ Extension for Data and Task Parallelism
- Taskflow: A Modern C++ Parallel Task Programming Library
- FastFlow: High-performance Parallel Patterns in C++
- Galois: A C++ Library to Ease Parallel Programming with Irregular Parallelism
- Heteroflow: Concurrent CPU-GPU Task Programming using Modern C++
- HPX: A C++ Standard Library for Concurrency and Parallelism
- Intel TBB: Threading Building Blocks
- Kokkos: A C++ Programming Model for Writing Performance Portable Applications on HPC platforms
- MPICH: High-Performance Portable MPI
- MPL: A message passing library
- OmpSs: A task based programming model
- OpenMP: Multi-platform Shared-memory Parallel Programming in C/C++ and Fortran
- OpenMPI: A High Performance Message Passing Library
- RaftLib: A C++ Library for Enabling Stream and Dataflow Parallel Computation
- STAPL: Standard Template Adaptive Parallel Programming Library in C++
- STLab: High-level Constructs for Implementing Multicore Algorithms with Minimized Contention
- Transwarp: A Header-only C++ Library for Task Concurrency
- UPC++: A C++ library that supports Partitioned Global Address Space (PGAS) programming
- Workflow: C++ Parallel Computing and Asynchronous Networking Engine
Concurrent Data Structures
- Boost.Lockfree: Thread-safe and Lock-free Containers
- ConcurrentQueue: A Fast Multi-producer Multi-consumer Lock-free Concurrent Queue in C++
- libcds: A C++ library of Concurrent Data Structures
- Parallel-Hashmap: A Header-only Very Fast and Memory-friendly Hash Map
- ReaderWriterQueue: A Fast Single-producer Single-consumer Lock-free Queue in C++
- xenium: A C++ library Providing Various Concurrent Data Structures and Reclamation Schemes
Coroutine and Fiber
- Boost.Fiber: A Framework for Userland-threads Programming and Scheduling
- cppcoro: A Library for C++ Coroutines Abstractions for the Coroutines TS
- Fiber Tasking Lib: A Library for Enabling Task-based Multi-threading using Fibers
- coro-async: A lite C++ coroutine TS based networking library
Presentations
Generic Parallel Computing Topics
- Concurrency in C++20 and Beyond - A. Williams
- Is Parallel Programming still Hard? - P. McKenney, M. Michael, and M. Wong at CppCon 2017
- The Speed of Concurrency: Is Lock-free Faster? - Fedor G Pikus in CppCon 2016
Scheduling in Parallel Processing
- Expressing Parallelism in C++ with Threading Building Blocks - Mike Voss at Intel Webinar 2018
- A Work-stealing Runtime for Rust - Aaron Todd in Air Mozilla 2017
Memory Model
- C++11/14/17 atomics and memory model: Before the story consumes you - Michael Wong in CppCon 2015
- The C++ Memory Model - Valentin Ziegler at C++ Meeting 2014
Learning Resources
Books
- C++ Concurrency in Action: Practical Multithreading - Anthony Williams 2012
- The Art of Multiprocessor Programming - Maurice Herlihy 2012
- Parallel Computing: Theory and Practice - Umut A. Acar 2016
Tutorials
- Parallel Computing Training Tutorials - Lawrence Livermore National Laboratory
Position Papers
- The Landscape of Parallel Computing Research: A View from Berkeley
- Extreme Heterogeneity 2018: Productive Computational Science in the Era of Extreme Heterogeneity
Experimental Papers
Courses
- CS6290 High-performance Computer Architecture - Milos Prvulovic and Catherine Gamboa at George Tech
Datasets
Links
Blogs
- 1024 Cores - Dmitry Vyukov
- Michael Wong's Standard on Parallelism and Programming Languages - Michael Wong
- Preshing on Programming - Jeff Preshing
- Sutter's Mill - Herb Sutter
- The Black Art of Concurrency - Internal Pointers
Journals
- IEEE Transactions on Parallel and Distributed Systems (TPDS)
- Journal of Parallel and Distributed Computing
Conferences
- ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming (PPoPP)
- ACM Symposium on Parallel Algorithms and Architectures (SPAA)
- ACM/IEEE International Conference for High-performance Computing, Networking, Storage, and Analysis (SC)
- HPC Asia
- International Conference on Parallel Processing (ICPP)
- International Conference on Supercomputing
- IEEE International Parallel and Distributed Processing Symposium (IPDPS)
- International Symposium on High-Performance Parallel and Distributed Computing
- ISC High Performance