|
| 1 | +# Awesome Parallel Computing Resources <img align="right" width="20%" src="parallel-computing.jpg"> |
| 2 | + |
| 3 | +A curated list of awesome parallel computing resources. |
| 4 | +Please feel free to update this page through [submitting pull requests][GitHub pull requests] or |
| 5 | +[emailing me][email me]. |
| 6 | + |
| 7 | +## Table of Contents |
| 8 | + |
| 9 | + - [Software](#software) |
| 10 | + - [Presentations](#presentations) |
| 11 | + - [Learning Resources](#learning-resources) |
| 12 | + - [Datasets](#datasets) |
| 13 | + - [Links](#links) |
| 14 | + |
| 15 | +All the lists in this page are either in alphabetical order or chronological order. |
| 16 | + |
| 17 | +## Software |
| 18 | + |
| 19 | +#### Programming Library |
| 20 | +- [CAF: An Open Source Implementation of the Actor Model in C++](https://github.com/actor-framework/actor-framework) |
| 21 | +- [Chapel: A Programming Language for Productive Parallel Computing on Large-scale Systems](https://chapel-lang.org/) |
| 22 | +- [Cilk Plus: C/C++ Extension for Data and Task Parallelism](https://www.cilkplus.org/) |
| 23 | +- [Cpp-Taskflow: A Modern C++ Parallel Task Programming Library](https://github.com/cpp-taskflow/cpp-taskflow) |
| 24 | +- [FastFlow: High-performance Parallel Patterns in C++](https://github.com/fastflow/fastflow) |
| 25 | +- [Galois: A C++ Library to Ease Parallel Programming with Irregular Parallelism](https://github.com/IntelligentSoftwareSystems/Galois) |
| 26 | +- [HPX: A C++ Standard Library for Concurrency and Parallelism](https://github.com/STEllAR-GROUP/hpx) |
| 27 | +- [Intel TBB: Threading Building Blocks](https://www.threadingbuildingblocks.org/) |
| 28 | +- [Kokkos: A C++ Programming Model for Writing Performance Portable Applications on HPC platforms](https://github.com/kokkos/kokkos) |
| 29 | +- [OpenMP: Multi-platform Shared-memory Parallel Programming in C/C++ and Fortran](https://www.openmp.org/) |
| 30 | +- [RaftLib: A C++ Library for Enabling Stream and Dataflow Parallel Computation](https://github.com/RaftLib/RaftLib) |
| 31 | +- [STAPL: Standard Template Adaptive Parallel Programming Library in C++](https://parasol.tamu.edu/stapl/) |
| 32 | +- [STLab: High-level Constructs for Implementing Multicore Algorithms with Minimized Contention](http://stlab.cc/libraries/concurrency/) |
| 33 | +- [Transwarp: A Header-only C++ Library for Task Concurrency](https://github.com/bloomen/transwarp) |
| 34 | + |
| 35 | + |
| 36 | +#### Concurrent Data Structures |
| 37 | + |
| 38 | +- [Boost.Lockfree: Thread-safe and Lock-free Containers](https://github.com/boostorg/lockfree) |
| 39 | +- [ConcurrentQueue: A Fast Multi-producer Multi-consumer Lock-free Concurrent Queue in C++](https://github.com/cameron314/concurrentqueue) |
| 40 | +- [libcds: A C++ library of Concurrent Data Structures](https://github.com/khizmax/libcds) |
| 41 | +- [Parallel-Hashmap: A Header-only Very Fast and Memory-friendly Hash Map](https://github.com/greg7mdp/parallel-hashmap) |
| 42 | +- [ReaderWriterQueue: A Fast Single-producer Single-consumer Lock-free Queue in C++](https://github.com/cameron314/readerwriterqueue) |
| 43 | +- [xenium: A C++ library Providing Various Concurrent Data Structures and Reclamation Schemes](https://github.com/mpoeter/xenium) |
| 44 | + |
| 45 | +#### Coroutine and Fiber |
| 46 | + |
| 47 | +- [Boost.Fiber: A Framework for Userland-threads Programming and Scheduling](https://github.com/boostorg/fiber) |
| 48 | +- [cppcoro: A Library for C++ Coroutines Abstractions for the Coroutines TS](https://github.com/lewissbaker/cppcoro) |
| 49 | +- [Fiber Tasking Lib: A Library for Enabling Task-based Multi-threading using Fibers](https://github.com/RichieSams/FiberTaskingLib) |
| 50 | +- [coro-async: A lite C++ coroutine TS based networking library](https://github.com/arun11299/coro-async) |
| 51 | + |
| 52 | + |
| 53 | +## Presentations |
| 54 | + |
| 55 | +#### Generic Parallel Computing Topics |
| 56 | + |
| 57 | +- [Is Parallel Programming still Hard?](https://www.youtube.com/watch?v=YM8Xy6oKVQg) - P. McKenney, M. Michael, and M. Wong at CppCon 2017 |
| 58 | +- [The Speed of Concurrency: Is Lock-free Faster?](https://www.youtube.com/watch?v=9hJkWwHDDxs) - Fedor G Pikus in CppCon 2016 |
| 59 | + |
| 60 | +#### Scheduling in Parallel Processing |
| 61 | + |
| 62 | +- [Expressing Parallelism in C++ with Threading Building Blocks](https://www.youtube.com/watch?v=9Otq_fcUnPE) - Mike Voss at Intel Webinar 2018 |
| 63 | +- [A Work-stealing Runtime for Rust](https://www.youtube.com/watch?v=4DQakkJ8XLI) - Aaron Todd in Air Mozilla 2017 |
| 64 | + |
| 65 | +#### Memory Model |
| 66 | + |
| 67 | +- [C++11/14/17 atomics and memory model: Before the story consumes you](https://www.youtube.com/watch?v=DS2m7T6NKZQ) - Michael Wong in CppCon 2015 |
| 68 | +- [The C++ Memory Model](https://www.youtube.com/watch?v=gpsz8sc6mNU) - Valentin Ziegler at C++ Meeting 2014 |
| 69 | + |
| 70 | +## Learning Resources |
| 71 | + |
| 72 | +#### Books |
| 73 | + |
| 74 | +- [C++ Concurrency in Action: Practical Multithreading](https://www.manning.com/books/c-plus-plus-concurrency-in-action) - Anthony Williams 2012 |
| 75 | +- [The Art of Multiprocessor Programming](https://www.amazon.com/Art-Multiprocessor-Programming-Revised-Reprint/dp/0123973376/ref=sr_1_1?ie=UTF8&qid=1438003865&sr=8-1&keywords=maurice+herlihy) - Maurice Herlihy 2012 |
| 76 | +- [Parallel Computing: Theory and Practice](http://www.cs.cmu.edu/afs/cs/academic/class/15210-f15/www/tapp.html#ch:work-stealing) - Umut A. Acar 2016 |
| 77 | + |
| 78 | +#### Tutorials |
| 79 | + |
| 80 | +- [Parallel Computing Training Tutorials](https://hpc.llnl.gov/training/tutorials) - Lawrence Livermore National Laboratory |
| 81 | + |
| 82 | +#### Research Papers |
| 83 | + |
| 84 | +- [The Landscape of Parallel Computing Research: A View from Berkeley](https://www2.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-183.pdf) |
| 85 | + |
| 86 | +#### Courses |
| 87 | + |
| 88 | +- [CS6290 High-performance Computer Architecture](https://www.udacity.com/course/high-performance-computer-architecture--ud007) - Milos Prvulovic and Catherine Gamboa at George Tech |
| 89 | + |
| 90 | + |
| 91 | +## Datasets |
| 92 | + |
| 93 | +- [HPEC Graph Challenge](https://graphchallenge.mit.edu/) |
| 94 | +- [PARRSEC Benchmark Suite for the Analysis of Multithreaded Programs](https://parsec.cs.princeton.edu/) |
| 95 | + |
| 96 | + |
| 97 | +## Links |
| 98 | + |
| 99 | +#### Blogs |
| 100 | + - [1024 Cores](http://www.1024cores.net/) - Dmitry Vyukov |
| 101 | + - [Michael Wong's Standard on Parallelism and Programming Languages](https://wongmichael.com/about/) - Michael Wong |
| 102 | + - [Preshing on Programming](https://preshing.com/) - Jeff Preshing |
| 103 | + - [Sutter's Mill](https://herbsutter.com/) - Herb Sutter |
| 104 | + |
| 105 | +#### Journals |
| 106 | + - [IEEE Transactions on Parallel and Distributed Systems (TPDS)](https://www.computer.org/csdl/journal/td) |
| 107 | + - [Journal of Parallel and Distributed Computing](https://www.journals.elsevier.com/journal-of-parallel-and-distributed-computing) |
| 108 | + |
| 109 | +#### Conferences |
| 110 | + |
| 111 | + - [ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming (PPoPP)](https://ppopp19.sigplan.org/home) |
| 112 | + - [ACM Symposium on Parallel Algorithms and Architectures (SPAA)](https://spaa.acm.org/) |
| 113 | + - [ACM/IEEE International Conference for High-performance Computing, Networking, Storage, and Analysis (SC)](https://sc19.supercomputing.org/) |
| 114 | + - [IEEE International Parallel and Distributed Processing Symposium (IPDPS)](http://www.ipdps.org/) |
| 115 | + - [International Conference on Parallel Processing (ICPP)](https://www.hpcs.cs.tsukuba.ac.jp/icpp2019/) |
| 116 | + |
| 117 | + |
| 118 | +* * * |
| 119 | + |
| 120 | +[GitHub pull requests]: https://github.com/cpp-taskflow/cpp-taskflow/pulls |
| 121 | +[email me]: mailto:twh760812@gmail.com |
| 122 | + |
0 commit comments